본문 바로가기

MSA

도메인(Domain) 관점 모듈 분리 (With. DDD, MSA) 시스템이 점점 거대해지면서, 우리 팀 또한 공통 모듈의 저주에 빠지고 말았다. (공통 모듈의 저주? https://techblog.woowahan.com/2637/) 거대한 하나의 모듈을 분리할 필요성을 느꼈고, 그 과정에서 논의하며 정리했던 내용들을 기록해둔다. (도메인과 관련된 글이나 자료는 많았지만, 대부분 추상적이고 실효성이 있는 자료를 찾지 못했다..) 도메인은 무엇일까? 도메인이란 단어 뜻 자체는 영토, 분야, 영역, 범위 등의 의미를 가진다. 인터넷 주소의 의미로도 사용된다. 다만, MSA와 DDD에서 흔히 사용하는 도메인의 단어는 [영역]의 의미를 가진다고 볼 수 있다. Domain이라고 하면, DDD에 대한 얘기를 하려고 하는걸까? 라는 인식이 있어서 꺼려진다. 하지만, DDD 개발방법론.. 더보기
Distributed transaction (분산트랙잭션) (with. Saga pattern) 예전부터 MSA는 많이 듣고 이론으로 많이 접해봤지만, MSA가 완벽히 적용되서 운용되는 서비스를 직접 경험해보지 못했다. 실 운용 서비스에서 연관관계가 높은 서비스들을 어떻게 도메인을 분리하고 통신하고 연동하고 있을지 궁금하다. 대부분 내가 경험해봤던건 모놀리틱 서비스에서 MSA로 넘어가는 과정들이였다. 그 과정 속에서 직접적으로 와닿았던 문제는 크게 다음과 같은 2가지 문제였다. 1. 네트워크 통신 비용 - MSA가 되면 기존과 다르게, 수많이 흩어진 서비스로부터 데이터를 가져와야한다. 어떻게 풀어낼 수 있을까? CQRS? 2. 분산트랜잭션 해당 포스트에선 두번째 문제 분산트랜잭션에 대해서만 다루고, 이를 해결하기 위한 방법을 정리해본다. # 분산 트랜잭션 모든 아키텍쳐가 그렇듯 MSA에도 단점은 존.. 더보기