본문 바로가기
책/클린 아키텍처

22장 클린 아키텍처

by 오오오니 2025. 3. 18.

22장 클린 아키텍처

비어 있음
2024년 8월 30일
시스템 아키텍처와 관련된 여러 가지 아이디어
육각형 아키텍처
DCI
BCE
이 아키텍처들의 목표는 관심사의 분리
특징
프레임워크 독립성
프레임워크를 도구로 사용할 수 있으며 프레임워크가 지닌 제약사항 안으로 시스템을 욱여 넣도록 강제하지 않는다.
테스트 용이성
UI 독립성
데이터베이스 독립성
모든 외부 에이전시에 대한 독립성

🏘️ 의존성 규칙

동심원은 다른 영역을 표현
의존성 규칙은 중요한 규칙
외부의 원은 내부의 원에 속한 요소에 대해 아무것도 알지 못한다.
함수, 클래스, 변수, 엔티티

🏘️ 엔티티

엔티티는 핵심 업무 규칙을 캡슐화한다.
엔티티는 가장 고수준인 규칙을 캡슐화한다.
운영 관점에서 특정 애플리케이션에 무언가 변경이 필요하더라도 엔티티 계층에는 절대로 영향을 주어서는 안 된다.

🏘️ 유스케이스

애플리케이션에 특화된 업무 규칙을 포함한다.
이 계층에서 발생한 변경이 엔티티에 영향을 줘서는 안 된다.
데이터 베이스, UI, 등

🏘️ 인터페이스 어댑터

어댑터 계층은 일련의 어댑터들로 구성된다.
어댑터는 데이터를 유스케이스와 엔티티에게 가장 편리한 형식에서 데이터베이스나 웹 같은 외부 에이전시에게 가장 편리한 형식으로 변환한다.

🏘️ 프레임워크와 드라이버

이 계층에서는 안쪽원과 통신하기 위한 접합 코드 외에는 특별히 더 작성해야 할 코드가 그다지 많지 않다.
세부사항이 위치하는 곳이다.

🏘️ 원은 네 개여야만 하나?

더 많은 원이 필요할 수도 있다.
하지만 어떤 경우에도 의존성 규칙은 적용된다.
안쪽으로 이동할수록 추상화와 정책의 수준은 높아진다.

🏘️ 경계 횡단하기

컨트롤러와 프레젠터가 유스케이스와 통신하는 모습을 볼 수 있다.
유스케이스에서 프레젠터를 호출할 때 직접 호출하면 안된다.
⇒ 유스케이스 → 내부 인터페이스(출력 포트), ← 외부원이 구현한다.

🏘️ 경계를 횡단하는 데이터는 어떤 모습인가

경계를 가로질러 데이터를 전달할 때, 데이터는 항상 내부의 원에서 사용하기에 가장 편리한 형태를 가져야만 한다.

🏘️ 전형적인 시나리오 추가

데이터의 흐름
Controller -> InputBoundary -> UseCaseInteractor -> Entities
의존 관계
Controller -> InputBoundary <- UseCaseInteractor

' > 클린 아키텍처' 카테고리의 다른 글

23장 프레젠터와 험블 객체  (0) 2025.03.18
21장 소리치는 아키텍처  (0) 2025.03.18
20장 업무 규칙  (0) 2025.03.18
19장 정책과 수준  (0) 2025.03.18
18장 경계 해부학  (0) 2025.03.18