sungwony

[만들면서 배우는 클린 아키텍처] Intro 본문

development/architecture

[만들면서 배우는 클린 아키텍처] Intro

일상이상삼상 2022. 10. 1. 00:10
  • 계층형(layered) 아키텍처 스타일의 단점
  • 클린 아키텍처
  • 육각형 아키텍처(Hexagonal Architecture)
  • 도메인 중심 아키텍처의 장점

→ 이후 육각형 아키텍처의 실습

 

학습 목표

  • 계층형 아키텍처를 사용했을 때의 잠재적인 단점
  • 아키텍처 경계를 강제하는 방법
  • 잠재적인 지름길(?)들이 소프트웨어 아키텍처에 어떤 영향을 미칠 수 있는지
  • 언제 어떤 스타일의 아키텍처를 사용할 것인지
  • 아키텍처에 따른 코드 구현
  • 아키텍처의 각 요소들을 포함하는 다양한 종류의 테스트

 

예제 코드

GitHub - wikibook/clean-architecture: 《만들면서 배우는 클린 아키텍처》 예제 코드

 

서문

클린 아키텍처 이론은 알겠지만?!

→ 선행 공부 했어야 하나?

 

클래스 간의 의존관계가 어느 정도로 허용되어야 하는지, 패키지 레벨을 어떻게 나눠야 하는지와 같은 객체지향 기반의 어플리케이션을 구조화 하는 방안에 대한 힌트를 얻을 수 있을 것이다

 

연관 서적

  • 도메인 주도 설계
  • 클린 아키텍처

 

 

모든 외부 요소를 근본적으로 외부 인터페이스로 나타내므로 비대칭 계층화 체계와는 다른 모양의 대칭 뷰를 보여준다

 

계층형 아키텍처

  • 사용자와의 상호작용을 담당하는 프레젠테이션 계층과 엔티티의 영속성을 처리하는 영속성 레이어를 별개의 계층으로 구분한다.
  • 프레젠테이션 계층은 하위의 도메인 계층에, 도메인 계층은 하위 영속성 계층에 의존한다

→ 즉, 도메인 계층 입장에서 의존은 비대칭적이다

 

육각형 아키텍처

  • 사용자 인터페이스나 데이터베이스 모두 비즈니스 로직으로부터 분리돼야 하는 외부 요소로 취급한다.
  • 핵심은 의존성의 방향으로 비즈니스 로직이 외부 요소에 의존하지 않고 프레젠테이션 계층과 데이터 소스 계층이 도메인 계층에 의존하도록 만들어야 한다는 것!

→ 즉, 도메인 계층 입장에서 의존성은 대칭적이다

  • 애플리케이션은 비즈니스 관심사를 다루는 내부(inside)와 기술적인 관심사를 다루는 외부(outside)로 분해된다
  • 외부에 포함된 기술적인 컴포넌트를 어댑터(adapter)라 부른다
  • 어댑터가 내부와 상호작용하는 접점을 포트(port)라고 부른다 (포트와 어댑터 패턴)

 

도메인 주도 설계의 전제 조건은 도메인 구현을 격리하는 것이다(내부와 외부의 분리)

 

인트로부터 범상치않다

계층형 아키텍처는 비대칭적이다 직선적인 의존관계를 가진다.

이것이 왜 문제가 되는지 한번 알아보자.