호빵
MSA(MicroService Architecture) 본문
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를 통해 느슨하게 결합
'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 |