Architecture : 개발의 필요한 구성요소들을 어떤 구조로 배치할 것인가?절대적인 정답은 없다! 나의 상황에서 가장 적합한 구조를 사용하자.
동일한 구조를 사용해도 디테일적으로는 전부 다르다.

3-Layered : C/S/A 3개의 계층으로 나뉘어지는 구조.

4-Layered : 4개의 계층으로 나누어지는 계층
계층을 세분화 하고 추상화하여 단점의 보완.
Domain 계층의 분리로 DDD 에서 설명되는 개념을 구현하기 쉽다.

Hexagonal : 내부/외부 영역을 분리, 이후 Port/Adaptor 를 이용하여 엄격한 의존성관리.
저수준 -> 고수준 의 방향을 만들어야한다. (컴파일 의존성)의존성 규칙 만큼은 지키고 있다.

고수준 -> 저수준 의 방향이라면 DIP를 활용해 방향을 바꿔줄 수 있다. 해당 방법을 이용하면 의존성 규칙을 100% 지킬수 있음.의존성 규칙 을 지키기 위해 의존성 방향을 뒤집을 수 있다.
Domain Entity : 회사차원에서의 핵심 업무규칙
UseCase : 요구사항, 비즈니스 로직
특정목적을 이루기 위해 규칙 및 절차를 설명하고, 과정에서 어떤 Entity가 동작해야하는지 호출하고 위임한다.
Domain Logic Vs Business Logic
중요한 결정을 내리는 로직



생산성의 악화가 크다.멀티모듈의 확장성을 항상 고려하자. 규모가 커질수록 서버는 늘어날수 밖에없다.

패키징 구조를 고려하여 설계를 하는 관점을 길러보자