카테고리 없음

만들면서 배우는 클린아키텍처를 읽고(1/4)

truly-sparkle2 2024. 2. 11. 11:10

클린아키텍처의 지향점

  • 변화하는 요구사항과 외부 요인에 빠르게 적응할 수 있게 하는것
  • 계층형 아키텍처 자체가 문제가 아니라, 개발자들이 나쁜 습관으로 코드를 짜기 쉬운 환경임
  1. 데이터베이스 주도 설계를 유도한다.
    1. 애플리케이션의 목적은 사용자가 필요한 비즈니스 로직을 만들어서 편리하게 활용함이 목적
    2. 상태(State)가 아닌 행동 (Behavior)이 중심이 되어야됨
    3. 의존성이 가장 안쪽에있는 데이터베이스 중심으로 설계가 진행됨
  2. 지름길을 택하기 쉬워진다
    1. 컴포넌트의 계층을 이동시켜 개발을 쉽게 하려는 유혹에 빠지기 쉬움
  3. 테스트하기 어려워진다.
    1. 계층형 아키텍처는 계층을 뛰어넘는 유혹에 빠지기 쉬업 (ex. 웹 ⇒ 영속성 바로 접근)
    2. 도메인 로직이 웹 계층에 구현될 가능성이 커짐
    3. 웹 계층 테스트에서 영속성 계층도 mocking 해야됨
  4. 유스케이스를 숨긴다.
    1. 계층형 아키텍처는 도메인 계층의 서비스 컴포넌트에대해 너비 (처리 영역)을 강제하지 않기 때문에, 범위가 매우 넓은 서비스가 만들어질 수 있음
    2. 특정 유스케이스를 위한 서비스를 쓰는게 개발자 입장에서 더 개발하기 좋을 수 있음
  5. 동시 작업이 어려워진다.
    1. 계층형 아키텍처 특성 상, 하위계층 개발 ⇒ 상위계층 개발 순서로 이루어짐
    2. 하나의 기능을 개발할 때, 여러명이서 개발하기 어려움
    3. 범위가 넓은 서비스들이 있을 경우, conflict 나기가 쉬움
  6. 유지보수 가능한 소프트웨어를 만드는데 어떻게 도움이 될 까?
    1. 계층형 아키텍처 자체가 나쁜것은 아니지만, 쉽게 유혹에 빠지기 쉬움
    2. 이러한 단점들을 염두에두고 개발하면 좋은 설계 방향으로 갈 수 있음
반응형