본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

서비스별 데이터베이스 패턴

IT위키

서비스별 데이터베이스 패턴(Database per Service)은 마이크로서비스 아키텍처에서 각 서비스가 자기 데이터를 전용 데이터베이스(또는 전용 스키마)에 두고, 다른 서비스는 그 데이터에 직접 접근하지 못하고 해당 서비스의 API 나 메시지를 통해서만 쓰게 하는 데이터 관리 패턴이다.

여러 서비스가 한 데이터베이스를 같이 쓰면 한 서비스가 테이블 구조를 바꿀 때 그 테이블을 쓰는 모든 서비스를 함께 고치고 배포해야 한다. 서비스를 따로 배포하고 따로 확장한다는 마이크로서비스의 장점이 데이터 계층에서 무너지는 것이다. 이 패턴은 서비스의 영속 데이터를 그 서비스의 구현 일부로 보고 감춘다. 한 서비스의 트랜잭션은 자기 데이터베이스만 건드린다.[1] 마이크로소프트도 두 서비스가 데이터 저장소를 공유하지 않아야 하며, 각 서비스가 자기 전용 저장소를 관리해 스키마 변경의 영향 범위를 그 서비스 안으로 한정해야 한다고 권한다.[2]

데이터베이스 서버를 서비스마다 따로 둘 필요는 없다. 관계형 데이터베이스라면 다음 가운데 고른다.[1]

  • 서비스별 전용 테이블 - 같은 스키마 안에서 테이블 소유를 나누고 접근 권한으로 막는다. 가장 약한 분리
  • 서비스별 스키마 - 서비스마다 스키마와 계정을 따로 둔다
  • 서비스별 데이터베이스 서버 - 처리량이 크거나 다른 종류의 데이터베이스가 필요할 때

서비스마다 맞는 저장소를 고를 수 있다(폴리글랏 저장). 검색 서비스는 검색 엔진을, 관계망 서비스는 그래프 데이터베이스를, 주문 서비스는 관계형 데이터베이스를 쓰는 식이다.

장점 대가
서비스 간 결합이 느슨해진다. 한 서비스의 스키마 변경이 다른 서비스에 영향을 주지 않는다 여러 서비스에 걸친 업무 트랜잭션을 하나의 ACID 트랜잭션으로 묶기 어렵다
서비스마다 알맞은 데이터베이스 종류를 고를 수 있다 여러 데이터베이스에 흩어진 데이터를 조인하는 조회가 어렵다
서비스별로 저장소를 따로 확장할 수 있다 여러 종류의 데이터베이스를 운영하는 부담이 늘어난다

대가를 메우는 패턴

편집 원본 편집
  • 여러 서비스에 걸친 쓰기 - 분산 트랜잭션(2단계 커밋) 대신 Saga 패턴을 쓴다. 각 서비스가 지역 트랜잭션을 수행하고, 중간에 실패하면 앞 단계를 되돌리는 보상 트랜잭션을 실행한다
  • 여러 서비스에 걸친 조회 - API 조합(조회 서비스나 API 게이트웨이가 여러 서비스를 불러 결과를 합침)이나 CQRS(각 서비스가 발행하는 이벤트를 구독해 조인된 읽기 전용 뷰를 따로 유지)를 쓴다[1]
  • 서비스 간 통신 - 메시지 브로커를 통한 비동기 이벤트로 다른 서비스의 변경을 전달받는다. 요청 흐름을 추적할 때는 상관관계 ID를 붙여 로그를 잇는다

공유 데이터베이스와 구별하기

편집 원본 편집
구분 서비스별 데이터베이스 공유 데이터베이스
데이터 소유 서비스마다 자기 데이터 소유 여러 서비스가 같은 테이블을 읽고 씀
다른 서비스 데이터 접근 API·메시지로만 SQL 로 직접
조인 조회 어렵다(API 조합, CQRS 필요) 쉽다
트랜잭션 서비스 내부만 ACID, 서비스 간은 Saga 하나의 ACID 트랜잭션 가능
스키마 변경 영향 그 서비스 안 모든 사용 서비스

마이크로서비스 문헌은 공유 데이터베이스를 서비스 간 결합을 만드는 안티패턴으로 본다.[1]

  1. ↑ 1.0 1.1 1.2 1.3 Chris Richardson, 「Pattern: Database per service」, Microservices.io, https://microservices.io/patterns/data/database-per-service.html, 확인일: 2026-11-04.
  2. ↑ 「Data considerations for microservices」, Azure Architecture Center, Microsoft Learn, https://learn.microsoft.com/en-us/azure/architecture/microservices/design/data-considerations, 확인일: 2026-11-04.