개발 개념
클린아키텍처
ljs981026
2025. 2. 11. 23:43
1. 클린아키텍처
소프트웨어 시스템의 구조를 설계할 때에 지켜야 할 원칙과 방법을 정의한 개념
2. 왜 클린아키텍처?
소프트웨어 아키텍트에 있어서 중요한 포인트 중 하나인 비용
- 클린 아키텍처는 비용을 줄여줌
- 선택지를 넓힘으로 유연하게 대응 가능
- 선택지를 넓힘? 어떤 저장 방식을 선택하던, 어떤 프레임워크, 하드웨어를 선택하던 상관없다. 우선적으로 비즈니스 로직을 만들면 그 위에 이식할 수 있게 만든다
3. 컴포넌트
시스템의 구성 요소로 배포할 수 있는 가장 작은 단위 ex) java -> jar
- 저수준 컴포넌트: 비지니스 로직보다 유저와 외부에 가까움 ex) 컨트롤러, 레포지토리
- 고수준 컴포넌트: 비지니스 로직이 포함 ex) 서비스, 도메인
4. 의존성
고수준 컴포넌트(도메인, 서비스)는 저수준 컴포넌트(컨트롤러, 레포지토리)를 의존해서는 안 됨
=> 저수준 컴포넌트는 쉽게 변경되기 때문
5. 의존성 역전
인터페이스를 이용해 의존성을 역전시켜 DIP를 달성한다. 이제 DB 테이블이 변경이 되어도, DB자체가 바뀌어도 문제가 없다. => 객체지향의 기본적인 원리인 다형성을 유지 하는 기본 구조
DIP: 고수준 모듈은 저수준 모듈에 의존해서는 안 된다. 둘 다 추상화에 의존해야 한다.