Dev/Clean Architecture(3)
-
[Hexagonal Architecture] 3. Adapter 구현하기
Web Adapter 구현하기 Persistence Adapter 구현하기 Output Port ORM Entity Mapper 클래스 참고 1. Web Adapter 구현하기 웹 어댑터는 incoming adapter 중 하나로, 외부로부터 http를 통해 request를 받아 애플리케이션 코어를 호출하는 주도하는 어댑터입니다. 우리가 controller 클래스로 정의하는 부분이 이에 해당되며, http와 관련된 기능을 담당합니다. 웹 어댑터는 application - port - in에 위치한 input port를 호출합니다. input port는 외부 어댑터와 애플리케이션 코어가 통신하는 명세로 인터페이스로 되어있어 DIP(의존성 역전 원칙)이 작용됩니다. 이전시간에 설명했던 UseCase 인터페이..
2023.03.31 -
[Hexagonal Architecture] 2. Use Case 구현하기
헥사고날 아키텍처는 도메인 중심의 아키텍처로 적합합니다. 도메인 엔티티를 먼저 만들고, 그 후 유스케이스를 구현하는 순서로 진행합니다. 유스케이스의 동작은 아래와 같은 순서로 진행됩니다. 입력값에 대한 유효성을 검증하고 시스템을 동작하기 전에 비즈니스 규칙을 검증한 후 엔티티 모델을 조작하고 출력 결과값을 반환합니다 ※ 참고로 코드는 kotlin + webflux + coroutine 로 구성되어있습니다. 1. 입력 유효성 검증 1.1. input model web adapter의 일부분으로, application - port - in 에 위치합니다. 모든 필드는 불변 필드로 지정하고 (final) 유효성 검증 설정하여 잘못된 값 입력시 익셉션 throw 시킵니다.(@NotNull, @Min 등) 입력값..
2022.11.18 -
[Hexagonal Architecture] 1. 헥사고날 아키텍처란?
※ 해당 포스트 및 이어지는 포스트는 만들면서 배우는 클린아키텍처를 읽고 정리하였습니다. 계층형 아키텍처 의존성 역전하기 클린 아키텍처 헥사고날 아키텍처 구조 계층 구성 패키지 구성 1. 계층형 아키텍처 전통적인 아키텍처입니다. 사용자와 상호작용을 담당하는 웹(프레젠테이션) 계층과 엔티티의 영속성을 처리하는 영속성 계층를 별개의 계층으로 구분합니다. 웹 계층은 도메인 계층을 의존하고, 도메인 계층은 영속성 계층을 의존하기 때문에 도메인 계층 입장에서 의존성이 비대칭적입니다. 모든 것이 영속성 계층을 토대로 만들지기 때문에 데이터베이스에 의존적이고, 이에 의해 데이터베이스 중심으로 설계가 진행되게 됩니다. 데이터베이스 중심의 설계는 영속성 로직과 도메인 로직이 뒤섞여 있어, 각각을 개별적으로 개발하기 힘들..
2022.11.18