728x90 반응형 만들면서 배우는 클린 아키텍처11 [만들면서 배우는 클린 아키텍처] 05. 웹 어댑터 구현하기 육각형 아키텍처에서는 외부 세계와의 모든 커뮤니케이션은 어댑터를 통해 이루어진다.의존성 역전웹 어댑터는 인커밍 어댑터이다. 외부로부터 요청을 받아 애플리케이션 코어를 호출하고 무슨 일을 해야 할지 알려준다.애플리케이션 계층은 웹 어댑터가 통신할 수 있는 특정 포트를 제공한다. 서비스는 이 포트를 구현하고 웹 어댑터는 이 포트를 호출할 수 있다.그림처럼 웹 어댑터가 유스케이스를 직접 호출할 수 있지만 의존성 역전 원칙을 적용한 이유는 뭘까애플리케이션 코어가 외부 세계와 통신할 수 있는 곳에 대한 명세가 포트이기 때문이다. 포트를 적절한 곳에 위치시키면 외부와 어떤 통신이 일어나고 있는지 정확히 알 수 있고, 유지보수할 때 유용하다.웹 소켓을 통해 실시간 데이터를 사용자의 브라우저로 보내는 경우 웹 어댑터에.. 2024. 10. 12. [만들면서 배우는 클린 아키텍처] 04. 유스케이스 구현하기 육각형 아키텍처는 도메인 중심의 아키텍처에 적합하기 때문에 도메인 엔티티를 만드는 것으로 시작한 후 해당 도메인 엔티티를 중심으로 유스케이스를 구현한다.도메인 모델 구현하기package buckpal.domain;public class Account { // 실제 계좌의 현재 스냅숏을 제공. private AccountId id; private Money baselineBalance; // 활동 바로 전의 잔고 private ActivityWindow activityWindow; // 특정 범위에 해당하는 활동만 보유 // 생성자와 getter는 생략 public Money calculateBalance() { // 활동 바로 전의 잔고와 활동창의 모든 잔고를 합한 값이 현재 총 잔고 .. 2024. 10. 7. [만들면서 배우는 클린 아키텍처] 03. 코드 구성하기 육각형 아키텍처를 직접적으로 반영하는 표현력 있는 패키지 구조를 소개한다.계층으로 구성하기 각 계층에 대해 전용 패키지를 만들었다.의존성 역전 원칙을 적용해서 domain.AccountRepository 인터페이스를 추가하고, persistence.AccountRepositoryImpl 구현체를 둠으로써 의존성이 domain 패키지에 있는 도메인 코드만을 향하도록 했다. 문제점- 애플리케이션 기능 조각이나 특성을 구분 짓는 패키지 경계가 없다.새로운 기능을 추가해야할 때 각 계층의 패키지에 클래스가 추가될 것이며 서로 연관되지 않은 기능들끼리 예상하지 못한 부수효과를 일으킬 수 있게 될 가능성이 크다.- 애플리케이션이 어떤 유스케이스들을 제공하는지 파악할 수 없다.특정 기능을 찾기 위해서는 .. 2024. 10. 6. 이전 1 2 3 4 다음 728x90 반응형