사이드 프로젝트에서 사용할 DB 골라보기

이번 사이드 프로젝트를 진행하면서 프로젝트 요구사항에 맞는 데이터베이스(DB)를 선택하는 과정에 대해 작성해보고자 한다.

프로젝트의 데이터 구조 분석

사이드 프로젝트의 데이터 구조는 정규화가 필요했다. 특히 정확한 데이터를 제공하는 것이 중요하기 때문에 데이터의 무결성과 일관성을 보장하는 것이 중요했다. 정규화는 데이터의 중복을 최소화하고 데이터 간의 관계를 체계적으로 관리할 수 있어야 하기에 RDBMS를 사용하는 것이 적합하다고 판단했다.

RDBMS는 다음과 같은 장점 때문에 선택했다.

  • 데이터 간 관계를 명확히 정의할 수 있음.
  • 복잡한 쿼리와 트랜잭션 처리를 효율적으로 수행.
  • 데이터 무결성과 일관성 보장.

1. AWS RDS vs AWS Aurora

AWS는 **프리 티어(Free Tier)**를 통해 비용을 절감하면서 클라우드 서비스를 체험할 수 있다. 먼저 AWS에서 제공하는 RDBMS 옵션인 RDS와 Aurora를 조사해보았다.

AWS RDS

  • 특징
    • AWS가 관리형으로 제공하는 관계형 데이터베이스 서비스
    • MySQL, PostgreSQL, MariaDB와 같은 다양한 DB 엔진을 지원하며, 이를 AWS가 직접 관리(소프트웨어 패치, 백업, 복구 등)해줌
    • 초기 비용이 낮고, 관리가 간편해 사이드 프로젝트처럼 소규모 애플리케이션에 적합함
  • 장점
    • 상대적으로 저렴한 비용
    • 다양한 엔진을 선택할 수 있어 유연성 제공
  • 단점
    • Aurora와 비교했을 때 성능이 다소 부족할 수 있음
    • 대규모 트래픽이나 높은 처리량을 요구하는 애플리케이션에는 적합하지 않을 수 있음

AWS Aurora

  • 특징
    • AWS가 자체 개발한 고성능 RDBMS로, MySQL과 PostgreSQL과 호환됨
    • MySQL보다 최대 5배, PostgreSQL보다 최대 3배 빠른 성능을 제공함
    • 분산된 아키텍처로 고가용성과 확장성을 지원하며, 대규모 애플리케이션에 적합함
  • 장점
    • 높은 성능(읽기 작업에 특히 강점)
    • 자동 스케일링 및 고가용성으로 대규모 트래픽 처리 가능
  • 단점
    • RDS보다 비용이 더 높음
    • 성능이 필요한 경우가 아니라면 사이드 프로젝트에서는 과잉 스펙일 가능성이 있음

선택 결과: AWS RDS

현재 사이드 프로젝트는 운영 단계가 아닌 초기 개발 단계로, 비용 효율이 중요하다. 따라서 AWS를 사용한다면 저렴한 비용으로 운영이 가능한 RDS가 적합할 것 같다.

2. Oracle Cloud Autonomous Database

AWS 외에 Oracle Cloud의 Always Free Tier를 조사해보았다. Oracle은 무료로 제공되는 클라우드 리소스를 통해 데이터베이스를 운영할 수 있다는 점이 매력적이었다.

  • Autonomous Database라는 완전 관리형 DB를 제공함
    • ATP(Autonomous Transaction Processing): 트랜잭션 중심 워크로드에 적합.
    • ADW(Autonomous Data Warehouse): 데이터 분석 및 대규모 쿼리에 적합.
  • 무료로 제공되는 리소스
    • 2개의 Autonomous Database 인스턴스
    • 각 DB당 최대 20GB 스토리지
    • 자동 백업, 고가용성 및 머신러닝 기반 튜닝 지원

이러한 점에서 초기 비용 부담이 없는 소규모 프로젝트에 적합하다고 판단했다.

3. 최종 선택: AWS RDB

AWS RDS와 Oracle Cloud DB 모두 초기 단계의 소규모 프로젝트에 적합한 옵션이다. 그러나 AWS RDS를 선택한 이유는 다음과 같다.

  • AWS 생태계와의 연동성
    • AWS는 클라우드 업계에서 가장 큰 커뮤니티와 생태계를 보유하고 있어, 문제 발생 시 참고할 자료와 지원을 쉽게 찾을 수 있다.
    • 향후 EC2나 Lambda 등 다른 AWS 서비스를 사용할 가능성이 높아 통합 관리가 용이하다.
  • 유연한 확장성
    • AWS RDS는 MySQL, PostgreSQL 등 친숙한 오픈소스 DB 엔진을 지원하며, 필요에 따라 Aurora로 쉽게 전환할 수 있다.

AWS RDS를 선택한 이유

AWS RDS의 경우 프리티어로 12개월 동안 무료로 사용할 수 있다는 점에서 비용 절감의 장점이 있다. Oracle Cloud는 평생 무료임에도 AWS를 선택한 이유는 아무래도 강력한 커뮤니티와 생태계가 존재하기 때문이다.

현재는 비용 절감을 위해 AWS RDS를 선택했지만 트래픽 증가와 데이터 규모 확장에 따라 Aurora 또는 다른 고성능 옵션으로 전환을 고려할 수도 있을 것 같다.

4. DB 선택: PostgreSQL

AWS RDS는 여러 DB를 제공하지만 그 중에서도 다음과 같은 이유로 PosgreSQL을 선택했다.

  • 제5정규화 모델과의 적합성
    • 데이터 모델링은 제5정규화로 진행되었다. PostgreSQL은 정규화된 데이터 모델을 잘 지원함.
    • 복잡한 관계를 관리하고 여러 테이블 간의 JOIN을 효율적으로 처리함
  • JOIN과 트랜잭션
    • PostgreSQL은 JOIN 성능이 우수하며 복잡한 쿼리를 처리할 수 있는 기능을 제공함.
    • 트랜잭션 처리가 안정적이기 때문에 데이터 무결성을 보장할 수 있음

이번 DB 선택 과정은 프로젝트 요구사항을 분석하고 다양한 옵션을 비교하며 최적의 솔루션을 결정해보는 좋은 경험이었다. 클라우드 DB 서비스는 비용, 성능, 관리 효율성을 종합적으로 고려하여 선택하는 것이 중요하다는 점을 느낄 수 있었다!