헥사고날 / 클린 아키텍처
애플리케이션은 DB의 데이터를 그저 옮기는 수동적인 sw를 넘어 여러 일을 할 수 있어야 한다.
DB나 웹 프레임워크 같은 외부 시스템이 애플리케이션의 중심이 아니라, 애플리케이션이 '사용하는' 일부가 되어야 한다.
상황에 따라 RDBMS에서 NoSQL을 쓸 수도 있고, API서버와의 통신 방식을 Rest에서 GraphQL로 바꿀 수 있어야 한다.
포트만 맞으면 갈아끼울 수 있다.
의존성은 어댑터 -> 애플리케이션 -> 도메인으로 흐름
src/
adapter/
inbound/
api/
product_controller.py
user_controller.py
...
outbound/
repositories/
product_repository.py
user_repository.py
application/
service/
product_service.py
user_service.py
port/
inbound/
product_port.py
user_port.py
outbound/
product_repository.py
user_repository.py
domain/
product.py
user.py