분산 데이터 관리 - 에서 마이크로서비스 구현 AWS

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

분산 데이터 관리

기존 애플리케이션에서는 모든 구성 요소가 단일 데이터베이스를 공유하는 경우가 많습니다. 반면 마이크로서비스 기반 애플리케이션의 각 구성 요소는 자체 데이터를 유지하여 독립성과 분산화를 촉진합니다. 분산 데이터 관리라고 하는 이 접근 방식은 새로운 문제를 야기합니다.

이러한 문제 중 하나는 분산 시스템의 일관성과 성능 간의 균형에서 발생합니다. 즉각적인 업데이트(즉각적인 일관성)를 주장하는 것보다 데이터 업데이트(이벤트 일관성)가 약간 지연되는 것을 수용하는 것이 더 실용적입니다.

경우에 따라 비즈니스 운영에는 여러 마이크로서비스가 함께 작동해야 합니다. 한 부분이 실패하면 완료된 일부 작업을 실행 취소해야 할 수 있습니다. Saga 패턴은 일련의 보완 작업을 조정하여 이를 관리하는 데 도움이 됩니다.

마이크로서비스가 동기화 상태를 유지하도록 돕기 위해 중앙 집중식 데이터 스토어를 사용할 수 있습니다. AWS Lambda AWS Step Functions, 및 Amazon 과 같은 도구로 관리되는 이 스토어는 데이터를 정리하고 중복 제거하는 데 도움이 될 EventBridge수 있습니다.

Saga 실행 코디네이터

그림 6: Saga 실행 조정자

마이크로서비스 전반의 변경 사항을 관리하는 일반적인 접근 방식은 이벤트 소싱입니다. 애플리케이션의 모든 변경 사항은 이벤트로 기록되어 시스템 상태의 타임라인을 생성합니다. 이 접근 방식은 디버깅 및 감사에 도움이 될 뿐만 아니라 애플리케이션의 다양한 부분이 동일한 이벤트에 대응할 수 있도록 합니다.

이벤트 소싱은 더 나은 성능과 보안을 위해 데이터 수정과 데이터 쿼리를 서로 다른 모듈로 분리하는 명령 쿼리 책임 분리(CQRS) 패턴과 함께 작동하는 hand-in-hand 경우가 많습니다.

에서는 서비스 조합을 사용하여 이러한 패턴을 구현 AWS할 수 있습니다. 그림 7에서 볼 수 있듯이 Amazon Kinesis Data Streams는 중앙 이벤트 스토어 역할을 할 수 있는 반면 Amazon S3는 모든 이벤트 레코드에 대한 내구성 있는 스토리지를 제공합니다. AWS Lambda, Amazon DynamoDB , Amazon API Gateway는 이러한 이벤트를 처리하고 처리하기 위해 함께 작동합니다.

의 이벤트 소싱 패턴을 보여주는 다이어그램 AWS

그림 7: 의 이벤트 소싱 패턴 AWS

분산 시스템에서는 재시도로 인해 이벤트가 여러 번 전달될 수 있으므로 이를 처리하도록 애플리케이션을 설계하는 것이 중요합니다.