개발 개념

클린아키텍처

ljs981026 2025. 2. 11. 23:43

1. 클린아키텍처

소프트웨어 시스템의 구조를 설계할 때에 지켜야 할 원칙과 방법을 정의한 개념

 

2. 왜 클린아키텍처?

소프트웨어 아키텍트에 있어서 중요한 포인트 중 하나인 비용

  • 클린 아키텍처는 비용을 줄여줌
  • 선택지를 넓힘으로 유연하게 대응 가능
    • 선택지를 넓힘? 어떤 저장 방식을 선택하던, 어떤 프레임워크, 하드웨어를 선택하던 상관없다. 우선적으로 비즈니스 로직을 만들면 그 위에 이식할 수 있게 만든다

3. 컴포넌트

시스템의 구성 요소로 배포할 수 있는 가장 작은 단위 ex) java -> jar

  • 저수준 컴포넌트: 비지니스 로직보다 유저와 외부에 가까움 ex) 컨트롤러, 레포지토리
  • 고수준 컴포넌트: 비지니스 로직이 포함 ex) 서비스, 도메인 

4. 의존성

고수준 컴포넌트(도메인, 서비스)는 저수준 컴포넌트(컨트롤러, 레포지토리)를 의존해서는 안 됨

 => 저수준 컴포넌트는 쉽게 변경되기 때문

 

5. 의존성 역전

인터페이스를 이용해 의존성을 역전시켜 DIP를 달성한다. 이제 DB 테이블이 변경이 되어도, DB자체가 바뀌어도 문제가 없다. => 객체지향의 기본적인 원리인 다형성을 유지 하는 기본 구조

DIP: 고수준 모듈은 저수준 모듈에 의존해서는 안 된다. 둘 다 추상화에 의존해야 한다.