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

박영준·2024년 3월 4일
0

CS

목록 보기
15/16

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

  • 시스템을 3계층으로 나눔

    • 프레젠테이션 계층 (화면 표현), 비즈니스 로직 계층 (비즈니스 개념, 규칙, 흐름제어), 데이터 엑세스 계층 (데이터 처리)으로 나눔

    • 상위 계층은 하위의 여러 계층을 모두 알 필요없이, 바로 밑의 근접 계층만 활용

    • 상위 계층이 하위 계층에 영향을 받지 않게 구성

  • 단방향성

    • 상위 계층이 하위 계층을 호출
  • 인터페이스 이용

    • 계층 간의 호출은 인터페이스를 통해 호출

    • 제어 흐름이 상위 계층에서 하위 계층으로 흐르게 되어서, 하위의 인터페이스가 상위 계층의 기능에 관여하게 됨

  • DIP(의존 역전 원칙)는 만족할 수 있지만(계층의 인터페이스로 인해)
    OCP(개방 폐쇄 원칙)는 만족하지 않음

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

  • 비즈니스 로직

    • 헥사고날 아키텍처의 경우, 비즈니스 로직이 핵심 영역
      레이어드 아키텍처의 경우, 비즈니스 로직이 데이터 엑세스 계층에 의존

      → 따라서, 데이터 엑세스 계층을 비즈니스 로직에 의존하도록 구조를 변경 (데이터 엑세스 계층의 인터페이스를 비즈니스 로직에서 정의하게 함)

    • 내부 영역 순수한 비즈니스 로직을 표현하는 독립적인 영역

  • 외부 영역 인바운드 어댑터(외부 요청 처리), 아웃바운드 어댑터(외부와 연계)로 구성됨


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

profile
개발자로 거듭나기!

0개의 댓글