<aside> 💡 이번 장에서는 코드를 구성하는 몇 가지 방법을 살펴보고, 육각형 아키텍처를 직접적으로 반영하는 표현력 있는 패키지 구조를 알아보자!

</aside>

새 프로젝트에서 가장 먼저 제대로 만들려고 하는 것은 패키지 구조다.

사용자가 본인의 계좌에서 다른 계좌로 돈을 송금할 수 있는 ‘송금하기’ 유스케이스를 살펴보자!

계층으로 구성하기


코드를 구조화하는 첫 번째 접근법은 계층을 이용하는 것으로, 다음과 같이 코드를 구성할 수 있다.

buckpal
		domain
				Account
				Activity
				AccountRepository
				AccountService
		persistence
				AccountRepositoryImpl
		web
				AccountController

그러나, 적어도 세 가지 이유로 이 패키지 구조는 최적의 구조가 아니다!

  1. 애플리케이션의 기능 조각이나 특성을 구분 짓는 패키지 경계가 없다.

  2. 애플리케이션이 어떤 유스케이스들을 제공하는지 파악할 수 없다.