devlos
Devlos Archive
devlos
전체 방문자
오늘
어제
09-02 16:11

최근 글

  • 분류 전체보기 (106)
    • 프로젝트 (1)
    • MSA 설계 & 도메인주도 설계 (9)
    • 클라우드 컴퓨팅 & NoSQL (86)
      • [Cilium Study] 실리움 스터디 (7)
      • [KANS] 쿠버네티스 네트워크 심화 스터디 (12)
      • [T101] 테라폼 4기 스터디 (8)
      • [CICD] CICD 맛보기 스터디 (3)
      • [T101] 테라폼 기초 입문 스터디 (6)
      • [AEWS] Amazon EKS 워크숍 스터디 (7)
      • [PKOS] 쿠버네티스 실무 실습 스터디 (7)
      • Kubernetes (13)
      • Docker (7)
      • Redis (1)
      • Jenkins (3)
      • Terraform (1)
      • Ansible (4)
      • Kafka (1)
    • 프로그래밍 (7)
      • Spring Boot (5)
      • Broker (1)
    • 성능과 튜닝 (1)
    • ALM (0)
    • 기타 (2)

인기 글

태그

  • 테라폼
  • terraform
  • MSA
  • ddd
  • t101 4기
  • 도커
  • CloudNet@
  • docker
  • 쿠버네티스
  • DevOps
  • 데브옵스
  • kOps
  • PKOS
  • Kubernetes
  • 쿠버네티스 스터디

티스토리

최근 댓글

hELLO · Designed By 정상우.
devlos
MSA 설계 & 도메인주도 설계

[MSA] 레이어드 아키텍처 vs 헥사고날 아키텍처 vs 클린 아키텍처 요약

MSA 설계 & 도메인주도 설계

[MSA] 레이어드 아키텍처 vs 헥사고날 아키텍처 vs 클린 아키텍처 요약

2022. 1. 17. 18:09
반응형

데이터베이스 중심 아키텍처의 문제점

  • 관심사의 분리 원칙이나, 비즈니스 로직을 표현하는 객체 모델보다 데이터 질의 구문인 SQL문에 들어있는 경우가 대부분
  • 비즈니스 로직을 처리하는 자바 코드는 10줄 미만인데, 100~1000줄이 넘는 SQL문 또는 프로시저로 가득 차 있음
  • 시간이 지날수록 코드의 가독성보다 쿼리 성능을 위한 SQL 문의 최적화에 우선순위를 두어서 작성한 사람 이외에는 소스코드를 이해할 수 없는 수준이 됨

 

애플리케이션의 유지보수성

애플리케이션의 유지보수성이 높다는 의미는 특정 개인에 의존하기 보다 어느 누구라도 손쉽게 애플리케이션을 이해하고 유지보수할 수 있음을 의미

 

레이어드 아키텍처 vs 헥사고날 아키텍처 vs 클린 아키텍처


레이어드 아키텍처 (Layered Architecture)

  • 시스템을
    | 프레젠테이션  계층 | (화면 표현),
    | 비즈니스 로직 계층 | (비즈니스 개념, 규칙, 흐름제어),
    | 데이터 엑세스 계층 | (데이터 처리)
    으로 나눔
  • 응집성을 높이고 의존도를 낮추기 위한 규칙
    1. 상위 계층이 하위 계층을 호출하는 단방향성 유지
    1. 상위 계층은 하위의 여러 계층을 모두 알 필요 없이 바로 밑의 근접 계층만 활용
    1. 상위 계층이 하위 계층에 영향을 받지 않게 구성
    1. 계층 간의 호출은 인터페이스를 통해 호출
  • 제어 흐름이 상위 계층에서 하위 계층으로 흐르게 되어 하위의 인터페이스가 상위 계층의 기능에 관여하게 됨
  • 이는 DIP는 만족할 수 있지만(계층의 인터페이스로 인해), OCP는 만족하지 않음

 

헥사고날 아키텍처(Hexagonal Architecture)

  • 애플리케이션은 비즈니스 로직이 핵심 영역
  • 레이어드 아키텍처는 비즈니스로직이 데이터 엑세스 계층에 의존
  • 데이터 엑세스 계층역시 비즈니스 로직에 의존하도록 구조를 변경 (데이터 엑세스 계층의 인터페이스를 비즈니스 로직에서 정의하게 함)
  • + 현대 백엔드 애플리케이션은 클라이언트 API, MQ(Message Queue), CMD(서비스 및 시스템간 통신)등 다양한 인터페이스가 필요하기 때문에, 이러한 역할을 할 수 있도록 구조를 정의
  • 헥사고날 아키텍처 = 포트 앤드 어뎁터 아키텍처 (Port and adapters architecture)

 

  • 영역의 구분
    • 내부 영역 순수한 비즈니스 로직을 표현하는 독립적인 영역
    • 외부 영역 인바운드 어댑터(외부 요청 처리), 아웃바운드 어댑터(외부와 연계)로 구성됨

클린 아키텍처 (Clean Architecture)

소프트웨어는 행위 가치와 구조 가치의 두 종류의 가치를 가지고, 구조 가치가 더 중요하다. 소프트웨어를 부드럽게 만드는 것이 구조 가치이기 때문이다.
- 로버트 C. 마틴

클린 아키텍처의 구조

  • 업무 규칙 : 사업적으로 수익을 얻거나 비용을 줄일 수 있는 규칙 또는 절차
  • 업무 규칙은 시스템으로 자동화 가능
    • 예1) 쇼핑몰의 물건을 사고 파는 규칙
    • 예2) 은행의 이자 계산 규칙
    • 예3) 도서대출 시스템의 대출/반납 규칙
  • 엔티티 : 핵심 업무 규칙은 보통 데이터를 요구하기 때문에 핵심 규칙과 데이터는 본질적으로 결합되어 있음. 그렇기 때문에 쉽게 객체로 만들 수 있음
  • 유스케이스 : 자동화된 시스템을 사용하는 처리 절차 (애플리케이션 업무 규칙)
  • 명확한 결합의 분리는 테스트 용이성, 개발 독립성, 배포 독립성을 강화 할 수 있음

 

반응형

'MSA 설계 & 도메인주도 설계' 카테고리의 다른 글

[DDD] 도메인 계층의 Structure  (2) 2022.02.08
[DDD] 인터페이스 계층과 응용 계층의 구현  (0) 2022.02.07
[DDD] 애그리거트란?  (0) 2022.02.06
[DDD] 도메인 주도 설계의 계층 분리에 관하여  (0) 2022.02.03
[MSA] MSA 기반 프로젝트 입문 후기 (Devlos feat. @Todo)  (1) 2022.02.02
    devlos
    devlos
    안녕하세요, Devlos 입니다. 새로 공부 중인 지식들을 공유하고, 명확히 이해하고자 블로그를 개설했습니다 :) 여러 DEVELOPER 분들과 자유롭게 지식을 공유하고 싶어요! 방문해 주셔서 감사합니다 😀 - DEVLOS -

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.