본문 바로가기

📙/Study17

[만들면서 배우는 클린 아키텍처] 06. 영속성 어댑터 구현하기 의존성 역전애플리케이션 서비스에서는 영속성 기능을 사용하기 위해 포트 인터페이스를 호출한다. 이 포트는 실제로 영속성 작업을 수행하고 데이터베이스와 통신할 책임을 가진 영속성 어댑터 클래스에 의해 구현된다.영속성 어댑터는 아웃고잉 어댑터다. 애플리케이션에 의해 호출될 뿐 애플리케이션을 호출하지는 않는다.포트는 애플리케이션 서비스와 영속성 코드 사이의 간접적인 계층으로 영속성 코드를 리팩터링 하더라도 코어 코드를 변경하지 않아도 된다. 자연스럽게 런타임에도 의존성은 애플리케이션 코어에서 영속성 어댑터로 향한다. 포트가 계약을 만족하는 한 코어에 영향을 미치지 않으면서 영속성 코드를 마음껏 수정할 수 있다.영속성 어댑터의 책임영속성 어댑터가 하는 일1. 입력을 받는다포트 인터페이스를 통해 입력을 받는다. 입.. 2024. 10. 14.
[만들면서 배우는 클린 아키텍처] 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.
728x90
반응형