[TIL] 221024

✏️ Check Box

📌 정리


여태 진행한 단일모듈 어플리케이션에서는 규모가 커질수록 꼬리에 꼬리를 무는 스파게티 코드가 생기기 마련이다. 이는 코드 의존성을 끊어내어 해결할 수 있다는 것을 우아한 객체지향 영상에서 확인할 수 있었다. 또한 필요한 의존성을 추가하면서 일부분에서 사용하는 라이브러리 또한 전체적으로 공유하게 되는 문제가 있다. 그리고 DB 커넥션과 같은 공통적으로 설정하는 정보들 또한 어플리케이션 전체에서 공유하여 사용되는 문제도 있다.

따라서 해당 영상에서는 권용근님께서 특정한 기준을 세우고, 이에따라 각 모듈을 분리하여 구성함으로써 위 문제들을 해결하신다.
시스템과 무관한 독립모듈, 모든 모듈에서 사용할 수 있는 Type, Util이 정의된 공통모듈, 오로지 도메인에만 집중하고 서비스에 대한 비즈니스는 모르는 도메인모듈, 저장소, 도메인 외에 시스템에 필요한 모듈인 내부모듈, 최상위에서 독립적으로 실행 가능한 어플리케이션이며 각 모듈들을 조합하여 서비스 비즈니스를 완성하는 어플리케이션모듈

이렇게 모듈을 분리함으로써 각 역할과 책임의 선이 명확해져 리팩토링이 용이하고, 스파게티 코드를 방지하여 추상화 경계가 명확해 진다. 그리고 각 모듈은 필요한 최소의 의존성을 가져 불필요한 동작이 줄게 된다.

MSA가 대두되면서 적절히 어플리케이션을 분리하여 구성하는 것은 어떻게 하는 것일까 하는 의문점이 항상 들곤 했다. 근본적인 MSA 구성은 아니지만 이를 프로젝트에 적용함으로써 어느정도의 감을 잡아보면 좋을 것이다😎

Back to [TIL] 221020