본문 바로가기

아키텍처17

클린 아키텍처 - 컴포넌트 결합 - SAP 컴포넌트 결합 ADP: 의존성 비순환 원칙 (Acyclick Dependencies Principle) SDP: 안정된 의존성 원칙(Stable Dependencies Principle) SAP: 안정된 추상화 원칙(Stable Abstractions Principle) SAP 안정된 추상화 원칙(Stable Abstractions Principle) 컴포넌트는 안정된 정도만큼만 추상화되어야 한다. 고수준 정책을 어디에 위치시켜야 하는가? 시스템에는 자주 변경해서는 절대로 안 되는 소프트웨어도 있다. 고수준 아키텍처나 정책 결정과 관련된 소프트웨어가 그 예다. 업무 로직이나 아키텍처와 관련된 결정에는 변동성이 없기를 기대한다. 따라서 시스템에서 고수준 정책을 캡슐화하는 소프트웨어는 반드시 안정된 컴포넌트.. 2023. 2. 11.
클린 아키텍처 - 컴포넌트 결합 - SDP 컴포넌트 결합 ADP: 의존성 비순환 원칙 (Acyclick Dependencies Principle) SDP: 안정된 의존성 원칙(Stable Dependencies Principle) SAP: 안정된 추상화 원칙(Stable Abstractions Principle) SDP 안정된 의존성 원칙(Stable Dependencies Principle) 안정성의 방향으로(더 안정된 쪽에) 의존하라. 설계는 결코 정적일 수 없다. 설계를 유지하다 보면 변경은 불가피하다. 변경이 쉽지 않은 컴포넌트가 변경이 예상되는 컴포넌트에 의존하게 만들어서는 절대 안 된다. 변경을 쉽게 하기 위해 만든 컴포넌트에 변경이 어려운 컴포넌트가 의존하게 되면 변경을 쉽게 할 수 없게 된다. 변경이 큰 도전이 되어 버린다. 안정성.. 2023. 2. 11.
클린 아키텍처 - 설계원칙 - SRP 설계원칙 SOLID SRP: 단일 책임 원칙 Single Responsible Principle OCP: 개방-폐쇄 원칙 Open-Closed Principle LSP: 리스코프 치환 법칙 Liskov Substitution Principle ISP: 인터페이스 분리 원칙 Interface Segregation Principle DIP: 의존성 역전 원칙 Dependency Inversion Principle SRP 하나의 모듈은 하나의, 오직 하나의 이해관계자에 대해서만 책임져야 한다. 모든 모듈이 단 하나의 일만 해야 한다는 의미는 아니다. 응집된(cohesive)라는 단어가 SRP를 암시한다. 이 원칙을 위반하는 징후들을 살펴 보겠다. 징후 1: 우발적 중복 [그림 1-1 Employee 클래스] .. 2023. 2. 11.
클린 아키텍처 - 컴포넌트 컴포넌트 component 컴포넌트는 배포 단위다. 컴포넌트는 시스템의 구성 요소로 배포할 수 있는 가장 작은 단위다. 자바의 경우 jar, 루비에서는 gem 파일, 닷넷에서는 DLL이다. 여러 컴포넌트를 서로 링크하여 실행 가능한 단일 파일로 생성할 수 있다. 컴포넌트 응집도 컴퍼넌트 응집도와 관련된 세 가지 원칙 REP: 재사용/릴리스 등가 원칙(Reuse/Release Equivalence Principle) CCP: 공통 폐쇄 원칙(Common Closure Principle) CRP: 공통 재사용 원칙(Common Reuse Principle) REP: 재사용/릴리스 등가 원칙 재사용 단위는 릴리스 단위와 같다. 컴포넌트를 구성하는 모든 모듈은 서로 공유하는 중요한 테마나 목적이 있어야 한다. .. 2023. 2. 11.