아키텍처의 목적
소프트웨어를 쉽게 변경할 수 있는 구조로 설계해 유지보수를 쉽게 하는 것
의존성
소프트웨어 : 도메인(핵심 프로세스) + 인프라스트럭처(도메인을 소프트웨어로 제공하기 위한 DB, API, UI 등)
무수히 많은 의존성으로 연결되어있음.
계층형 아키텍처
: 목적이 같은 코드들을 계층으로 그룹화 (관심사의 분리)

프레젠테이션 계층 (UI) - 도메인 계층 (업무 로직) - 영속성 계층 (데이터 DB, API)
연쇄적 참조 문제 -> 의존성 높아짐 -> 코드 변경이 어려움(참고 하고 있는 모든 곳에 영향), 테스트도 쉽지 않음
특히 도메인 계층의 업무로직이 수시로 UI 와 데이터 변경의 영향을 받는다는 것이 문제.
일반적으로 도메인 로직 보다 UI, 데이터 변경이 더 빈번한데, 이것이 업무 로직에 영향을 많이 주게 되면 문제..
핵심적인 도메인을 잘 보호해야!
클린 아키텍처
계층형 아키텍처의 의존성 문제가 보완된 클린 아키텍처
안쪽으로 단방향 의존. 바깥쪽이 변경되더라도 안쪽의 고수준 정책은 영향을 받지 않도록
무엇을 보호하고 무엇에 집중해야하는지 강조 위해.
아키텍처는 도메인과 업무정책을 보호하고 집중하도록 설계되어있어야

클린아키텍처를 적용한 계층형 아키텍처
entity : 기업의 업무규칙. 업무 도메인을 설계하고 개발. 가장 핵심적이고 업무와 직접적으로 연관된 업무 규칙을 가장 안쪽에 독립적으로 구성해 외부의 변경으로부터 보호.
Use case : 어플리케이션이 제공하는 기능을 구현한 요소. 도메인 엔티티를 참조하여 구현
어댑터 : 외부의 데이터 흐름을 내부 도메인에서 사용할 수 있는 데이터 형식으로 변환해주는 역할
- Presenter : 화면에 입력을 도메인에 맞는 데이터로 변환
- Repository : 외부의 DB, API 데이터를 도메인에 맞는 데이터로 변환
의존성 역전 - use case와 어댑터 사이 인터페이스(약속)
use case 가 제공하는 기능과 필요한 기능을 죄우 인터페이스로 사전 정의하면 해당 약속에 따라 프리젠터와 레퍼지토리를 구현하면 된다.
헥사고날 아키텍처
: 클린아키텍처를 구현하는 방법을 구체화한 아키텍처
아키텍처의 목표
소프트웨어를 제공하는 목적인 도메인을 외부 세부사항의 변경으로부터 철저히 분리해 보호하는 것.
도메인은 고객에게 서비스하는 핵심 비즈니스.
아키텍처는 도메인에 집중.
좋은 아키텍처가 적용되면 의존성이 낮아지고 유연해지기 때문에 시장의 빠른 요구사항에 빠르게 대처할 수 있고 테스트도 쉽게 적용할 수 있다. 개발 비용도 절감 가능.
좋은 설계와 아키텍처를 갖추면 고객에게 더 좋은 품질의 서비스를 더 빠르게 저렴한 비용으로 제공할 수 있다.
출처 :
'Trend' 카테고리의 다른 글
디자인 시스템 (0) | 2023.04.17 |
---|---|
클린 아키텍처 Clean Architecture (0) | 2022.11.21 |
코드리뷰 하는 법 (0) | 2022.09.06 |
[UI/UX] 닫기 버튼 위치 왼쪽 ? 오른쪽 ? (0) | 2022.08.29 |
2022 WWDC (0) | 2022.06.07 |