ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 22장 - 클린 아키텍처
    클린 코드(Clean Code)/클린 아키텍처요약 2023. 1. 14. 00:01
    728x90

    여러 시스템 아키텍처들

    육각형 아키텍처, DCI, BCE 등의 유명한 시스템 아키텍처들이 존재합니다.

    세부적인 내용은 다를 수 있지만 전체 내용은 상당히 비슷합니다.

    이들의 목표는 관심사의 분리입니다.

     

    시스템이 다음과 같은 특징을 지니도록 만듭니다.

    - 프레임워크 독립성

    - 테스트 용이성

    - UI 독립성

    - 데이터베이스 독립성

    - 모든 외부 에이전시에 대한 독립성

     

    클린 아키텍처

     

    각각의 동심원은 소프트웨어에서 서로 다른 영역을 표현합니다.

    보통 안으로 들어갈수록 고수준의 소프트웨어가 됩니다.

    소스 코드의 의존성은 반드시 안쪽으로, 고수준의 정책으로 향해야 합니다.

     

    엔티티 : 엔터프라이즈의 핵심 규칙

     

    유스케이스 : 특정 소프트웨어에 특화된 업무 규칙

     

    인터페이스 어뎁터 : 데이터를 유스케이스와 엔티티에게 가장 편리한 형식에서 데이터베이스나 웹 같은 외부 에이전시에게 가장 편리한 방식으로 변환합니다.

     

    프레임워크와 드라이버 : 모든 세부사항이 위치하는 곳으로 모두 외부에 위치시켜야 합니다.

     

     

    경계 횡단하기

    각 의존성은 유스케이스를 향해 안쪽을 가리켜야 합니다.

    만약 의존성의 방향과 제어 흐름이 명백히 반대여야 하는 경우 의존성 역전 원칙을 사용하여 해결합니다.

    자바에서는 인터페이스와 상속을 적절히 배치함으로써 해결할 수 있습니다.

     

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

     

    결론

    소프트웨어를 계층으로 분리하고 의존성 규칙을 준수한다면 본질적으로 테스트하기 쉬운 시스템이 만들어지게 됩니다.

    이제 데이터베이스나 웹 프레임워크 같은 시스템의 외부 요소가 구식이 되더라도, 이들 요소는 야단스럽지 않게 교체할 수 있습니다.

     

    '클린 코드(Clean Code) > 클린 아키텍처요약' 카테고리의 다른 글

    24장 - 부분적 경계  (0) 2023.01.18
    23장 - 프레젠터와 험블 객체  (0) 2023.01.15
    21장 - 소리치는 아키텍처  (0) 2023.01.13
    20장 - 업무 규칙  (0) 2023.01.12
    19장 - 정책과 수준  (0) 2023.01.02

    댓글

Designed by Tistory.