아키텍처 스타일

ParkIsComing·2024년 3월 18일

배포

목록 보기
2/4

레이어드 아키텍처

특징

  • 관심사의 분리
  • 아키텍처 결정 사항 : 레이어의 개방 및 폐쇄 여부

레이어드 아키텍처 vs MVC

레이어트 아키텍처 != MVC

프레젠테이션 레이어를 구축하기 위한 아키텍처가 MVC
프레젠테이션 레이어 부분이 Controller, 클라이언트에게 보이는 부분이 View인 것은 맞으나 Model은 프레젠테이션 아래 레이어가 아님
프레젠테이션 레이어 아래 레이어는 MVC가 아닌 레이어드 아키텍처로 설명되는 게 맞다

파이프라인 아키텍처

출처 : 제타위키 파이프 필터 패턴

특징

  • 파이프와 필터 두 요소로 구성
    • 파이프 : 한 소스에서 입력을 받아 다른 소스로 출력을 내는 필터 간 통신 채널
    • 필터
      • 한 가지 태스크를 수행
      • self-contained(그 자체만으로도 자신의 기능을 다 할 수 있음) && stateless
      • 다른 필터와 독립적
  • 단방향, 단순, 필터의 다양한 조합 가능
  • 필터의 종류
    • Producer : 파이프라인의 시작점
    • Transformer : 입력을 받아 일부 또는 전체를 변환한 후 전달 (=map)
    • Tester : 기준(criteria)에 대한 테스트 후 결과 생산 (=reduce)
    • Consumer : 파이프라이의 종착점. 데이터베이스 저장이나 화면 출력이 이루어짐.

서비스 기반 아키텍처(SOA)

특징

  • 유연성 있는 대규모 분산 레이어 구조
  • 각 서비스는 비즈니스 기능을 제공하며, 플랫폼과 언어를 넘나들며 서로 통신 가능
  • 중앙 공유 데이터베이스 사용

기본적인 SOA로부터 파생된 다양한 변형들이 존재한다.

  • 위의 그림과는 다르게 UI도 여러 개로 분리할 수 있다.(단일 모놀리식 유저 인터페이스, 도메인 기반 유저 인터페이스, 서비스 기반 유저 인터페이스)
  • 데이터베이스도 여러 개로 분리 가능하다.
    • 단, 각 db에 있는 도메인 데이터를 다른 도메인의 서비스가 필요하지 않도록 설계해야 한다.
    • 조회용 db를 분리한다면 이것이 CQRS..

이벤트 기반 아키텍처

  • 확장성이 뛰어난 고성능 애플리케이션 개발에 널리 쓰임

  • 분산 아키텍처 환경에서 상호 간 결합도를 낮추기 위해 비동기 방식으로 메시지를 전달하는 패턴 -> message broker와 함께 사용

토폴로지

중재자 토폴로지

  • 이벤트의 흐름을 관리하는 별도의 중재자가 존재
  • 이벤트는 사건이 아니라 커맨드(일어나야 할 일)
  • 여러 단계의 과정을 중재자를 통해 조율할 필요성이 있으면 일반적으로 사용
  • 동시에 처리하지 않거나 실행 전에 처리해야 할 요소가 있으면(linear한 흐름) 사용하는 토폴로지
  • 장점
    • 오케스트레이션
    • 에러 처리 용이
  • 단점
    • 확장성
    • 중재자가 병목 지점
    • 커플링으로 성능 저하

브로커 토폴로지

  • 큐나 중재자 없이 이벤트와 응답을 직접적으로 연관시키고자 할 때 사용
  • 이벤트(사건)에 액션이 반응하는 방식으로 진행
  • 장점
  • 확장성
  • 단점
    • 트랜잭션 통제가 어려움
    • 교착 상태나 데이터 비일관성이 생길 수 있음
    • 에러 처리 어려움

마이크로서비스 기반 아키텍처

  • 분산 아키텍처
  • 여러 개의 서비스간의 연계를 통해 시스템을 구축하는 SOA의 범주에 있음
  • 클라우드 인프라 기반
  • 재사용 보다 중복을 강조(db의 격리를 위해)
  • 일관성을 위한 이벤트 기반 아키텍처가 필요
  • smart endpoints and dumb pipes (마이크로서비스가 자체 endpoint를 보유해야 하며, 이러한 메시지를 전달하는 상부구조(API 레이어)는 가벼워야 한다)

MSA 패턴

  • 인프라 관련
    • DevOps 인프라
    • 가상 머신
    • 컨테이너
    • 컨테이너 오케스트레이션
  • 플랫폼 관련
    • 라우팅/로드밸런스
    • 인증/인가
    • 서비스 디스커버리
    • API 게이트웨이
    • Config
    • BFF (BackEnd For FrontEnd)
    • 서킷 브레이크
    • 로깅
    • 모니터링
    • 추적
    • 서비스 메시
  • 애플리케이션 관련
    • Micro Frontend
    • 저장소 격리
    • 동기 통신 / 비동기 통신
    • SAGA : 분산 환경에서 원자성(atomicity)을 보장하는 패턴
    • CQRS
    • API 조합
    • Event Sourcing

0개의 댓글