MSA는 무엇일까

귤쳥·2022년 9월 14일
0
post-thumbnail

MSA?

Micro Service Architecture

→ 작은단위의 서비스로 구동되도록 구성하고 관계를 정의하는 아키텍쳐

장점

  • 복잡성이 낮다 서비스의 모듈화 → 유지보수가 쉽고 개발서비스의 개발이 빠르다
  • 독립적인 배포, 수정이 용이
  • 개별 scale-out 가능

    scale out : 서버대수를 늘려서 처리능력 향상
    scale up : 서버자체를 증강(더빠른 cpu, 많은 RAM)

단점

  • 트랜잭션 일관성 유지 어려움
  • 통신복잡성이 높다 (서비스의 분산으로 내부 시스템 통신 어려움)
  • 배포시 다른 서비스와의 연계 테스트가 필요

특징

  • api로만 msa와 서비스 상호작용 가능 → 민첩하고 유연한 설계 → api만 외부에 노출하고 세부사항은 추상화한다. SOA의 특징을 공통으로 가짐

    💡 SOA(Service Oriented Architecture)
    → 서비스 단위로 개발, 개발된 서비스 공유
    ⇒ 재가용성,유연성을 통한 비용절감
    (차이점 : MSA는 서비스간의 결합도를 낮춰서 변환에 능동적으로 대응하고자)

  • 다양한 언어로 구성 가능
    • 추상화로 인해 서로 다른 아키텍쳐 적용가능

cf. 모놀리식(Monolithic) 아키텍쳐

→ 통짜구조로 하나의 구조안에 대부분의 기능이 포함

장점

  • 서비스 개발 시 동일한 개발툴 사용
  • 배포, 테스트가 간단 (한개의 테스트로 개발이 쉬움, 환경설정이 간단함)
  • 각 컴포넌트를 함수로 호출 → 성능제약이 적음, 운영관리가 용이하다.

단점

  • 빌드,테스트 시간이 길다. → 작은 수정에도 시스템 전체를 빌드해야 함
  • 선택적 확장 불가능 → 트래픽이 몰리면 전체를 확장해야
  • 하나의 서비스가 모든 서비스에 영향 → 서버 다운시 모든 서비스가 마비

아키텍쳐

  • Inner Architecture
    • 내부 서비스를 어떻게 잘 나누는가 ( ex. 쇼핑몰의 주문하기와 카트에 넣기를 같은 서비스로 넣을 것인가?)
    • DB access구조는? 서비스 내 API는? 에 대한 설계
  • Outer Architecture
    • 개별서비스가 개발, 배포, 실행되는 운영환경, 관리기능 제공
    • External Gateway(외부 요청 연결, 숨김, 정책, 권한관리) → 외부로부터 들어오는 접근을 내부구조를 드러내지 않고 처리하기 위함 → 권한, 정책관리, 서버 앞단에서 API엔드포인드 단일화 - 서버로 라우팅
    • Service Mesh(서비스간 통신) → 마이크로 서비스 구성요소간 네트워크 제어(안전하고 빠르게 추상화)

외에 container Management, Backing Service(message queue), Telemetry(서비스 모니터링), CI/CD Automation

참고 링크

https://velog.io/@tedigom/MSA-제대로-이해하기-1-MSA의-기본-개념-3sk28yrv0e

https://tech.kakao.com/2021/09/14/msa/

https://velog.io/@hwang95/MSA의-정의

profile
혼긱 CE의 이제 막 시작하는 코딩

0개의 댓글