Architecture

백엔드 아키텍처

잔망루피 2023. 4. 22. 21:04

아키텍처

  1. 종류
    1. 계층형 아키텍처
      • 특징
        • 전통적인 수평적 계층화
      • 장점
        • 단순한 구조
        • 보편적이라 익숙해서 처음 시작할 때 적합하다.
      • 단점
        • 업무 도메인에 대해 아무 것도 말해 주지 않음
        • 소프트웨어가 커지고 복잡해지면 조직화에 도움 안 됨
        • 데이터베이스 주도 설계 유도
    2. 클린 아키텍처
      • 특징
        • 의존성 역전을 이용해서 도메인이 중심
      • 장점
        • 단순한 규칙
        • 도메인이 세부 사항에 의존하지 않음
          • DDD(도메인 주도 설계) 적용이 용이
          • 비즈니스 규칙에 집중하기 쉬움
      • 단점
        • 패키지 구조가 계층형보다 더 복잡함
        • 익숙하지 않아서 처음에 버벅일 수 있음
        • 레퍼런스가 적음
      • 목표
        • 관심사의 분리
      • 핵심 규칙
        • 의존성의 방향은 안쪽, 고수준을 향함
      • 이럴 땐 클린 아키텍처를 쓰지말자...
        • 소규모의 프로젝트 진행
        • 프로젝트 개발자 모두가 클린 아키텍처를 이해하고 있지 않을 때
        • 모두가 사용하기로 합의하지 않았을 때
    3. 헥사고날 아키텍처
      • 특징
        • 클린 아키텍처 기본 다이어그램과 가장 비슷
        • 따라할 수 있는 쿡북 또는 레퍼런스가 가장 많다. 

 

패키지 구조

  1. 기능 기반 패키지
    • 특징
      • 서로 연관된 기능, 도메인 개념에 따라 수직의 얇은 조각으로 나눔
      • 수평적 계층화의 문제를 깨닫고 수직적 계층화로 넘어오는 경우 많음
    • 장점
      • 코드의 상위 수준 구조가 업무 도메인에 대해 무언가를 알려줌
      • 유스케이스가 변경될 경우 변경해야 할 코드를 모두 찾는 작업이 더 쉬워짐
    • 단점
      • 계층 구조가 분리되지 않음
  2. 헥사고날
    • 특징
      • 수직, 수평으로 나눔
      • DB 계층에 대한 의존성 역전
    • 장점
      • 도메인이 다른 세부 사항에 의존하지 않음
      • 수직, 수평형 계층 구조의 장점을 모두 가짐
    • 단점
      • 클래스와 패키지 구조가 더 많아짐

 

https://post.dooray.io/we-dooray/tech-insight-ko/back-end/4349/

 

 

✔️ 아키텍처가 애매할 때 판단 기준

  1. 필요한 시스템을 만들고 유지보하는 데 투입되는 인력 최소화에 유리한가?
  2. 소스 코드 의존성이 안쪽으로, 고수준의 정책을 향하고 있는가?
  3. 세부 사항이 변경되어도 도메인에 변경이 없는가?
  4. 테스트하기 쉬운가?
  5. 각각의 아키텍처 원칙들을 잘 지키고 있는가?

 


참고 👇

https://post.dooray.io/we-dooray/tech-insight-ko/back-end/4349/

 

클린 아키텍처 애매한 부분 정해 드립니다. - Dooray! POST(두레이 블로그)

백앤드 %

post.dooray.io

 

반응형

'Architecture' 카테고리의 다른 글

멀티 모듈 프로젝트  (0) 2023.03.21