클린 아키텍쳐의 핵심 원칙
1. 외부 프레임워크로 부터의 독립성
- 핵심 비즈니스 로직은 외부 프레임워크와 독립되어 있어야 기술 스택의 변화에 쉽게 마이그레이션하고 적응 할 수 있음.
2. 테스트 가능성
- 비즈니스 규칙이 사용자 인터페이스(UI), 데이터베이스와 같은 외부로 부터 독립적일 수록 테스트 중심 개발을 할 수 있음.
3. 단순성
- 외부로 부터 독립적이므로 복잡함이 줄어들고 보다 명확하고 이해하기 쉬운 코드를 만들 수 있게됨. 이는 유지 관리성과 확장성을 촉진시킴.
즉, 비지니스 로직을 외부 요소들(사용자의 UI, DB, OS, DEVICE) 등으로 부터 최대한 분리 시켜 유지보수에 용이하게 하겠다는게 핵심.
그래서 어떻게?
아키텍쳐를 계층을 자주 변경 되지 않는 것과 중요하지 않고 자주 변경 되는 것들로 분류 한다.
1. Entities
- 비지니스 영역의 기본 요소로. 아키텍처의 핵심에서 정의됨. 외부 환경에 대한 세부 정보가 없음. (예: User, Product, Order)
2. UseCase
- 비지니스 로직을 캡슐화함. (예: 주문하기, 인벤토리 업데이트)
3. Interface Adaper
- 외부 세계(예: HTTP 요청, 데이터 베이스 쿼리)의 데이터를 UseCase에 적합한 형식으로 변환하거나 반대로 변환하는 역할.
4. Freameworks and Drivers
- Freamework, DB, UI와 같은 시스템 외부의 사항들이 모여 있는 계층
각 계층간에 종속성의 원칙
위 동심원의 그래프에서 동심원 중심으로 들어갈 수록 소프트웨어의 수준은 더 높아지게 된다. 이 아키텍처를 작동시키는 최우선 규칙은 '종속성 규칙'이다. 이 규칙에 따르면 소스 코드 종속성은 내부만 가리킬 수 있다. 내부 서클의 어떤 것도 외부 서클의 무언가에 대해 전혀 알 수 없어야 한다.
따라서 외부에서 사용되는 항목들은 내부 원의 코드에서 언급 되어서는 안된다. 마찬가지로, 외부 원에서 사용되는 데이터 형식은 내부 원의 코드에서 언급되어서는 안된다.
'java' 카테고리의 다른 글
AdopJDK 에서 AdopTium 으로 (0) | 2023.05.20 |
---|---|
adopJDK 설치 (0) | 2022.07.24 |
openJDK와 adoptJDK의 차이점 (0) | 2022.07.24 |
openjdk 'GA' 의미 (0) | 2022.05.17 |
java list slice 성능 비교 (0) | 2022.05.11 |
댓글