데이터엔지니어 분야에서 일을 하다 보니 Streams이라는 단어를 보면 항상 눈길이 간다.
실시간 프로세싱, 파이프라인 구축에 Streams은 자주 등장하는 개념이기때문이다.
DynamoDB에서 Strems 개념이 있어서 간단히 살펴봤다.
테이블의 데이터(item)가 create/update/delete 됐을때 발생하는 이벤트이다.
in near-real time (거의 실시간) 으로 이벤트 발생 순서대로(order) 발생한다고 한다.
각각의 Streams 데이터에는 테이블 정보, 이벤트 시간.. 등 메타데이터들이 포함되어 있고 24시간동안의 retention을 가지게 된다.
공식 문서에서는 아래와 같은 아키텍처를 소개해줬다.

실제 DynamoDB Streams을 Kinesis Data Stream으로 보내거나 위의 아키텍처처럼 AWS Labmda에서 읽어서 처리가 가능하다.(https://docs.aws.amazon.com/ko_kr/amazondynamodb/latest/developerguide/kds.html)
실시간 처리, 구축을 위해서 별도의 큐(ex.카프카 클러스터)를 구축하고 CDC를 사용해 DB의 데이터를 메시징큐로 보내어 실시간처리를 하는 아키텍처도 그려볼 수 있겠지만, AWS에서 제공하는 DynamoDB Stream 을 사용한다면 기본적인 요구사항들은 충족시키지 않을까 생각이 들었다.
블로그를 찾다보니 실제 'DynamoDB -> DynamoDB Streams -> AWS Lambda -> AWS OpenSearch' 로 파이프라인을 구축한 블로그가 있어서 흥미로웠다. (24.08 최신글)
채널코퍼레이션의 Amazon DynamoDB와 함께한 아키텍처 현대화 여정 – 2부 | Amazon Web Services
채널코퍼레이션은 올인원 AI 메신저 ‘채널톡’을 운영하는 B2B SaaS 스타트업으로 Amazon DynamoDB의 수평 확장성, ACID 트랜잭션과 같은 특징을 활용해 빠르게 성장하는 비즈니스를 문제없이 수행하
aws.amazon.com
그리고 굉장히 과거의 글(2017)이지만 아래와 같은 아키텍처를 구축한 것을 예시도 있었다.
사실상 DynamoDB에 저장 된 데이터들을 DynamoDB Streams을 사용해 모든 데이터 분석, 실시간 처리에 대한 아키텍처를 구현해 놓은 모습이라고 생각이 든다. (S3로 배치 데이터까지 작업 가능)

정말 오픈소스를 활용했을때 대비 편하고 간편하게 실시간 파이프라인을 구축할 수 있구나라고 생각이 들었다. (재밌다 ㅎㅎㅎ)
더 다양한 클라우드 서비스를 사용해보면서 더 빠르게 비즈니스 요구사항을 만족시키는 역량도 쌓아보고 싶다.
| AWS DynamoDB 공부 (3) | 2024.08.19 |
|---|---|
| AWS Database 공부하기 (1) | 2024.08.18 |