[CS] MSA(Microservice Architecture)란 무엇인가?

2024. 4. 27. 16:03· Computer Science(CS)
목차
  1. MSA란?
  2. 모놀리식 아키텍쳐 vs 마이크로 아키텍처
  3. 모놀리식 아키텍쳐(Monolithic Architecture)
  4. 마이크로 아키텍처(Microsercie Architecture)
  5. MSA 아키텍처의 구성요소
  6. 참고 사이트

MSA란?

마이크로 서비스 아키텍처(MSA)란 작고 독릭적인 서비스들의 집합으로 구성된 애플리케이션 구조를 말한다.
즉, 하나의 애플리케이션을 구분 가능한 여러 개의 작은 서비스로 나눠 사용잘의 요청을 처리하는 구조이다.

MSA는 하나의 큰 어플리케이션을 여러개의 작은 어플리케이션으로 쪼개 변경과 조합이 가능하도록 만드는 것으로
작은 레고 블록을 조립해 최종 결과물을 만드는 형태라고 볼 수 있다.

모놀리식 아키텍쳐 vs 마이크로 아키텍처

모놀리식 아키텍쳐(Monolithic Architecture)

전통적인 개발 상식으로 하나의 프로젝트에 모든 기능을 포함하는 방식을 말한다.
모놀리식 아텍처는 전체 애플리케이션을 묶어서 개발하기 때문에, 여러개의 비지느스 로직이 추가 되면 코드베이스가 커지는 구조이다.
코드 베이스가 커질수록 개발 및 배포에 복잡성이 증가하게 된다.

출처 : https://www.suse.com/c/rancher_blog/microservices-vs-monolithic-architectures/

모놀리식 아키텍처의 장점

  • 초기 개발에 유리하며 빠르게 프로토 타입을 개발할 수 있다.
  • 필요한 모든 기능을 한번만 호출하기 때문에 복잡한 통신 없이 직접 사용할 수 있다.

모놀리식 아키텍처의 단점

  • 코드 베이스가 커질수록 복잡해지고 유지관리 및 확장이 어려워진다.
  • 일부 기능을 수정하거나 업데이트를 하려면 전체 애플리케이션을 재배포해야한다.

모놀리식 아키텍처를 사용하기에 적합한 상황

  • 간단한 소규모 프로젝트를 진행할 때
  • 프로토 타입 또는 단기 프로젝트를 진행할때

마이크로 아키텍처(Microsercie Architecture)

MSA로 구성된 애플리케이션의 경우 전체 시스템이 분산되어 있어 개발, 배포가 독립적으로 가능하고 확장성과 유지관리가 용이하다.
MSA는 각 서비스별 소스 코드 수정이 쉽고, 수정한 서비스만 배초가 가능하며 배포시에 서비스 중단이 없다.
또한 장애 발생시에 전체 장애로 확장될 가능성이 적다.

출처 : https://www.suse.com/c/rancher_blog/microservices-vs-monolithic-architectures/

마이크로 아키텍처의 장점

  • 서비스 간 독립성으로 인해 확장성과 유연성이 높아진다.
  • 요구 사항 처리시 모놀리식에 비해 빠른 대처가 가능하다.
  • 기능 고립성이라 특징 때문에 일부 서비스가 실패하더라도 전체 시스템에 큰 영향을 미치지 않는다.
  • 서비스 별 개별 배포가 가능하기 때문에 배포시 전체 서비스의 중단이 없다.
  • 장애가 전체 서비스 장애로 확장된 가능성이 적으며 부분적 장애에 대한 격리가 수월하다.
  • 리소스를 보다 효율적으로 사용할 수 있다.

마이크로 아키텍처의 단점

  • 서비스 간 통신이 필요하며, 서로 간 연결 구축 및 관리의 복잡성이 증가한다.
  • 초기 개발 및 통신 등에 시간이 소요된다.
  • 서비스가 분리 되어 있기 때문에 테스트와 트랜잭션의 복잡도가 증가하고 많은 자원을 필요로 한다.
  • 데이터가 여러 서비스에 걸쳐 분산되기 때문에 한번에 조회가 업렵고 데이터의 정합성 또는 관리가 어렵다.
  • 설계가 모놀리식에 비해 상당히 복잡하며 어렵다.

마이크로 아키텍처를 사용하기에 적합한 상황

  • 대규모 및 복잡한 프로젝트를 진행할 때
  • 시스템을 독립적으로 개발하고 확장해야 하는 경우일 때

MSA 아키텍처의 구성요소

