Information/정보 및 기사 리뷰

MSA란 무엇일까? [세무민의 코딩 일기]

세기루민 2022. 3. 11. 09:19
728x90
이번 포스팅에서는 MSA에 대해 공부하는 내용을 적어보려고 합니다.

1. 모놀리식 아키텍처

  1. 개념
    • 모듈별로 개발한 뒤 개발 완료 시 웹 어플리케이션을 하나의 결과물로 패키징하여 배포하는 형태를 말한다.
    • 웹의 경우 .war로 파일을 말은 뒤 WAS에 배포하는 형태이다.
  2. 장점
    • war파일만 빌드하면 되서 간편합니다.
  3. 단점
    • CI(지속적인통합)와 CD(지속적인배포)가 어렵다.
    • 모듈 수정 시 다른 모듈이 사용 불가능한 상태가 발생한다.

2. 마이크로서비스

  • 소프트웨어 개발 기법 중 하나로 애플리케이션의 결합된 서비스의 모임으로 구조화하는 서비스이다.
  • 이는 서비스 지향 아키택처(SOA) 스타일의 일종이다.

3. SOA

  1. 개념
    • SOA란 서비스 지향 아키택처로 대규모 컴퓨터 시스템을 구축 시 소프트웨어 기능을 서비스로 판단하고 해당 서비스가 네트워크상에 연동하여 시스템 전체를 구축하는 방법론이다.
    • 이 방법은 비지니스 로직과 기술을 추상화하여 도메인간의 느슨한 결합을 유도한다.
  2. 특징
    • 동적으로 바인딩된다.
    • 독립된 모듈이다.
    • 플랫폼 간에 상호 운용이 가능하다.
    • 네트워크 주소 접근 가능한 인터페이스를 가진다.
    • 위치 투명성을 가진다.
    • 자가치유를 지원한다.

4. MSA?

GITHUB

  • 마이크로 서비스 아키텍처라고 한다.

  • 모놀리식 애플리케이션 형태에서 더 작고 상호 작용이 가능한 서비스 세트로 분할한 형태를 말한다.

  • 각 백엔드 서비스는 REST API를 노출하고 대부분의 서비스는 다른 서비스에서 제공하는 API를 사용합니다.

  • GITHUB

  • 각 서비스 인스턴스는 Docker 컨테이너입니다.

  • 컨테이너는 여러 cloud VM에서 실행됩니다.

  • 마이크로서비스 아키텍처 패턴은 애플리케이션과 데이터베이스 간의 관계에 상당한 영향을 미칩니다.

  • 단일 데이터베이스 스키마를 다른 서비스와 공유하되 각 서비스에 자체 데이터베이스 스키마가 존재한다.

  • 마이크로서비스의 이점을 얻기 위해서는 서비스당 데이터 베이스 스키마가 있어야 느슨한 결합이 보장되며
    이에 따라 데이터 중복이 존재하는 경우가 많다.

  • GITHUB

  • 각각의 서비스가 오직 자신과 상호작용하는 DB를 가지며 이에 따라 DB의 종류도 다르게 가져갈 수 있습니다.

5. 모놀리식과 MSA의 공통점

  • 어플리케이션을 실행하는 서버를 추가하여 수평적으로 확장하고 클라이언트에서 요청이 들어올 경우 중간에 로드 밸런서를 두어 스케일 아웃 방식으로 확장한다.
    • 스케일 아웃(scale-out) : 여러대의 서버로 나누어 일을 처리하는 방법
    • 스케일 업(scale-up) : 서버가 더 빠르게 동작하게 하기 위해 하드웨어의 성능을 올리는 방법
    • 로드 밸런서(load Balancer) : 스케일 아웃의 장점 중 하나로, 여러대의 서버에 균등하게 Traffic을 분산시켜주는 역할을 담당

6. MSA의 장점

  • 복잡성 문제를 다룹니다.
  • 아키텍처를 사용하면 해당 서비스에 중점을 둔 팀에서 각 서비스를 독립적으로 개발 가능하다.
  • 마이크로서비스 아키텍처 패턴을 통해 각 마이크로서비스를 독립적으로 배포할 수 있습니다.

ref. 참고자료

728x90