도커에서 DB를 사용하는게 맞을까?

양시준·2022년 3월 7일
2

TIL

목록 보기
10/21

두 개념의 충돌

도커

도커는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼이다.

도커는 도커 컨테이너의 빠른생성과 파괴를 통해 원활한 배포, 구축을 도와주는 소프트웨어다.

데이터베이스

데이터베이스는 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합이다.

데이터베이스는 말 그대로 영속된 데이터를 위해 만들어진 개념이다.

충돌

여기서 도커는 빠른 생성과 파괴, DB의 영속성이라는 개념이 서로 충돌하게 된다. 예시로 도커의 컨테이너를 삭제하면 DB의 모든 데이터가 삭제된다. 이는 DB의 영속성을 무시한다.

반대로, DB의 영속성을 위해 도커의 VOLUME을 포함한 여러 파일을 설정해야만 한다면 이 역시 도커를 사용하는 큰 이유 중 하나인 빠르고 편리하게 빌드, 배포할 수 있다는 장점이 퇴색된다.

여러 사람들의 의견

여러 사람들이 작성한 글을 읽으면서 나온 의견을 정리해 보았다.

  • 도커를 사용하여 DB를 구축하는 것이 훨씬 편리하다.
  • 복잡하고 거대한 프로젝트에 도커를 사용하면 안된다.
    • 도커에서 발생하는 에러
      • 에러 상황에서 복구, 백업과 같은 처리의 신뢰성이 떨어진다.
    • 영속성 관리가 힘들다.
  • 클라우드 플랫폼에서 지원하는 DB 서비스를 사용하는 편이 더 좋다.
    • ex ) AWS의 RDS, DynamoDB
    • 일부 DBMS를 기본적으로 지원해 준다.
    • 백업과 같은 DB에 관한 기능을 지원해 준다.
  • 영속성이 필요하지 않는 경우(테스트 환경 ...) 사용하는 것이 더 편리하다.
  • 도커는 본질적으로 DB와 적합하지 않다.

정리

개발 환경

도커는 개발 환경에서 데이터베이스를 사용하는데 적합하고 편리하다.

소규모 프로젝트

도커는 소규모 프로젝트에서 작업 중이고 단일 머신에 배포하는 경우 데이터베이스를 사용하는데 적합하다.

하지만 정기적인 백업을 위한 계획이 있는지 확인해야 할 필요가 있다.

대규모 프로젝트

대규모 프로젝트에서는 더 관리하기 쉽고 백업과 같은 여러 기능을 지원해주는 좋은 서비스가 있기 때문에 도커를 사용할 이유가 없다.

참고

profile
야크 털 깎기와 러버덕 디버깅을 좋아하는 개발자

0개의 댓글