Skip to content

Latest commit

 

History

History
56 lines (40 loc) · 4.58 KB

왜-클라우드로-DB-관리-해야하는가.md

File metadata and controls

56 lines (40 loc) · 4.58 KB

왜 클라우드로 DB 관리 해야하는가?

방식 1: 로컬 Docker 컨테이너에서 DB 운영 및 .sql 덤프를 주고받으며 데이터 최신화 관리

장점:

  • 독립적 환경: 각 팀원이 자신의 로컬 환경에서 데이터베이스를 실행할 수 있습니다.
  • 비용 절감: 클라우드 서비스 비용 없이 로컬에서 데이터베이스를 운영할 수 있습니다.
  • 데이터베이스 초기화 관리 가능: 특정 시점의 데이터베이스 상태를 덤프 파일로 쉽게 복원할 수 있습니다.

단점:

  • 데이터 동기화 어려움: 각 팀원이 변경한 데이터가 즉시 반영되지 않기 때문에, 덤프 파일을 계속 공유하고 복원해야 합니다.
  • 버전 불일치 위험: 데이터가 자주 갱신되거나 팀원이 중간에 덤프 파일을 공유하지 않으면 팀원 간의 데이터 불일치가 발생할 수 있습니다.
  • 시간 소모: 변경 사항을 반영하기 위해 수동으로 덤프 파일을 생성하고 주고받아야 하므로, 데이터 관리에 시간이 소모될 수 있습니다.
  • 테스트 및 재현 어려움: 실시간으로 데이터가 일관되지 않기 때문에 버그나 기능을 테스트할 때 모든 팀원이 동일한 데이터를 기준으로 디버깅하기 어렵습니다.

적합한 상황:

  • 소규모 팀이나 데이터가 빈번하게 변경되지 않는 초기 개발 단계.
  • 데이터베이스 스키마나 구조 변경이 거의 없는 상황.

방식 2: AWS RDS 등 클라우드 데이터베이스와 Docker-Compose/Kubernetes로 연동

장점:

  • 실시간 데이터 동기화: 모든 팀원이 항상 최신 데이터에 접근하므로 데이터베이스 업데이트가 실시간으로 반영됩니다.
  • 데이터 일관성 보장: 데이터베이스 구조나 데이터 자체가 클라우드에 중앙 관리되기 때문에 모든 팀원이 동일한 상태로 데이터를 공유할 수 있습니다.
  • 자동 백업 및 복구 기능: AWS RDS는 자동 백업, 복구, 모니터링 기능을 제공해 데이터 안전성을 확보할 수 있습니다.
  • 개발 및 디버깅 효율성 향상: 모든 팀원이 동일한 데이터베이스 상태를 사용하므로 테스트와 디버깅을 일관성 있게 진행할 수 있습니다.
  • 간편한 확장성: 프로젝트가 확장되더라도 데이터베이스의 성능 및 용량을 클라우드에서 쉽게 조정할 수 있습니다.

단점:

  • 비용 발생: 클라우드 데이터베이스를 사용하기 때문에 운영 비용이 발생할 수 있습니다.
  • 네트워크 의존성: 인터넷 연결이 필수이므로, 네트워크 문제로 접근이 어려워질 가능성이 있습니다.
  • 접근 제어 필요: 데이터 보안을 위해 접근 권한 관리와 방화벽 설정이 필요합니다.

적합한 상황:

  • 팀원 간 실시간 데이터 공유가 필요하거나, 데이터 구조와 내용이 자주 변경되는 협업 환경.
  • 데이터 일관성과 실시간 데이터 갱신이 중요한 중·후반 개발 단계.

결론: 두 번째 방식이 더 나은 이유

  1. 실시간 데이터 일관성 보장:

    • 모든 팀원이 같은 데이터베이스를 사용하기 때문에 항상 최신 데이터를 기준으로 작업할 수 있습니다. 이는 기능 개발과 디버깅, 테스트를 더욱 효율적으로 만들어 줍니다.
  2. 업무 부담 경감:

    • 덤프 파일을 주고받거나 수동으로 데이터베이스를 복원할 필요 없이, 클라우드 데이터베이스가 변경 사항을 자동으로 반영해 관리 업무를 최소화합니다. 이를 통해 팀원들이 오로지 개발 작업에 집중할 수 있습니다.
  3. 효율적인 문제 해결:

    • 테스트나 버그 발생 시 모든 팀원이 동일한 데이터로 디버깅할 수 있어 문제 해결이 수월합니다. 데이터가 실시간으로 일관되므로, 로컬 데이터와 비교할 필요 없이 중앙에서 바로 확인할 수 있습니다.
  4. 확장성과 안정성:

    • AWS RDS는 안정적인 데이터베이스 환경을 제공하며, 팀원의 수나 데이터 양이 증가해도 확장이 용이합니다. 한 달 반이라는 개발 기간 동안 데이터를 안정적으로 운영할 수 있어 협업 효율이 극대화됩니다.

따라서 두 번째 방식(RDS 및 Docker-Compose/Kubernetes 연동)을 사용하면 팀 전체가 개발 작업에 더 집중할 수 있고, 불필요한 데이터 동기화 작업을 줄일 수 있어 효율적인 협업이 가능합니다.