[SEO 부제목]
이 지침을 통해 Amazon DynamoDB를 Amazon OpenSearch Service와 통합하여 실시간 검색을 수행할 수 있습니다. 대부분의 애플리케이션은 Amazon OpenSearch Service와 제로 ETL 통합된 Amazon DynamoDB를 사용해야 합니다. 제로 ETL 통합과 맞지 않는 요구 사항이 있는 애플리케이션을 위해, 이 지침에서는 병렬 함수를 통해 DynamoDB에서 OpenSearch Service로 데이터를 처음 로드하는 방법과 새 데이터를 OpenSearch Service로 복제하는 방법을 설명합니다. 데이터를 두 곳에 보관하면 요구 사항에 가장 적합한 데이터베이스를 대상으로 쿼리를 수행할 수 있습니다. DynamoDB는 성능과 확장성이 필요한 모든 고정 액세스 패턴을 지원하고, OpenSearch Service는 검색과 필터링의 유연성이 필요한 액세스 패턴을 지원합니다.
참고: [고지 사항]
아키텍처 다이어그램
[아키텍처 다이어그램 설명]
초기 로드
1단계
기존 데이터를 처리하기 위해 AWS Lambda 함수를 간접적으로 호출하여 Amazon DynamoDB 테이블을 설명하고 반환된 항목 수를 기반으로 테이블을 여러 세그먼트로 분할합니다. 함수는 각 세그먼트 번호마다 하나의 메시지를 Amazon Simple Queue Service(Amazon SQS) 대기열에 씁니다.
2단계
Amazon SQS가 Lambda의 이벤트 소스 역할을 합니다. Lambda는 대기열에 있는 메시지에서 함수를 간접적으로 호출하고 DynamoDB 테이블의 세그먼트를 병렬로 처리합니다.
3단계
Lambda 함수는 병렬 스캔을 사용하여 Amazon SQS에서 소스 이벤트에 나열된 DynamoDB 테이블의 세그먼트를 읽습니다.
4단계
그런 다음 함수는 bulk-create 작업을 통해 DynamoDB에서 검색한 데이터를 일괄적으로 Amazon OpenSearch Service에 씁니다.
스트리밍 변경 사항
5단계
DynamoDB에서 항목을 삽입하거나 업데이트하여 DynamoDB 스트림에 의한 캡처를 간접적으로 호출합니다.
6단계
DynamoDB 스트림은 DynamoDB에서 캡처한 항목 수준 수정 사항을 Lambda 스트리밍 업데이트 함수에 보냅니다.
7단계
Lambda 함수는 대량 인덱스 작업을 통해 해당 데이터를 OpenSearch Service에 일괄적으로 씁니다. Amazon CloudWatch에서 SearchableDocuments 지표로 수집된 문서를 추적합니다.
시작하기
Well-Architected 원칙
AWS Well-Architected Framework는 클라우드에서 시스템을 구축하는 동안 사용자가 내리는 의사 결정의 장단점을 이해하는 데 도움이 됩니다. 이 프레임워크의 6가지 원칙을 통해 안정적이고 안전하며 효과적이고 비용 효율적이며 지속 가능한 시스템을 설계 및 운영하기 위한 아키텍처 모범 사례를 배울 수 있습니다. AWS Management Console에서 추가 요금 없이 사용할 수 있는 AWS Well-Architected Tool을 사용하면 각 원칙에 대한 여러 질문에 답하여 이러한 모범 사례와 비교하며 워크로드를 검토할 수 있습니다.
위의 아키텍처 다이어그램은 Well-Architected 모범 사례를 고려하여 생성된 솔루션의 예시입니다. Well-Architected를 완전히 충족하려면 가능한 많은 Well-Architected 모범 사례를 따라야 합니다.
-
운영 우수성
AWS Cloud Development Kit(AWS CDK)는 솔루션의 인프라를 코드로 정의하여 일관된 배포를 달성하는 데 도움이 됩니다. Lambda는 작업을 각각 다른 애플리케이션 기능을 담당하는 더 작은 작업 단위로 나눕니다. 이러한 단일 태스크 기능은 인적 오류를 줄이고 실패 시 쉽게 되돌릴 수 있는 작은 점진적 변경을 지원합니다.
-
보안
해당하는 경우, 이 지침은 퍼블릭 네트워크가 아닌 프라이빗 Amazon Virtual Private Cloud(Amazon VPC) 네트워크에서 서비스를 시작합니다. Amazon VPC를 통한 프라이빗 네트워킹은 데이터 액세스 방식을 제어할 수 있도록 함으로써 모든 계층에서 보안을 지원합니다. 또한 단일 목적의 최소 권한 AWS Identity and Access Management(IAM) 정책을 사용하면 권한 변경이 예상치 못한 광범위한 결과를 초래하는 것을 방지하고 사용자가 민감한 데이터를 잘못 처리할 위험을 줄일 수 있습니다. AWS Secrets Manager는 관리자 암호를 생성하고 안전하게 저장하여 사용자가 노출 위험이 있는 코드나 환경 변수에 자격 증명을 저장하지 못하도록 합니다.
-
신뢰성
Amazon SQS는 가져오기의 일부가 실패할 경우 자동 재시도 메커니즘을 제공하므로 장애에서 신속하게 복구할 수 있습니다. 기록 시스템인 DynamoDB는 연속 백업에 시점 복구를 사용하므로 지난 35일 이내의 어떤 시점으로도 복구할 수 있습니다. OpenSearch Service는 초기 데이터 로드 시 ‘create’ 작업을 사용하여 이전 데이터가 새 데이터를 덮어쓰지 못하도록 함으로써 두 데이터베이스 간의 드리프트를 방지하는 데 도움이 됩니다. OpenSearch Service는 단일 노드 클러스터를 사용하도록 설정되어 있지만 이를 다중 가용 영역 클러스터로 변경하여 프로덕션 환경에서 가용성을 유지할 수 있습니다.
-
성능 효율성
Lambda를 사용하면 워크로드를 병렬화할 수 있습니다. DynamoDB에서 읽은 항목은 여러 Lambda 함수 간접 호출에 분할된 세분화된 병렬 스캔을 거칩니다. 이 병렬화를 통해 단일 스레드가 관리할 수 있는 것보다 훨씬 높은 처리량을 얻을 수 있습니다.
-
비용 최적화
Lambda는 DynamoDB 항목을 개별 GetItem 요청으로 읽지 않고 일괄적으로 함께 읽습니다. 따라서 이 지침은 더 적은 읽기 용량 단위를 사용합니다. 배치 사용은 연결 초기화 같은 태스크에 소비되는 작업량을 줄임으로써 컴퓨팅 시간과 Lambda 간접 호출 수를 줄여 컴퓨팅 비용을 낮춥니다. 또한 OpenSearch Service 배치 작업은 효율적이므로 컴퓨팅 리소스의 전체 비용을 줄일 수 있습니다.
-
지속 가능성
Lambda는 데이터를 OpenSearch Service로 이동해야 하는 경우에만 함수를 간접적으로 호출하며 유휴 상태에서는 실행되지 않습니다. 이를 통해 컴퓨팅 리소스의 활용도를 극대화할 수 있습니다. 또한 DynamoDB는 서버리스 관리형 서비스로서 비효율성을 줄이고 워크로드에서 소비하는 총 전력을 줄이는 데 도움이 됩니다.
관련 콘텐츠
Amazon DynamoDB와 Amazon OpenSearch Service 제로 ETL 통합 정식 출시
고지 사항
샘플 코드, 소프트웨어 라이브러리, 명령줄 도구, 개념 증명, 템플릿 또는 기타 관련 기술(AWS 직원을 통해 제공되는 상기 항목 포함)은 AWS 이용 계약 또는 귀하와 AWS 간의 서면 계약(둘 중 해당되는 것)에 따라 AWS 콘텐츠로 제공됩니다. 이 AWS 콘텐츠를 프로덕션 계정, 프로덕션 또는 기타 중요한 데이터에 사용해서는 안 됩니다. 귀하는 특정 품질 제어 방식 및 표준에 따라 프로덕션급 사용에 적절하게 샘플 코드와 같은 AWS 콘텐츠를 테스트, 보호 및 최적화할 책임이 있습니다. AWS 콘텐츠를 배포하면 Amazon EC2 인스턴스를 실행하거나 Amazon S3 스토리지를 사용할 때와 같이 요금이 부과되는 AWS 리소스를 생성하거나 사용하는 것에 대한 AWS 요금이 발생할 수 있습니다.
본 지침에 서드 파티 서비스 또는 조직이 언급되어 있다고 해서 Amazon 또는 AWS와 서드 파티 간의 보증, 후원 또는 제휴를 의미하지는 않습니다. AWS의 지침을 기술적 시작점으로 사용할 수 있으며 아키텍처를 배포할 때 서드 파티 서비스와의 통합을 사용자 지정할 수 있습니다.