DynamoDB : (1) WHY Dynamo?

박성수·2023년 1월 14일
0

DynamoDB

목록 보기
1/1

Amazon DynamoDB

Amazon DynamoDB는 모든 규모에서 고성능 애플리케이션을 실행하도록 설계된 완전관리형의 서버리스 키-값 NoSQL 데이터베이다. 기본 제공 보안, 지속적인 백업, 자동화된 다중 리전 복제, 인 메모리 캐시 및 데이터 가져오기/내보내기 도구를 제공합니다.

이번에 데이터 파이프라인 관련 프로젝트를 진행하면서 처음으로 AWS 기반 NoSQL 데이터베이스인 DynamoDB를 접하게 되었다.

사용해봤다고 전부 내것이 됐다고 생각하는 것은 오만이기에, 왜 해당 DB를 사용하였고, 어떠한 장점이 있으며, 어떻게 동작하는지 알아보도록 정리해보려고 한다.


WHY NoSQL?

기존 데이터베이스 시장을 장악하던 관계형 데이터베이스를 이어 다양한 비관계형 데이터베이스들이 등장했다.

데이터의 크기가 커지고, 빠른 데이터의 처리가 중요해지는 시장에서 기존 관계형 데이터베이스의 종속성의 한계가 드러나면서, 이를 해결하기 위한 방법들로 비관계형 (No-SQL) 데이터베이스가 제시되고 있다.

엔지니어의 관점에서 다양한 DB 선택의 자유성은 좋은 일이겠지만, 한편으로는 어떠한 데이터베이스를 선택하느냐는 중요한 선택의 책임을 갖는 만큼 다양한 애플리케이션의 특성과 아키텍처에 따라 올바른 설계를 할 능력을 갖추어야 한다는 것을 의미할 것이다.

프로젝트에서의 DB 선택

이번 프로젝트에서는 관계형 데이터베이스 뿐만 아니라 비관계형 데이터 베이스도 사용하게 되었다. 나는 다음과 같은 이유로 비관계형 데이터베이스를 사용하게 되었다.

일단 저장하자

프로젝트에서 아티스트의 대표 트랙을 불러오는 API를 보면 계층구조가 상당히 복잡하다.

하나의 아티스트에 대해 몇개의 트랙 정보가 검색될 지 몰랐고, 최대한 많은 트랙 정보를 담고 싶었다.

이러한 면을 고려했을 때, 데이터를 일관성 있는 Structure로 변환해서 저장하기 보다, JSON 형태의 응답 Response를 그대로 저장하는 것이 더 처리 속도면에서 효율적이라고 생각했다.

Join 피하기

트랙 정보를 불러올 때 arist_id를 키 파라미터로 사용하게 된다. 이때 Partion Key를 artist_id, Sort Key를 track_id로 설정하면, 기존의 RDBMS에서는 비용이 큰 Join 연산이 필요로 하는 작업을 쉽고 빠르게 처리할 수 있을 것 같다고 생각했다.


WHY DynamoDB?

Fully Managed Service

DynamoDB는 AWS에서 제공하는 완전 관리형 서비스 중 하나이다. 그말은 즉슨
'다 알아서 해준다는' 뜻이다.

기본적인 설정 세팅 외에 별도의 작업 없이 백업, 하드웨어 할당, 클러스터링등 가용성에 대한 부분을 보장 받을 수 있다.

'AWS'니까 !

다양한 AWS 서비스를 경험해 보고 싶었다. 또한 람다, S3와 같은 다른 AWS 서비스와 연동면에서도 편리하다.


다음 글에서는 DynamoDB의 개념에 대해 알아보자

profile
개발자를 꿈꾸는

0개의 댓글