데이터베이스에서 MSA 고려사항

Mkim4·2024년 9월 26일
post-thumbnail

요즘 민간 기업뿐만 아니라 공공기업들도 클라우드 네이티브 아키텍처 기반의 it 인프라로의 전환을 많이 검토하고 있습니다. 클라우드 네이티브라고 하면 같이 따라나오는 개념이 MSA(Micro Service Architecture)입니다. msa 데이터베이스 관점에서 바라보고 어프로치 할 때 어떤 고려 사항들이 있는지 살펴보겠다.

MSA는 개별 it 리소스를 마이크로 서비스별로 할당해서 독립적으로 애자일한 개발을 추구하는 것인데 데이터베이스도 마이크로서비스별로 배정한다면 어떤 이슈가 있을까?

RDB 조회 시 자주 사용하는 JOIN과 데이터 정합성을 유지하려는 트랜잭션 프로세스의 관점에서 한번 살펴보자

Container vs VM

컨테이너가 경량이긴 하지만 아직 DB를 Container로 관리하기에는 stateful 하다. 일반적으로 VM으로 선택

Shared Database vs Database per Service

반드시 DBMS를 분리해야만 하는 것은 아님 데이터베이스를 공유할지 쪼갤지는 선택의 영역이다. 서비스별 DB로 분리하면 정합성 이슈가 새롭게 발생한다.
DB를 분리하게되면 JOIN이 불가하다. 정합성을 맞추기 위한 메커니즘 필요
데이터 일관성 문제를 해결하기 위한 여러 방안 존재, 그러나 새로운 복잡성 초래

Transaction Processing, JOIN 불가

MSA 분산 DB환경에서 2phase-commit이 어렵다.
DB레이어에서 끝날 일을 App레이어에서 추가로 해야함.

참고링크

profile
귀요미 개발자

0개의 댓글