모놀리식 vs 마이크로서비스
아래 내용을 요약하면 컨테이너 환경으로 마이크로서비스 아키텍처를 구성해 설계, 운용 비용을 감소하고 생산성을 향상시켜라.
모놀리식 아키텍처 | 마이크로 서비스 |
---|---|
큰 목적이 있는 서비스 또는 애플리케이션에 여러 기능이 통합된 구조 | 개별 기능을 하는 작은 서비스를 각각 개발해 연결 |
초기 단계에서 설계하기 용이하며 개발이 좀 더 단순하고 코드관리가 간편 | 독립적으로 동작할 수 있는 완결된 구조 |
운영 과정에서 다른 서비스에 영향을 미칠 가능성이 있음 | 영향을 미칠 가능성이 줄어들음 |
점점 성장해 기능이 추가될수록 단순했던 서비스 간의 관계가 매우 복잡해질 수 있음 | 관계가 매우 유연함 |
확장에 비효율적 | 특정 서비스 확장이 가능 |
모놀로식 아키텍처로 구현을 시작하다 시스템이 섲아하고 기능이 늘어나면 마이크로 서비스 아키텍처로 전환 규모가 크지 않다면 모놀리식 아키텍처를 선호 소규모 프로젝트라도 마이크로 서비스 아키텍처로 설계하면 기능에 집중한 안정적인 서비스를 구현할 수 있고, 구현된 서비스를 재사용할 수 있으며 다른 서비스와 연결해 구조화하기 때문에 장기적으로 볼 때 유지보수 측면에서 매우 유리
컨테이너 환경에서 제공하는 컨테이너는 마이크로서비스 아키텍처의 서비스와 1:1로 대응 설계, 운용 비용이 감소하고 생산성이 향상된다.
컨테이너 인프라 환경
- 컨테이너
- 컨테이너 관리
- e.g. k8s, Docker Swarm, Mesos, Nomad
- 개발 환경 구성 및 배포 자동화 (=CI & CD)
- e.g. Jenkins, Bamboo, Github Action, Teamcity
- 모니터링
- e.g. (Prometheus + Grafana), (DataDog, InfluxDB, New Relic) + (Kibana, Chronograf)