Logo

AWS 데이터베이스 서비스 훑어보기

AWS에는 정말로 여러 종류의 데이터베이스 제품이 있어서 용도에 따라서 어떤 서비스를 써야할지 헛갈리가 쉬운데요. 이번 포스팅에서는 AWS에서 제공하는 데이터베이스 관련 서비스를 간략하게 정리해보려고 합니다.

RDS

AWS에서 데이터베이스라고 하면 아마 많은 분들이 Amazon Relational Database Service, 줄여서 Amazon RDS라는 서비스를 떠올리실텐데요. RDS는 클라우드 환경에서 마치 온 프레미스(on-premises) 환경처럼 제약없이 원하는 데이터베이스 엔진을 쓰고 싶을 때 사용할 수 있는 AWS의 대표적인 관계형 데이터베이스 서비스입니다.

관계형(relational) 데이터베이스 시장에서 Oracle Database나 MS SQL Server와 같이 전통적인 기업용 강자부터 PostgreSQL나 MySQL, MariaDB처럼 비교적 역사가 짧은 오픈소스까지 매우 다양한 엔진이 있는데요. 현재 사용하고 있는 데이터베이스 엔진을 그대로 사용할 수 있기 때문에 클라우드 인프라로 전환할 때 RDS가 비교적 마이그레이션 리스크가 적은 옵션으로 고려되는 경우가 많습니다.

RDS를 사용하면 무엇보다 AWS가 알아서 서버 자원을 프로비전(provision)해주고 운영체제 패치(patch)나 데이터 백업(backup), 모니터링을 해주기 때문에 데이터베이스 유지보수 비용을 크게 절감할 수 있습니다. 뿐만 아니라, 수평 확장(horizontal scalability)과 읽기 성능 향상 위한 Read Replica 구성이나 고 가용성(high availability)을 위해서 여러 가용 영역(Multi-AZ)에 걸쳐 master-slave를 구성도 용이하다는 장점이 있습니다.

하지만 어디까지나 관리형 서비스인 만큼 해당 데이터베이스 엔진에서 허용하는 포트 외에 다른 포트로 접속하거나 데이터베이스가 설치된 EC2 인스턴스에 SSH로 접속하는 등과 같은 저수준의 작업은 불가능하다는 제약이 있습니다.

Aurora

Aurora는 클라우드에 좀 더 최적화되어 있는 데이터베이스 엔진으로서 RDS에서 엔진으로 선택할 수 있는 옵션인데요. 기존 데이터베이스 엔진보다 20% 정도 더 비싸지만 성능이 3~5배 달하며 확장성과 가용성이 우수하여 결론적으로 더 이득이라고 알려져있습니다.

단, Aurora는 PostgreSQL 또는 MySQL과만 호환되기 때문에 기존에 다른 데이터베이스 엔진을 사용하고 계셨다면 마이그레이션이 좀 부담이 될 수 있는데요. 이종 데이터베이스 엔진간 마이그레이션도 지원하는 AWS Database Migration Service를 사용하면 어느 정도 리스크를 최소화할 수 있을 것입니다.

새롭게 구축되는 서비스에서 관계형 데이터베이스가 필요하다면 아마도 Aurora가 최적의 선택이 될 수 있을 것입니다.

ElastiCache

애플리케이션의 성능을 향상시키기 위해서 흔히 짧게 캐시(cache)라고도 퉁(?)치는 인 메모리(in-memory) 데이터베이스가 널리 사용이 되는데요. ElastiCache는 오픈 소스 인 메모리 캐시 엔진인 Redis와 Memcached 모두를 지원하는 관리형 인 메모리 캐시(cache) 서비스입니다.

ElastiCache는 일반적으로 디스크 기반의 비교적 느린 관계형 데이터베이스 앞단에서 애플리케이션 서버로부터 들어오는 부하를 줄여주는 역할을 많이 하게 되는데요. 같은 관리형 서비스인 RDS처럼 ElastiCache에서 모든 데이터베이스 유지보수 작업을 대신해주기 때문에 인 메모리 캐시가 필요하다면 매우 매력적인 옵션이 될 것입니다.

DynamoDB

DynamoDB는 AWS에서 제공하는 성능과 가용성이 매우 뛰어난 NoSQL 데이터베이스 서비스인데요. 완전 관리형(fully managed) 서버리스(serverless) 제품이기 때문에 저장된 데이터의 용량에 맞춰 알아서 무한대로 수평 확장하는 특징이 있습니다.

DynamoDB는 일반적으로 기존 관계형 데이터베이스에 저장하기 적합하지 않는 비정형화된 데이터를 키/값의 형태로 저장할 수 있으며, DAX(DynamoDB Accelerator)라는 자체 인 메모리 캐시를 활용하면 큰 노력없이 성능을 최대 10배까지 끌어올릴 수 있는 것으로 알려져있습니다.

어느 정도 규모가 예상되는 애플리케이션을 개발해야한다면 AWS의 그 어떤 데이터베이스 서비스보다도 DynamoDB를 강력하게 추천드릴 수 있겠습니다.

DocumentDB

자바스크립트 기반으로 애플리케이션을 개발할 때는 JSON 형식의 데이터를 저장하데 특화된 몽고디비(MongoDB)라는 데이터베이스가 많이 사용되는데요. AWS에서는 DocumentDB라는 완전 관리형 문서 데이터베이스 서비스를 통해서 MongoDB를 대체할 수 있습니다.

DocumentDB는 기본적으로 MongoDB와 호환이 되기 때문에 마치 MongoDB를 사용하듯이 MongoDB 클라이언트를 이용하여 접근이 가능하며, 따라서 기존 MongoDB 서버로 부터 데이터 마이그레이션도 큰 리스크없이 비교적 어렵지 않게 수행할 수 있습니다.

Neptune

소셜 네트워킹 서비스(SNS)와 같이 고도로 연결된 데이터를 다루는 애플리케이션에서는 그래프(graph) 데이터베이스를 사용하는 것이 효과적인데요. AWS에서는 Neptune이라는 관리형 서비스를 통해 그래프 데이터베이스를 클라우드에서 유지보수의 부담없이 사용할 수 있습니다.

마치면서

지금까지 AWS에서 제공하고 있는 다양한 데이터베이스 서비스에 대해서 수박 겉핥기 수준으로 살펴보았습니다. 이 밖에도 Timestream, Keyspaces, QLDB 등 더 많은 서비스가 있으니 필요하시다면 추가로 검색을 해보시면 좋을 것 같네요. 본 포스팅이 방대한 AWS에서 알맞는 서비스를 선택하시는데 조금이나마 도움이 되었으면 좋겠습니다.