[AWS] DynamoDB 시작하기 전에 반드시 알아야 할 것들

2023. 4. 10. 19:03개발을 파헤치다/서버 인프라

반응형

 

AWS는 백엔드 개발자가 해야하는 수 많은 일들을 줄여줬습니다. 일단 백엔드 개발을 한다고하면 웹 서버, DB 등 신경써야 할 것들이 정말 많죠. 이런 기본적인 세팅 뿐만 아니라 운영/관리, 더 나아가 서비스 규모가 점점 커질 때의 대응까지 할 수 있도록 만들어져 스타트업에게는 더할나위 없이 좋은 선택지입니다. 오늘은 AWS DynamoDB에 대해서 알아볼텐데요. 사용하기 전에 알아야 할 기본개념과 특징에 대해서 얘기해볼 예정이니 DynamoDB를 고려하고 있다면 분명 도움이 될 것입니다.

 

DynamoDB?

 

AWS에서 제공하는 고성능 NoSQL 데이터베이스입니다. NoSQL은 기존 RDBMS와는 다르게 비정형 데이터(형식이 딱히 정해지지 않은 데이터)를 저장할 수 있는 데이터베이스입니다. NoSQL 데이터베이스는 크게 4가지로 구분되는데요. 

  • Key-Value
  • Document
  • Big Table
  • Graph

DynamoDB는 서버리스 기반 Key-Value / Document 이 두가지를 지원하는 데이터베이스입니다. 

 

 

 

DynamoDB의 특징

Serverless

서버리스는 DB 서버를 따로 운영/관리 할 필요가 없다는 것을 의미합니다. 내부적인 DB 서버 인스턴스 관리는 모두 AWS측에서 전담하고 사용자는 테이블 생성이나 개발에 집중할 수 있습니다. 완전 관리형 서비스이기 때문에 운영 부담이 발생하지 않는 점이 특징이라고 할 수 있습니다.

비용적인 측면에서도 잘 알고 사용하면 유리하게 서비스 개발을 할 수 있습니다.
우선 두가지 요금 플랜을 제공하는데요. 온디맨드와 프로비저닝이 바로 그것이죠.

온디맨드의 경우 DB 요청(읽기 및 쓰기 등)의 처리양에 따라 요금을 지불하게 됩니다. 사용한 만큼만 지불하기 때문에 합리적일 수 있지만 처리량이 너무 많아지는 경우 생각보다 많이 과금될 수 있으므로 주의가 필요합니다.

프로비저닝 모드는 애초에 필요한 DB 처리량(읽기 및 쓰기 수)을 지정해줘야합니다. 그에 맞춰서 요금을 내는 것이지요.
이 모드같은 경우 트래픽이 어느정도 예측 가능한 경우에 사용이 가능합니다.

예를 들어, 서비스 개발 초기에는 트래픽 예측이 불가능하기 때문에 온디맨드 모드로 유연하게 대처할 수 있습니다. 추후에 서비스가 안정되고나서 어느정도 트래픽이 예측 가능하다면 비용절감을 위해 프로비저닝 모드로 변경할 수도 있겠죠.

Query언어 제공

기본적으로 NoSQL에서는 CRUD(Create, Read, Update, Delete)를 위한 인터페이스인 SQL을 지원하지 않습니다. 하지만 AWS Dynamo DB에서는 PartiQL이란 SQL 호환 쿼리를 제공합니다. 



위에서 보는 것처럼 기존 RDBMS에서 사용한 것처럼 쿼리문을 활용해 데이터 조회를 할 수 있습니다.

확장성

DynamoDB는 Auto Sharding과 Load Balancing을 지원합니다. 따라서 서비스의 데이터 규모가 커졌을 때에도 대응할 수 있습니다. Sharding은 한 테이블의 데이터를 여러 서버에 나누어 저장하는 것을 의미합니다. 그렇기 때문에 데이터의 규모가 커져도 저장하는 서버를 늘리는 Scale Out이 가능합니다. DynamoDB는 데이터 규모가 커짐에 따라 sharding이 가능하도록 설정할 수 있어 확장성이 용이합니다.


AWS 친화적

AWS 서비스답게 다양한 서비스들과 연계가 가능합니다. 인프라가 AWS 기반이라면 확실하게 이점으로 작용합니다.
기본 보안이나 권한 관리를 IAM을 통해서 할 수 있습니다. 또, 데이터를 S3에 백업할 수도 있습니다.

Transaction 지원

ACID(Atomicity, Consistency, Isolation, Durability)는 데이터베이스 내에서 작업이 이루어질 때 데이터의 안정성을 보장하기 위해 필요한 기본 원칙이라고 할 수 있습니다.
기존 RDBMS에서는 트랜잭션이라는 여러개의 작업을 하나로 묶어놓은 실행 단위를 사용할 수 있는데요.
이 트랜잭션의 특징은 일단 시작하면 묶여있는 모든 작업이 완료돼야 정상적으로 완료 처리를 할 수 있다는 것입니다.
예를 들어, user 테이블에 새로운 데이터를 넣고 user meta data 테이블에도 새로운 데이터를 넣는 것이 하나의 트랜잭션이라면 user 테이블에 데이터 입력 도중 에러가 발생하면 해당 트랜잭션은 실패로 처리되게 됩니다. 이렇게되면 데이터베이스의 상태가 변하지 않습니다.

NoSQL DB는 태생적으로 ACID를 지원하지 않는데요. DynamoDB에서는 ACID를 만족하는 트랜잭션 처리를 지원합니다.

반응형