Amazon RDS 및 Amazon Aurora와 Amazon OpenSearch Ingestion 통합하기
Amazon RDS/Aurora와 OpenSearch Ingestion 통합: 실시간 데이터 동기화
1. 배경: 관계형 DB와 검색 엔진의 데이터 동기화 문제
- 관계형 데이터베이스(RDS, Aurora)는 구조화된 데이터 저장에 강하지만, 대용량 비정형 텍스트 검색에 어려움이 있습니다.
- OpenSearch는 풍부한 검색 기능과 집계 기능을 제공하지만, 관계형 DB와의 데이터 동기화는 복잡하고 비용이 많이 드는 ETL 파이프라인을 요구합니다.
- 사용자들은 데이터 동기화 오버헤드 없이 검색 엔진의 고급 기능을 활용하기를 원합니다.
2. 솔루션: OpenSearch Ingestion을 통한 통합
- Amazon OpenSearch Service와 Amazon RDS/Aurora 간의 준실시간 데이터 동기화를 제공합니다.
- 복잡한 ETL 파이프라인을 제거하고, 데이터베이스 변경 사항을 거의 실시간으로 OpenSearch에 반영합니다.
- 작동 방식:
- 데이터 수집: S3에 내보낸 초기 데이터베이스 스냅샷을 로드하고, CDC(Change Data Capture) 스트림을 통해 변경 사항을 지속적으로 복제합니다.
- 실시간 쿼리: OpenSearch Service에서 풍부한 검색 및 집계 기능을 활용합니다.
3. 통합 구성 및 작동 방식
- 소스 데이터베이스 구성: Aurora MySQL 및 PostgreSQL, RDS MySQL 및 PostgreSQL의 로깅 설정을 구성해야 합니다 (향상된 바이너리 로그 또는 논리적 복제 활성화).
- 매핑: OpenSearch Ingestion 파이프라인은 기본적으로 동적 매핑을 사용하여 데이터베이스 타입을 OpenSearch 필드 타입으로 자동 변환합니다. 필요시 인덱스 템플릿으로 사용자 지정 가능합니다.
- 데이터 관계 처리: OpenSearch Ingestion은 여러 관련 테이블의 정보를 OpenSearch의 단일 검색 가능 문서로 결합하는 뷰를 생성하여, 정규화된 데이터를 검색에 최적화된 형태로 변환합니다.
- 파이프라인 설정: OpenSearch Ingestion 시각적 편집기를 사용하여 소스 데이터베이스와 복제할 테이블을 지정합니다. IAM 역할 설정이 필요합니다.
- 초기 로드 및 CDC: S3 스냅샷 로드를 통한 초기 인덱스 생성 후, binlog(MySQL) 또는 WAL(PostgreSQL)을 사용하여 변경 사항을 지속적으로 캡처하고 OpenSearch 인덱스를 업데이트합니다.
4. 준실시간 데이터 동기화 시연 및 모니터링
- 데이터베이스 변경(예: 급여 업데이트)이 OpenSearch 인덱스에 거의 실시간으로 반영되는 것을 확인할 수 있습니다.
- 모니터링: CloudWatch 메트릭과 OpenSearch Ingestion 대시보드를 통해 파이프라인 성능 및 데이터 동기화를 추적합니다.
5. 제한 사항 및 결론
- 제한 사항: 동일 리전/계정 배포 필요, 기본 키 필수, DDL 문 미지원.
- 결론: Amazon Aurora/RDS와 Amazon OpenSearch Service 통합은 OpenSearch Ingestion을 통해 복잡한 데이터 파이프라인 없이 준실시간 데이터 동기화를 가능하게 하여, 검색 및 분석 기능 활용을 간소화합니다.