Software Engineering 4

[Hexagonal Architecture] 3. 설계 방식

1. CQRS쓰기 요청과 읽기 요청의 책임을 분리하는 설계 방식쓰기와 읽기는 목적이 다르므로 자연스럽게 관심사와 정책도 달라짐 ex) 관심사더보기Command: 상태 변경, 입력 검증, 도메인 규칙, 트랜잭션, 이벤트 발행, 캐시 무효화, 후속 처리 등Query: 조회 조건, 커서, 페이징, 정렬 기준, 캐시 조회, 캐시 미스 복구, 응답 모델 최적화, 읽기 전용 트랜잭션 등 입력 모델요청값의 의도를 표현하는 객체✅ 컨트롤러는 HTTP 요청 값을 그대로 서비스에 넘기지 않고, 입력 모델로 변환해 애플리케이션에 전달하는 역할만 수행함✅ 애플리케이션 서비스에서 입력 모델을 직접 해석해 처리 전략을 결정함 ex) Command 객체더보기public record ChangeMarketsCommand( ..

[Hexagonal Architecture] 2. 구성

1. 도메인순수 도메인 모델을 중심으로 구성됨✅ POJO data class (기술 의존 없음) 2. Application 유즈케이스 흐름을 담당하는 영역✅ 도메인 객체를 사용해서 시스템의 유즈케이스를 구현함✅ 외부 연동이 필요할 경우 outbound port를 의존하여 처리함 (구체적인 외부 기술 모름)✅ outbound port 인터페이스를 정의하고 실제 구현체는 adapter-out에서 구현함 3. Port내부 애플리케이션이 외부와 소통하기 위해 정의해둔 인터페이스✅ 도메인과 어댑터 간 포트를 경계로 구분됨✅ 추상 API를 정의함✅ 목적에 맞는 프로토콜을 따름 Inbound Port외부 요청이 애플리케이션 기능을 실행할 수 있도록 정의한 입력 인터페이스ex) Controller, Scheduler,..

[Hexagonal Architecture] 1. 헥사고날 아키텍처란?

1. 헥사고날 아키텍처란?애플리케이션의 핵심 비즈니스 로직을 중심으로 두고 외부 기술 요소를 분리하는 설계 방식✅ port & adapter를 통해 외부 기술 요소와 느슨하게 결합됨➡️ 비즈니스 로직이 특정 기술을 직접 의존하지 않도록 하는 것이 목적 요청 흐름외부 요청inbound adapter → inbound port → application core → outbound port → outbound adapter외부시스템 예시) 회원가입 요청더보기UserController (Inbound Adapter)SignUpUseCase (Inbound Port)SignUpService (Application Core)UserRepository (Outbound Port)JpaUserRepositoryAdap..