kkokkio - 프로젝트/ADR(의사결정문서)

MySQL

파란배개 2025. 6. 11. 12:34

문제 상황

본 프로젝트에서 DB에 적재해야 하는 테이블은 member, keyword, post, comment 등이 있다. 다양한 뉴스 채널의 실시간 속보 데이터를 수집 및 가공하여 제공하는 본 프로젝트의 특성상 관계형 데이터베이스(RDB)와 비관계형 데이터베이스(NoSQL) 모두 고려했다.

제안

MySQL

  • S3 인스턴스 상에서 컨테이너로 구동
  • 팀원 모두에게 익숙하여 학습 및 운영 리소스 절감 기대
  • 프로젝트에서 요구되는 정합성 및 트랜잭션 처리에 적합한 구조를 제공

장단점

장점

  • 팀원들이 MySQL에 익숙하여 빠른 개발 및 유지보수가 가능함
  • 트랜잭션, JOIN, 정규화된 데이터 모델링 등 관계형 데이터베이스의 특성을 활용할 수 있음
  • 다양한 문서와 커뮤니티가 존재하여 문제 해결이 용이함
  • 컨테이너화가 용이하여 S3 환경에서도 유연하게 운영 가능함

단점

  • 수평 확장성이 제한적이며, 대규모 트래픽 처리 시 성능 튜닝이 필요할 수 있음
  • NoSQL에 비해 유연한 스키마 변경이 어렵고, 비정형 데이터를 저장하기엔 부적합함

대안

  • 대안1: MongoDB 등 NoSQL 기반 데이터베이스 사용
    • 스키마 유연성이 크고, 실시간으로 쌓이는 본 프로젝트 데이터 일부에 적합하지만 정합성과 관계 모델링에 불리함
  • 대안2: PostgreSQL
    • MySQL과 유사한 관계형 데이터베이스이지만, 팀 내 숙련도가 낮아 추가 학습 리소스가 필요함

최종 채택 및 차후 과제

  • 채택
  • Mysql 사용
  • 차후 과제
    • 데이터베이스 구축
    • 데이터 파이프 라인을 기반으로 DB에 적재할 데이터와 캐싱할 데이터 구분

 

 

'kkokkio - 프로젝트 > ADR(의사결정문서)' 카테고리의 다른 글

Flyway  (1) 2025.06.11
Swagger  (0) 2025.06.11
Spring Security + JWT  (0) 2025.06.11
Terraform 도입  (0) 2025.06.02
Doppler 도입  (0) 2025.06.02