SeouliteLab

[MSA] 마이크로서비스 아키텍처(MSA)란? 본문

프로그래밍

[MSA] 마이크로서비스 아키텍처(MSA)란?

Seoulite Lab 2024. 2. 27. 15:36

마이크로서비스 아키텍처(MSA)는 작고 독립적인 서비스들의 집합으로 이루어진 애플리케이션 구조를 말합니다.

이번 글에서는 마이크로서비스 아키텍처와 모놀리식 아키텍처의 장단점을 비교하고, 어떤 상황에서 각각이 적합한지에 대해 알아보겠습니다.

마이크로서비스 아키텍처(MSA)의 핵심은 큰 규모의 애플리케이션을 작고 관리 가능한 단위로 분해하는 것입니다. 각각의 마이크로서비스는 특정한 비즈니스 기능을 수행하며, 서로 독립적으로 실행될 수 있습니다. 이는 개발자들이 특정 서비스에 집중하여 개발할 수 있고, 팀 간 협업이 용이해집니다. 또한, 각 서비스는 독립적으로 배포되므로 전체 시스템의 일부분을 변경하거나 업데이트할 때 다른 서비스에 영향을 미치지 않습니다. 이는 빠른 개발과 배포를 가능하게 하며, 유연성과 확장성을 제공합니다. 그러나 마이크로서비스 아키텍처를 구현할 때는 서비스 간 통신, 데이터 일관성, 모니터링 및 관리와 같은 추가적인 관리 부담이 발생할 수 있습니다. 따라서 조직의 요구사항과 프로젝트의 복잡성을 고려하여 적절한 아키텍처를 선택하는 것이 중요합니다.

 

마이크로서비스 아키텍처(MSA)의 장점과 단점을 간단히 정리하면 다음과 같습니다

장점
1. 유연성과 확장성: 각각의 서비스는 독립적으로 개발되고 배포되므로 시스템을 유연하게 확장할 수 있습니다.
2. 빠른 개발 및 배포: 작은 규모의 서비스로 분할되어 있어 개발과 배포가 빠르고 효율적으로 이루어집니다.
3. 기술 다양성 및 혁신: 각 서비스는 다른 기술 스택을 사용할 수 있으므로 최신 기술을 도입하고 혁신할 수 있습니다.
4. 팀 간 독립성: 각 서비스를 다른 팀이 관리하므로 독립성이 보장되며, 팀 간 협업이 용이합니다.


단점
1. 관리 부담: 다수의 서비스를 관리해야 하므로 통합 테스트, 모니터링, 로깅 등의 추가적인 관리 부담이 발생할 수 있습니다.
2. 분산 시스템 복잡성: 서비스 간 통신, 데이터 일관성 등 분산 시스템의 복잡성을 관리해야 합니다.
3. 네트워크 오버헤드: 서비스 간의 통신으로 인한 네트워크 오버헤드가 발생할 수 있습니다.
4. 데이터 관리 어려움: 데이터 일관성을 유지하기 위해 데이터 관리가 복잡해질 수 있습니다.

 

모놀리식 아키텍처(Monolithic Architecture)는 전통적인 방식의 애플리케이션 아키텍처로, 모든 기능이 단일 애플리케이션에 통합되어 있는 구조를 말합니다. 이러한 애플리케이션은 하나의 코드베이스와 데이터베이스를 사용하며, 일반적으로 세로운 버전이 출시될 때 전체 애플리케이션을 다시 배포해야 합니다. 

모놀리식 아키텍처에서는 모든 기능이 하나의 단일 애플리케이션으로 통합되어 있어 개발 및 배포가 상대적으로 간단합니다. 또한 개발자들이 전체 시스템을 이해하기 쉽고, 디버깅 및 유지보수가 용이합니다.

하지만 모놀리식 아키텍처는 크기가 커질수록 유연성과 확장성이 떨어지는 단점이 있습니다. 특히, 서비스 간의 결합도가 높아져 기능을 추가하거나 수정할 때 전체 시스템에 영향을 미칠 수 있습니다. 또한, 대규모 트래픽 처리나 다양한 기술 스택의 도입이 어려울 수 있습니다.

 

모놀리식 아키텍처의 장점과 단점을 정리하면 다음과 같습니다:


장점
1. 간단한 관리: 하나의 애플리케이션으로 구성되어 있어서 전체 시스템을 이해하고 관리하기 쉽습니다.
2. 배포 용이성: 단일 애플리케이션으로 구성되어 있어 배포 프로세스가 단순하고 편리합니다.
3. 개발 생산성: 단일 코드베이스를 사용하므로 개발 생산성이 높을 수 있습니다.
4. 초기 구축 및 프로토타입 제작이 빠름: 모든 기능을 하나의 애플리케이션으로 통합하기 때문에 초기에 빠르게 개발할 수 있습니다.

단점
1. 유연성 부족: 기능이 추가되거나 변경될 때 전체 애플리케이션을 다시 배포해야 하며, 이로 인해 유연성이 부족할 수 있습니다.
2. 확장성 제한: 애플리케이션의 규모가 커질수록 확장하기 어려울 수 있습니다.
3. 기술적 제한: 단일 기술 스택을 사용하므로 다양한 기술을 적용하기 어려울 수 있습니다.
4. 결합도 증가: 모든 기능이 하나의 애플리케이션으로 통합되어 있어 강한 결합도가 발생할 수 있어 유지보수가 어려울 수 있습니다.

'프로그래밍' 카테고리의 다른 글

[JS/Javascript] 호이스팅이란? ( Hoisting )  (0) 2024.02.27
[JS] V8 엔진(자바스크립트 엔진)이란?  (0) 2024.02.27
Centos8 Haproxy 설치  (0) 2020.04.06
CentOS8 redis 설치  (0) 2020.04.06
CentOS 8 ftp 설치  (0) 2020.04.06