충분히 쌓여가는
MSA(MicroService Architecture) 본문
MSA(MicroService Architecture)
- 애플리케이션을 느슨히 결합된 서비스의 모임으로 구조화하는 서비스 지향 아키텍처(SOA) 스타일의 일종인 소프트웨어 개발 기법
- 한 가지 일만 수행하는 작은 애플리케이션
MSA 등장배경
- 모든 시스템의 구성요소가 한 프로젝트에 통합되어 있는 monolithic architecture(모놀리식 아키텍처)의 한계점을 극복하고자 등장
MSA 특징
- monolithic architecture의 문제를 해결함(모든 기능을 수행하는 애플리케이션을 구축)
- SRP(Single Responsibility Principle) 단일 책임원칙을 중요하게 봄
- 큰 문제들을 작은 문제로 분해 해결 -> 작게 나뉘어진 서비스가 독립적으로 역할 수행 -> 서비스간 같은 언어로 개발될 필요 없음
- 서비스 실패 시 ROLLBACK 매커니즘 -> 이전 버전으로 쉽게 돌아갈 수 있음
- 지속적인 통합(CI[continuous integration]) / 지속적인 배포(CD[continuous delivery]) / 자동화된 테스트가 필수적임
MSA 장점
- 분산형 개발: 개발 주기가 단축, 유연한 배포 가능 -> 출시 기간 단축
- 서비스가 독립적: 다른 서비스에게 영향을 주지 않음
- 서비스별 기술 도입 및 확장 자유로움
- 애플리케이션의 모듈화: 규모가 작기 때문에 우려사항이 줄어듦 -> 손쉬운 배포
- 다중 언어 지원(Polyglot) API를 사용 -> 향상된 개방성
- 하나의 애플리케이션을 여러 부분으로 분할했기 때문에 각 서비스 업데이트 및 개선 용이함
MSA 단점
- 각 서비스들은 API를 통해 통신 -> 네트워크 통신에 의한 오버헤드 발생
- 서비스별로 로그가 생성 -> 중앙 로그 모니터링이 존재하지 않음
- 하나의 프로젝트에 수많은 서비스들이 존재 -> 모든 서비스 모니터링 오버헤드 증가
- 하나의 서비스에서 다른 서비스를 호출 -> 장애 발생 시 경로 및 장애 추적이 힘듦
- 서비스가 분산 -> monolithic architecture 에 비해 상대적으로 많이 복잡함
monolithic architecture(모놀리식 아키텍처)
- 웹 프로그램을 개발하기 위해 모듈별로 개발 -> 개발 완료된 웹 애플리케이션을 하나의 결과물로 패키징하여 배포되는 형태
- 하나의 서비스 또는 애플리케이션이 하나의 거대한 아키텍처를 가질 때를 monolithic architecture라고 함
- 내부 요소 간의 의존성이 강함 -> 구조적인 결합이 강력하게 유지됨
- 하나의 강한 결합 구조를 지님 -> 통일성
- 비지니스 로직이 서비스에 최적화된 코드를 만들어내는데 집중 -> 복합적인 예외를 만들 수 있는 위험성 내포
monolithic architecture 장점
- 심플함: 개발, 빌드, 배포, 테스트가 용이함
- 개발 초기 단순한 아키텍처 구조와 개발에 용이함
- 서비스간 개발되어있는 환경이 같음 -> 단순함
- 고가용성 서버 환경 구축 가능
- End-to-End 테스트 용이함
monolithic architecture 단점
- 지속적인 통합(CI[continuous integration]), 지속적인 배포(CD[continuous delivery])가 어려움
- 모든 모듈이 하나의 프로세스에서 동작 -> 하나의 모듈이 수정되어, 서버를 올렸다가 내렸다 할 경우 다른 모듈도 그 동안 작동 불가능
- 프로젝트 규모가 커짐에 따라 애플리케이션 구동시간이 늘어나고 빌드, 배포 시간 길어짐
- 작은 수정사항이 있어도 전체를 다시 빌드하고 배포해야 함
- 유지보수 어려움
- 일부분의 오류가 전체적으로 영향을 미침
- 기능별로 알맞는 기술, 언어, 프레임워크 선택하기 어려움
서비스 지향 아키텍처(SOA)
- 서비스라는 소프트웨어 구성 요소를 사용해 비즈니스 애플리케이션을 생성하는 소프트웨어 개발 방식
End-to-End 테스트
- 사용자 중심으로 처음부터 끝까지 어플리케이션 흐름을 테스트하는 소프트웨어 테스트 방법 중 하나
참고사이트
AWS 서비스 지향 아키텍처 https://aws.amazon.com/ko/what-is/service-oriented-architecture/
레드헷 마이크로서비스 https://www.redhat.com/ko/topics/microservices/what-are-microservices
'IT > Computer Science' 카테고리의 다른 글
동기(Synchronous) / 비동기(Asynchronous) (0) | 2022.12.30 |
---|---|
OSI (Open System Interconnection) 7계층 (1) | 2022.12.30 |
프로토콜(Protocol) / OSI 7계층 (1) | 2022.12.29 |
HTTP와 HTTPS (0) | 2022.12.27 |
객체 지향 프로그래밍/절차 지향 프로그래밍 (1) | 2022.12.27 |