기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
분산 데이터 관리
기존 애플리케이션에서는 모든 구성 요소가 단일 데이터베이스를 공유하는 경우가 많습니다. 반면 마이크로서비스 기반 애플리케이션의 각 구성 요소는 자체 데이터를 유지하여 독립성과 분산화를 촉진합니다. 분산 데이터 관리라고 하는 이 접근 방식은 새로운 문제를 야기합니다.
이러한 문제 중 하나는 분산 시스템의 일관성과 성능 간의 균형에서 발생합니다. 즉각적인 업데이트(즉각적인 일관성)를 주장하는 것보다 데이터 업데이트(이벤트 일관성)가 약간 지연되는 것을 수용하는 것이 더 실용적입니다.
경우에 따라 비즈니스 운영에는 여러 마이크로서비스가 함께 작동해야 합니다. 한 부분이 실패하면 완료된 일부 작업을 실행 취소해야 할 수 있습니다. Saga 패턴은 일련의 보완 작업을 조정하여 이를 관리하는 데 도움이 됩니다.
마이크로서비스가 동기화 상태를 유지하도록 돕기 위해 중앙 집중식 데이터 스토어를 사용할 수 있습니다. AWS Lambda AWS Step Functions, 및 Amazon 과 같은 도구로 관리되는 이 스토어는 데이터를 정리하고 중복 제거하는 데 도움이 될 EventBridge수 있습니다.
마이크로서비스 전반의 변경 사항을 관리하는 일반적인 접근 방식은 이벤트 소싱입니다. 애플리케이션의 모든 변경 사항은 이벤트로 기록되어 시스템 상태의 타임라인을 생성합니다. 이 접근 방식은 디버깅 및 감사에 도움이 될 뿐만 아니라 애플리케이션의 다양한 부분이 동일한 이벤트에 대응할 수 있도록 합니다.
이벤트 소싱은 더 나은 성능과 보안을 위해 데이터 수정과 데이터 쿼리를 서로 다른 모듈로 분리하는 명령 쿼리 책임 분리(CQRS) 패턴과 함께 작동하는 hand-in-hand 경우가 많습니다.
에서는 서비스 조합을 사용하여 이러한 패턴을 구현 AWS할 수 있습니다. 그림 7에서 볼 수 있듯이 Amazon Kinesis Data Streams는 중앙 이벤트 스토어 역할을 할 수 있는 반면 Amazon S3는 모든 이벤트 레코드에 대한 내구성 있는 스토리지를 제공합니다. AWS Lambda, Amazon DynamoDB , Amazon API Gateway는 이러한 이벤트를 처리하고 처리하기 위해 함께 작동합니다.
분산 시스템에서는 재시도로 인해 이벤트가 여러 번 전달될 수 있으므로 이를 처리하도록 애플리케이션을 설계하는 것이 중요합니다.