Recent Posts
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Today
Total
250x250
05-08 10:19
관리 메뉴

호빵

MSA(MicroService Architecture) 본문

etc/etc

MSA(MicroService Architecture)

만두는정말맛있어 2024. 1. 23. 10:01

MSA란?

1. 개념

- 작고, 독립적으로 배포 가능한 각각의 기능을 수행하는 여러 개의 서비스로 구성된 프레임워크, 이것들을 조합하여 비즈니스 어플리케이션을 개발하는 아키텍처

- 완전히 독립적으로 배포가 가능하고 다른 기술 스택이 사용 가능한 단일 사업 영역에 초점을 둠

- SOA(Service Oriented Architecture)의 특징을 주로 가짐

 

 

2. 중요성

- 비즈니스 변화에 민첩하고 능동적으로 대응이 가능한 디지털 혁신 필요

- 기존의 Monolithic Architecture는 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어 있는 형태이기 때문에, 일정 규모 이상의 서비스에서는 한계를 보임

Monolithic Architecture의 단점

부분 장애가 전체 서비스의 장애로 확대될 수 있음
전체 시스템 구조 파악이 어려움

부분적인 Scale-out 방식이 어려움
서비스의 변경이 어렵고, 수정 시 장애의 영향도 파악이 힘듦
빌드 시간 및 테스트, 배포 시간이 오래 걸림
한 프레임워크와 언어에 종속적임

-> 이러한 단점들을 보완하기 위해 온 프레미스 서버 기반의 Monolithic Architecture에서 이제는 클라우드 환경을 이용하여 서버를 구성하는 MicroService Architecture로 많은 서비스들이 전환되고 있음

 

 

3. 특징 및 장점

1) API로만 상호작용 가능

- 서비스의 End-point를 API 형태로 외부에 노출하고, 실질적인 세부 사항은 모두 추상화함

- 내부의 구현 로직, 아키텍처와 프로그래밍 언어, 데이터베이스, 품질 유지 체계와 같은 기술적인 사항들은 서비스 API에 의해 철저하게 가려짐

 

2) 소규모 서비스

- 결합도와 응집도가 높은 업무를 마이크로 서비스 단위로 분리 구성

 

3) 독립적 서비스 운영

- 다른 서비스 기능과 분리되어 독립적으로 운영되어, 특정 서비스 장애 시 해당 서비스만 격리함으로써 나머지 전체 서비스는 정상적으로 운영

- 서비스의 부하에 따라 개별적으로 Scale-out 가능, 메모리나 CPU 절약 가능

 

4) 다양한 언어 및 기술 적용(폴리글랏)

- 마이크로서비스 별로 고유한 언어와 기술 요소 적용 가능

- 새로운 기술을 적용해 보고 다른 마이크로서비스로 빠르게 변경 가능

 

5) 유연성

- 시스템 전체의 중단 없이 필요한 부분만 빠르게 유지보수, 업데이트, 배포가 가능함

- 유연한 대응이 가능하고 실시간으로 요구사항을 반영할 수 있음

 

 

4. 단점

1) 설계 어려움

- 서비스가 모두 분산되어 있기 때문에 내부 서비스 통신이 상대적으로 더 복잡할 수 있음

- 비즈니스에 대한 DB를 가지고 있는 서비스도 각각 다르기 떄문에 통신 장애나 서버 부하가 있을 경우 어떻게 트랜잭션을 유지할 지 결정하고 구현해야 함

2) 통합 테스트가 어려움

- 개발 환경과 실제 운영환경을 동일하게 설정하여 테스트하는 것이 쉽지 않음

- 실제 운영환경에 대해 배포하는 것이 쉽지 않음, 서비스 1개를 재배포한다고 하면 다른 서비스들과의 연계가 정상적으로 이루어지고 있는지도 확인해야 함

3) 구축 기간 및 비용에 대한 불확실성

- 기업 입장에서는 아직 MSA 전문 지식을 갖춘 인재들이 확보되지 않아 내부 경험이 부족함

 

 

5. 기본 구조

- API Gateway를 통해 각 서비스 접근

- 단위 서비스별로 구분되며, 각 서비스는 자체적인 개발언어로 구현 가능

- 단위 서비스별로 자체 Database를 보유하며, 용도에 따라 자체적인 DBMS를 이용 가능

- 서비스 간의 호출은 REST API를 통해 느슨하게 결합

 

728x90

'etc > etc' 카테고리의 다른 글

DX  (1) 2024.01.29
NTP (Network Time Protocol)  (0) 2024.01.24
가상화 프로그램 / 가상 머신  (3) 2024.01.23
가상화(Virtualization)  (1) 2024.01.23
정규 표현 식 (RegEx)  (1) 2022.12.19