실무에서 주로 레이어드 아키텍처(Layered Architecture)를 자연스럽게 사용했습니다. Controller, Service, Repository처럼 층을 나누고 각 레이어에서 역할을 나누는 방식은 익숙하고 구조를 파악하기도 쉬웠습니다.하지만, 시간이 지날수록 위의 구조에 대해 불편함이 생겼습니다.도메인 로직이 Service나 Repository에 흩어져 도메인 규칙이 명확하지 않음비즈니스 로직이 상위 레이어에 의존적으로 퍼짐Kafka, 외부 API, 배치 등 새로운 인프라를 기존 구조에 끼워 넣기 애매함테스트 시 상위 계층의 많은 의존성 고려 필요이런 문제를 겪으면서, 헥사고날 아키텍처(Hexagonal Architecture) 또는 포트-어댑터 아키텍처(Ports and Adapters Ar..