모놀리식 아키텍처 VS 마이크로 서비스 아키텍처
* 공통점 : 시스템 전체가 하나의 목적(서비스)을 지향하며 개발됨
* 차이점 : 모놀리식 아키텍처 대비 마이크로 서비스는 개별 기능을 작은 독립된 서비스로 개발하여 연결함
* 아키텍처 선택 기준
- 서비스의 확장성이 많은 AWS 등과 같은 경우에는 마이크로서비스 아키텍처로 개발됨
- 소규모의 폭포수 방식의 개발에서는 모놀리식 아키텍처로 주로 개발됨
* 마이크로서비스 아키텍처(MSA) 적용 기업
- 금융 : CapitalOne, Citibank, Nasdaq, Wells Fargo, Goldman Sachs, Lending Club
- 커머스 : Gilt, eBay, Amazon, Walmart, Groupon, Autoscout24, 쿠팡, GS홈쇼핑
- 인터넷서비스 : Twitter, Soundcloudm, Karma, Dropbox, SK플래닛, Google
- 미디어/엔터테인먼트 : Netflix, Disney, Guardian
- O2O : Uber, Hailo, Instacart, Airbnb
모놀리식 아키텍처(monolithic architecture)란?
* 정의 : 하나의 큰 목적이 있는 서비스 혹은 애플리케이션에 여러 기능이 통합돼 있는 구조
* 배포방식 : 전체 어플리케이션을 하나의 통합된 패키지로 개발, 배포하는 방식
* 장점 :
(1) 소프트웨어가 하나의 결합된 코드로 구성되기 때문에 초기 단계에서 설계하기 용이함
(2) 개발이 좀 더 단순하고 코드 관리가 간편함
(3) 배포, 테스트, 표준화된 방식으로 관리 용이
* 단점 :
(1) 서비스를 운영하는 과정에서 수정이 많을 경우, 수정한 부분과 연관된 다른 서비스 부분도 수정이 필요할 수 있음
(2) 서비스가 점점 성장해 기능이 추가될수록 서비스 간의 관계가 매우 복잡해질 수 있음
(3) 확장성(Scalability) 미흡
* 아키텍처 도식화
* 아키텍처 예시
마이크로서비스 아키텍처(Microservice Architecture)란?
* 정의 : 어플리케이션이 여러 개의 작고 독립적으로 배포 가능한 서비스로 구성되어 다른 서비스들도 독립적으로 동작할 수 있는 완결된 구조
* 배포방식 : 개별 서비스 단위로 개발, 배포하는 방식
* 장점 :
(1) 서비스를 재사용하기 용이함
(2) 서비스 확장성이 높음
(3) 서비스 단위 빠른 개발 및 배포 용이
(4) 서비스 단위 고효율, 저비용 Scale-out 구조
* 단점 :
(1) (전체 기준) 테스트, 배포, 관리의 복잡도가 높음
(2) 각 서비스가 서로 유기적으로 통신하는 구조로 설계되어 있기 대문에 네트워크를 통한 호출 증가로 성능에 영향을 줄 수 있음, 분산 시스템 환경에서 transaction 보장 필요
* 아키텍처 도식화
* 아키텍처 예시
* 기술 프레임워크
(1) Inner Architecture : 개별 마이크로서비스 구축을 위한 아키텍처, 개발 생산성과 배포 유연성을 높임.
(2) Outer Architecture : 개별 마이크로서비스가 개발, 배포, 실행되는 운영환경과 분산된 마이크로서비스의 관리 기능
* 오픈소시 지원도구
- Asgard : 애플리케이션 배포 자동화 및 클라우드 관리 툴
- Hystrix : 서비스 가동성와 오류 모니터링 및 관리
- Eureka : 서비스 등록 및 검색
- Ribbon : Client-side 로드 밸런싱
* 적용 주의사항
(1) 마이크로서비스 단위 설정이 중요함. 너무 크면 MSA의 장점에 대한 효과가 미비하고 너무 작으면 트랜잭션 관리의 어려움이 있음
[참조]
1. 컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커, 길벗
2. https://blog.lgcns.com/1278
3. https://blog.lgcns.com/1281
'인프라' 카테고리의 다른 글
간단한 설치 - window10 에 minikube 설치 및 확인, 실행하기 (2) | 2022.11.30 |
---|