[MSA] 2. 아키텍처 종류

steve·2024년 2월 20일
0

Backend

목록 보기
9/17

개요

  • 아키텍처 종류를 알아 본다

아키텍처란?

  • 아키텍처의 개념
    • 아키텍처 특성(가용성, 신뢰성, 확장성, 보안, 민첩성 등)에 따라 설계 원칙이 결정된다.
    • 소프트웨어 공학은 경험기반의 학문이다.
    • 아키텍처 스타일은 기술의 변화 흐름을 반영함
  • 레이어드 아키텍처
    • 엔터프라이즈 업계에서 표준
    • 관심사의 분리 SoC
    • 프레젠테이션 = UI
    • 비즈니스 = 비즈니스 로직
    • 퍼시스턴스 = 데이터 저장처리
    • 프론트/백엔드 각각 레이어드 아키텍처를 정할 수 있다
    • 백엔드에서 아키텍처 설명한다고 할 때, MVC라고 하는 경우 Model이 데이터베이스 레이어라고 하는 케이스가 있지만 사실은 프레젠테이션레이어에 포함되는 의미로 데이터를 던져주는 개념이 맞다. 그리고 사실 요즘 백엔드 아키텍처로 MVC라 설명하지는 않음. 지금 기준으로는 컨트롤러/비즈니스/퍼시스턴스/데이터베이스가 맞음
  • 서비스 기반 아키텍처
    • 재사용성을 극대화 한 방법
    • 여러가지 서비스를 만들어놓고 조합해서 사용하는 방법
    • 유저 서비스, 주문 서비스, 공통 서비스, …
    • 일반적으로 모놀리식 데이터베이스 공유하며, 데이터베이스 커플링 문제, 스키마 변경 시 변경 영향도 문제 발생
    • MSA도 서비스 기반 아키텍처의 하나다
    • 흔히 SoA가 실패했다고 하는 것은 벤더사가 제공하는 인프라 시스템의 엔터프라이즈 서비스 버스(오케스트레이션 엔진)에 부하가 생길 수 밖에 없는 구조로 갔기 때문에(서비스기반의 재사용성은 의존성이 높다는 의미이고 영향도 때문에 변경이 어려움) 실패했다는 것임
  • 이벤트 기반 아키텍처 스타일 등
    • 확장성이 뛰어난 고성능 애플리케이션 개발에 널리 쓰이는 비동기 분산 아키텍처
    • 확장성 측면에서 효율적이지만 트랜잭션 통제가 어렵고 데이터 비일관성, 에러 처리가 어려움
  • 공간 기반 아키텍처
    • 대규모 트래픽이 몰리는 주문이나 티켓팅 시스템에서 사용
    • 사용자가 몰리는 부분만 확장을 쉽게 할 수 있음
    • 여러 처리장치를 두어 캐싱처리를 하며 서로간의 데이터 펌프 파이프라인을 구축하여 성능을 올림. 대규모 트래픽이기 때문에 데이터 일관성이 안맞을 수 있어서 그부분은 감안하여 나중에 처리할 수 밖에 없다. (예: 아마존에서 상품 주문했으나 재고가 소진되어 소정의 보상포인트와 함께 다른 상품 추천하는 안내메일을 보내는 시스템, 주문 결제 완료했을때 구매 확정 메일이 좀 나중에 오는 것)
  • 마이크로서비스 아키텍처
    • 고도의 디커플링을 추구(의존성을 낮춤)

0개의 댓글

관련 채용 정보