MSA란?
마이크로 서비스 아키텍처(MSA)란 작고 독릭적인 서비스들의 집합으로 구성된 애플리케이션 구조를 말한다.
즉, 하나의 애플리케이션을 구분 가능한 여러 개의 작은 서비스로 나눠 사용잘의 요청을 처리하는 구조이다.
MSA는 하나의 큰 어플리케이션을 여러개의 작은 어플리케이션으로 쪼개 변경과 조합이 가능하도록 만드는 것으로
작은 레고 블록을 조립해 최종 결과물을 만드는 형태라고 볼 수 있다.
모놀리식 아키텍쳐 vs 마이크로 아키텍처
모놀리식 아키텍쳐(Monolithic Architecture)
전통적인 개발 상식으로 하나의 프로젝트에 모든 기능을 포함하는 방식을 말한다.
모놀리식 아텍처는 전체 애플리케이션을 묶어서 개발하기 때문에, 여러개의 비지느스 로직이 추가 되면 코드베이스가 커지는 구조이다.
코드 베이스가 커질수록 개발 및 배포에 복잡성이 증가하게 된다.
모놀리식 아키텍처의 장점
- 초기 개발에 유리하며 빠르게 프로토 타입을 개발할 수 있다.
- 필요한 모든 기능을 한번만 호출하기 때문에 복잡한 통신 없이 직접 사용할 수 있다.
모놀리식 아키텍처의 단점
- 코드 베이스가 커질수록 복잡해지고 유지관리 및 확장이 어려워진다.
- 일부 기능을 수정하거나 업데이트를 하려면 전체 애플리케이션을 재배포해야한다.
모놀리식 아키텍처를 사용하기에 적합한 상황
- 간단한 소규모 프로젝트를 진행할 때
- 프로토 타입 또는 단기 프로젝트를 진행할때
마이크로 아키텍처(Microsercie Architecture)
MSA로 구성된 애플리케이션의 경우 전체 시스템이 분산되어 있어 개발, 배포가 독립적으로 가능하고 확장성과 유지관리가 용이하다.
MSA는 각 서비스별 소스 코드 수정이 쉽고, 수정한 서비스만 배초가 가능하며 배포시에 서비스 중단이 없다.
또한 장애 발생시에 전체 장애로 확장될 가능성이 적다.
마이크로 아키텍처의 장점
- 서비스 간 독립성으로 인해 확장성과 유연성이 높아진다.
- 요구 사항 처리시 모놀리식에 비해 빠른 대처가 가능하다.
- 기능 고립성이라 특징 때문에 일부 서비스가 실패하더라도 전체 시스템에 큰 영향을 미치지 않는다.
- 서비스 별 개별 배포가 가능하기 때문에 배포시 전체 서비스의 중단이 없다.
- 장애가 전체 서비스 장애로 확장된 가능성이 적으며 부분적 장애에 대한 격리가 수월하다.
- 리소스를 보다 효율적으로 사용할 수 있다.
마이크로 아키텍처의 단점
- 서비스 간 통신이 필요하며, 서로 간 연결 구축 및 관리의 복잡성이 증가한다.
- 초기 개발 및 통신 등에 시간이 소요된다.
- 서비스가 분리 되어 있기 때문에 테스트와 트랜잭션의 복잡도가 증가하고 많은 자원을 필요로 한다.
- 데이터가 여러 서비스에 걸쳐 분산되기 때문에 한번에 조회가 업렵고 데이터의 정합성 또는 관리가 어렵다.
- 설계가 모놀리식에 비해 상당히 복잡하며 어렵다.
마이크로 아키텍처를 사용하기에 적합한 상황
- 대규모 및 복잡한 프로젝트를 진행할 때
- 시스템을 독립적으로 개발하고 확장해야 하는 경우일 때
MSA 아키텍처의 구성요소
MSA 아키텍처를 구성하는 요소는 아래와 같다.
- Config Management: MSA 구조는 서비스의 재빌드/재부팅 없이 설정사항을 반영합니다.
- Service Discovery: 쿠버네티스 기능을 통해 여러 개의 서비스 상태를 파악할 수 있고, 서비스 검색 및 등록 등 관리가 용이합니다.
- API Management: API 게이트웨이는 외부 요청과 내부 서비스 간 통신을 관리합니다. 클라이언트 접근 요청을 일원화합니다.
- Centralized Logging: 서비스 별로 로그가 나눠져있는 가운데, 이 로그를 중앙 집중하여 한 곳에서 관리할 수 있습니다.
- Distributed Tracing: 마이크로서비스 간의 호출을 추적합니다.
- Centralized Monitoring: 여러 서비스의 정보를 중앙집중하여 복잡성을 줄이고 관리를 쉽게 합니다.
- Resillience & Fault Tolerance: MSA 구조에서 한 서비스의 오류가 다른 서비스에 파급 효과를 발생시키지 않도록 하기 위한 계단식 실패 방지 구조입니다.
- Auto Scaling & Self Healing: 부하 발생 시 자동 스케일 아웃 설정이 가능하고, 서비스 장애시 복구 자동화를 통해 서비스 관리를 효율적으로 할 수 있습니다.
참고 사이트
[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 |