본문 바로가기
AWS

AWS Timestream 알아보기 - Architecture편

by giem 2023. 5. 10.
반응형

이번에 대규모 시계열 데이터를 처리하기 위해 AWS Timestream에 대해 조사해서 정리해 봤다.

 

이번 포스트에서는 Architecture 쪽을 보려고 한다.


Architecture

Amazon TimeStream은 대규모 시계열 데이터를 수집하고 저장하고 처리할 수 있도록 처음부터 설계되었다.

전체적인 구조는 위와 같다. 조금 더 자세히 보면 여기서 셀로 나눠지는데 그것은 뒤에 설명을 하겠다.

 

 

- Write Architecture

시계열 데이터를 작성할 때 Timestream은 테이블이나 파티션에 대한 쓰기를 메모리 저장 인스턴스로 라우팅 한다.

 

메모리 저장소는 3개의 AZ(가용영역) 데이터가 복제되어 내구성이 확보된다.

전체 AZ가 소실되더라도 바로 다른 스토리지 노드가 쿼리를 처리하기 위해 동기화되어 높은 읽기 가용성을 보장한다.

이때 쿼럼 베이스로 복제가 되기 때문에 가용성을 보장할 수 있다.

 

또한 늦게 도착하는 데이터(타임스탬프가 현재시각보다 빠른 데이터)를 위해 마그네틱 저장소에 직접 데이터 쓰기를 지원한다. 마그네틱 저장소도 위의 메모리 저장소와 같이 마그네틱 저장소도 3개의 AZ에 복제가 된다.

 

데이터가 메모리 저장소나 마그네틱 저장소 어디 저장되든지 자동으로 인덱싱 하고 파티셔닝 한다.

하나의 테이블에는 수백만 개의 파티션이 있을 수 있고 개별 파티션은 서로 직접적으로 통신하지 않고 데이터를 공유하지 않는다. 대신 테이블의 파티셔닝은 고가용성 파티션 추적 및 인덱싱 서비스를 통해 추적된다.

이렇게 시스템 장애의 영향을 최소화하고 상호 작용으로 생길 수 있는 장애의 가능성을 낮춘다.

 

- Storage Architecture

데이터가 저장되면 시간 순서뿐만 아니라 콘텍스트 속성을 기반으로도 구성된다.

이렇게 시간이 아닌 공간으로 파티셔닝 된 것은 "타일"이라고 불린다.

 

단일 파티션으로 시작해서 처리량에 따라 공간으로 분할되고 특정 크기에 도달하면 시간차원으로 분할된다.

시간차원으로 분할되면 데이터 크기가 커짐에 따라 읽기 병렬처리가 향상된다.

 

타임스트림은 인메모리 저장소와 비용 효율적인 마그네틱 저장소 이렇게 두 가지 데이터 저장소를 제공한다.

여기서 인메모리 저장소 -> 마그네틱 저장소로 보내기 위한 정책을 테이블 수준으로 구성할 수 있다.

 

처리량이 많은 데이터 쓰기는 인메모리 저장소에 저장된다.

어느 정도 시간이 지나면 비용이 싼 마그네틱 저장소로 자동으로 이동시켜 비용을 최적화시킬 수 있다.

마그네틱 저장소에도 시간 범위를 설정해서 해당 시간이 지나면 제거되도록 설정할 수 있다.

 

- Query Architecture

타임 스트림 쿼리는 시계열데이터를 위한 확장기능이 있는 SQL 문법으로 표현되어 기존에 SQL을 써본 개발자는 쉽게 따라갈 수 있다.

 

쿼리의 복잡성과 데이터 크기에 따라 쿼리 실행에 투입되는 worker 수가 결정된다.

극단적으로는 테라바이트에서 페타바이트 이상의 데이터를 실행하는 쿼리에 수천 대의 worker가 동시에 작업할 수 있다.

 

- Celluar Architecture

타임 스트림은 무한한 확장성과 99.99% 가용성을 보장하기 위해 이 아키텍처를 사용했다.

위와 같이 전체의 크기를 확장하는 게 아니라 셀이라고 하는 작은 카피들로 분할하여 한 셀의 문제가 다른 셀에 영향을 미치지 않도록 설계가 되었다.

 

위 구조에서 먼저 discovery end point로 들어오면 데이터가 포함된 셀을 식별하고 해당 셀의 엔드포인트로 요청을 전달한다.

반응형

'AWS' 카테고리의 다른 글

AWS ECS 파이썬 도커 이미지 배포 기록  (0) 2023.07.10
AWS API Gateway Cognito 권한부여자 연결  (0) 2023.02.23
AWS lambda cognito 키 획득  (0) 2023.02.22
AWS EC2 nvm, node.js 설치  (0) 2023.02.22

댓글