일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 자바8
- 오라클
- springboot
- Spring
- python
- 스프링시큐리티
- SQL 문제풀이
- 자바 스트림
- js
- LeetCode SQL
- mysql
- Leetcode
- SQL
- 스프링
- SQL프로그래머스
- kotlin 클래스
- 파이게임
- 코틀린 클래스
- oracle
- 프로그래머스
- pygame
- 스프링부트 채팅서버
- java8
- 스프링부트
- MSA
- javascript
- oauth2
- spring boot
- 자바스크립트
- 구글로그인
Archives
- Today
- Total
웅겹살의 프로그래밍 삼매경
[MSA] MSA(MicroService Architecture)란 무엇인가 본문
728x90
MSA란? 하나의 Application을 다수의 독립적인 Service로 구성하는 Architecture Style
- 각자 별도의 프로세스에서 실행되며 HTTP API와 같은 가벼운 매커니즘으로 통신하는 작은 애플리케이션
- 작은 서비스들은 각자의 비즈니스 기능을 담당, 완전 자동화된 절차에 따라 독립적으로 배포
- 각 서비스는 서로 다른 프로그래밍 언어나 서로 다른 데이터 저장 기술을 사용
MSA를 알아보기 전에 전통적인 개발 방법론 Monolithic을 알아보자
⚡ 전통적인 개발 방법론(Monolithic System)
- 전체 기능을 단일 코드베이스로 개발
- 단일 통합 데이터베이스 사용
- 대규모 단일 코드베이스로 빌드와 배포
⚡ Monolithic System의 단점
- 기능들 간의 결합도가 높다
- 작은 수정에도 전체 시스템의 전체적인 변경 필요
- 단건의 버그로 인해 전체 시스템이 죽을 수 있다.
- 기능 변경 시 영향도 파악 어려움
MSA의 장점
- 탄력적이고 선택적인 확장
MSA는 작은 서비스 단위로 확장이 가능하다.
반면 Monolithic은 확장을 하기 위해서는 전체 Scale-Out이 필요하므로 비효율적이다. - 빠른 Delivery
각 서비스는 독립적으로 개발되고 느슨하게 결합된다.
서비스 크기 또한 작기 때문에 코드 수정에 대한 영향 범위가 상대적으로 작아진다.
이는 곧 빠른 영향도 파악/빌드/테스트 즉 빠른 Delivery로 이어지게 된다. - Polygot Architecture 지원
조직의 표준 기술을 만들고 모든 조직에 강제적으로 적용하는 전통적 개발 환경과 달리,
MSA는 특정 Task에 가장 적절한 기술을 선택해 적용할 수 있다. - 실험과 혁신 가능
최근 비즈니스 상황에서는 기술의 혁신이 필수적이다.
Monolith 환경 에서는 단순한 기술 실험도 어려운 반면, MSA는 새로운 기술들을 쉽게 실험 해 볼 수 있다. - 대체 가능성
각 서비스는 작고 서비스 간 결합도가 낮기 때문에 언어 및 프레임워크를 완전히 새롭게 개발할 수 있다. - 기술 부채 경감
SW 또한 나이를 먹고 관리하지 않으면 기술 부채가 쌓이게 된다.
MSA는 서비스 크기가 작아 품질 관리에 용이하고, 품질 향상을 위한 코드 개선 시 받는 영향도 작다.
MSA의 단점
- 컴퓨팅 자원의 사용이 Monolithic보다 비효율적이다.
내부 호출을 하는 Monolithic보다 성능이 느리고, jvm 등 중복적인 자원 사용으로 메모리가 낭비된다. - 운영 관리가 어렵다.
작은 서비스 여러개로 이루어져있는 만큼 운영해야 할 대상 또한 늘어나면서 관리가 어려워지고, 모니터링 대상 또한 증가하게 된다. - 다양한 장애 상황 발생
- 분산 환경에서 트랜잭션 어려움
728x90
'MSA(MicroService Architecture)' 카테고리의 다른 글
[MSA] MSA(MicroService Architecture) 특징 (0) | 2022.10.07 |
---|
Comments