본문 바로가기

Knowledge/Software Design

(3)
도메인(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에도 단점은 존..
TDD (Test Driven Development) 오늘날 소프트웨어는 비행기, 철도, 자동차등 인명피해로 이어질만큼 다양한 곳에서 쓰이며 그만큼오류가 적은 고품질의 소프트웨어를 만들어내야 한다. 현재 좋은 소프트웨어를 개발하기 위한 개발방법들은 많이 존재하지만, 오늘은 그 중에서테스트와 개발을 같이 진행하여 개발 초기의 오류를 발견하고, 수정하는 개발론을 알아보고자한다. TDDTDD란 Test Driven Development의 줄임말로 테스트 주도 개발이라 한다.TDD는 또한 매우 짧은 사이클을 반복하는 소프트웨어 개발 프로세스 중 하나이다. TDD는 먼저 테스트 케이스를 작성하고 실제코드를 개발하여 리팩토링하므로 Test First Development라고도 한다. TDD의 장점작업과 동시에 테스트를 진행함으로써 실시간으로 오류상황을 파악하여 시스템..