아키텍처
- 종류
- 계층형 아키텍처
- 특징
- 전통적인 수평적 계층화
- 장점
- 단순한 구조
- 보편적이라 익숙해서 처음 시작할 때 적합하다.
- 단점
- 업무 도메인에 대해 아무 것도 말해 주지 않음
- 소프트웨어가 커지고 복잡해지면 조직화에 도움 안 됨
- 데이터베이스 주도 설계 유도
- 특징
- 클린 아키텍처
- 특징
- 의존성 역전을 이용해서 도메인이 중심
- 장점
- 단순한 규칙
- 도메인이 세부 사항에 의존하지 않음
- DDD(도메인 주도 설계) 적용이 용이
- 비즈니스 규칙에 집중하기 쉬움
- 단점
- 패키지 구조가 계층형보다 더 복잡함
- 익숙하지 않아서 처음에 버벅일 수 있음
- 레퍼런스가 적음
- 목표
- 관심사의 분리
- 핵심 규칙
- 의존성의 방향은 안쪽, 고수준을 향함
- 이럴 땐 클린 아키텍처를 쓰지말자...
- 소규모의 프로젝트 진행
- 프로젝트 개발자 모두가 클린 아키텍처를 이해하고 있지 않을 때
- 모두가 사용하기로 합의하지 않았을 때
- 특징
- 헥사고날 아키텍처
- 특징
- 클린 아키텍처 기본 다이어그램과 가장 비슷
- 따라할 수 있는 쿡북 또는 레퍼런스가 가장 많다.
- 특징
- 계층형 아키텍처
패키지 구조
- 기능 기반 패키지
- 특징
- 서로 연관된 기능, 도메인 개념에 따라 수직의 얇은 조각으로 나눔
- 수평적 계층화의 문제를 깨닫고 수직적 계층화로 넘어오는 경우 많음
- 장점
- 코드의 상위 수준 구조가 업무 도메인에 대해 무언가를 알려줌
- 유스케이스가 변경될 경우 변경해야 할 코드를 모두 찾는 작업이 더 쉬워짐
- 단점
- 계층 구조가 분리되지 않음
- 특징
- 헥사고날
- 특징
- 수직, 수평으로 나눔
- DB 계층에 대한 의존성 역전
- 장점
- 도메인이 다른 세부 사항에 의존하지 않음
- 수직, 수평형 계층 구조의 장점을 모두 가짐
- 단점
- 클래스와 패키지 구조가 더 많아짐
- 특징
✔️ 아키텍처가 애매할 때 판단 기준
- 필요한 시스템을 만들고 유지보하는 데 투입되는 인력 최소화에 유리한가?
- 소스 코드 의존성이 안쪽으로, 고수준의 정책을 향하고 있는가?
- 세부 사항이 변경되어도 도메인에 변경이 없는가?
- 테스트하기 쉬운가?
- 각각의 아키텍처 원칙들을 잘 지키고 있는가?
참고 👇
https://post.dooray.io/we-dooray/tech-insight-ko/back-end/4349/
반응형
'Architecture' 카테고리의 다른 글
멀티 모듈 프로젝트 (0) | 2023.03.21 |
---|