MSA 아키텍처를 구성하는 요소는 아래와 같다.

  1. Config Management: MSA 구조는 서비스의 재빌드/재부팅 없이 설정사항을 반영합니다.
  2. Service Discovery: 쿠버네티스 기능을 통해 여러 개의 서비스 상태를 파악할 수 있고, 서비스 검색 및 등록 등 관리가 용이합니다.
  3. API Management: API 게이트웨이는 외부 요청과 내부 서비스 간 통신을 관리합니다. 클라이언트 접근 요청을 일원화합니다. 
  4. Centralized Logging: 서비스 별로 로그가 나눠져있는 가운데, 이 로그를 중앙 집중하여 한 곳에서 관리할 수 있습니다.
  5. Distributed Tracing: 마이크로서비스 간의 호출을 추적합니다. 
  6. Centralized Monitoring: 여러 서비스의 정보를 중앙집중하여 복잡성을 줄이고 관리를 쉽게 합니다.
  7. Resillience & Fault Tolerance: MSA 구조에서 한 서비스의 오류가 다른 서비스에 파급 효과를 발생시키지 않도록 하기 위한 계단식 실패 방지 구조입니다. 
  8. Auto Scaling & Self Healing: 부하 발생 시 자동 스케일 아웃 설정이 가능하고, 서비스 장애시 복구 자동화를 통해 서비스 관리를 효율적으로 할 수 있습니다.

출처 : https://metanetglobal.com/bbs/board.php?bo_table=tech&wr_id=38

참고 사이트

 

[MSA] 마이크로서비스 아키텍처(MSA)란 뭘까?

마이크로서비스 아키텍처(MSA)는 작고 독립적인 서비스들의 집합으로 구성된 애플리케이션 구조이다 이번 포스팅에서는 마이크로서비스 아키텍처(Microservice Architecture)와 모놀리식 아키텍처(Monol

mozzi-devlog.tistory.com

 

 

Metanet

성공하는 기업을 위한 Digital Business Platform, 메타넷 그룹 홈페이지입니다.

metanetglobal.com

 

 

MSA 제대로 이해하기 -(1) MSA의 기본 개념

lego-708086_1920.jpg 마이크로 서비스 아키텍쳐를 한마디로 다음과 같이 표현할 수 있습니다. "하나의 큰 어플리케이션을 여러개의 작은 어플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아

velog.io

 

 

Microservices vs. Monolithic Architectures

Enterprises are increasingly pressured by competitors and thei...

www.suse.com

 

'Computer Science(CS)' 카테고리의 다른 글

[CS-Linux] 리눅스 시스템 모니터링 명령어  (1) 2024.04.25
[CS-Linux] systemd, systemctl 그리고 chmod, chown  (0) 2024.04.25
[CS] nslookup, ping, talnet 그리고 tracert  (0) 2024.04.25
[CS] curl 와 Http 테스트  (0) 2024.04.25
[CS] SSH 와 ifconfig  (0) 2024.04.25
  1. MSA란?
  2. 모놀리식 아키텍쳐 vs 마이크로 아키텍처
  3. 모놀리식 아키텍쳐(Monolithic Architecture)
  4. 마이크로 아키텍처(Microsercie Architecture)
  5. MSA 아키텍처의 구성요소
  6. 참고 사이트
'Computer Science(CS)' 카테고리의 다른 글
  • [CS-Linux] 리눅스 시스템 모니터링 명령어
  • [CS-Linux] systemd, systemctl 그리고 chmod, chown
  • [CS] nslookup, ping, talnet 그리고 tracert
  • [CS] curl 와 Http 테스트
나무늘보Programmer
나무늘보Programmer
게으른 개발자가 공부하고 성장하는 과정을 기록하는 블로그 입니다.
나무늘보Programmer
게으른 개발자의 개발일기
나무늘보Programmer
전체
오늘
어제
  • 분류 전체보기 (71)
    • 수학 (0)
      • 확률과 통계 (0)
    • Computer Science(CS) (8)
      • 혼자 공부하는 컴퓨터 구조 + 운영체제 (1)
      • Network (0)
    • 프로그래밍 (57)
      • Python (8)
      • Java (1)
      • C++ (0)
      • HTML (13)
      • CSS (13)
      • JavaScript (19)
      • DB (1)
      • Spring (1)
    • 머신러닝&딥러닝 (0)
      • Computer Science(CS) (0)
      • 인공지능 (0)
      • Paper Review (0)
    • BootCamp(OZ Coding School) (3)
    • TroubleShooting (1)
    • SandBox (0)
    • Project (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
나무늘보Programmer
[CS] MSA(Microservice Architecture)란 무엇인가?
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.