MSA

[MSA] 1. MSA

hyomee2 2024. 11. 25. 12:28

MSA(Microservice Architecture)란?

소프트웨어 개발 방식 중 하나로,

큰 애플리케이션을 독립적으로 배포, 운영할 수 있는 작은 서비스들로 나누어 개발하는 접근 방식이다.

(한마디로 intelliJ에서 각 서비스가 각 프로젝트에서 별도로 동작하는 것이다..)

각 서비스는 고유한 기능을 담당하며, 서로 다른 서비스들과 통신하면서 전체 시스템을 구성한다.

MSA의 주요 장점은 확장성, 유지보수용이성, 독립적인 배포 가능성 등이 있는데,

각 서비스는 독립적이기 때문에, 한 서비스가 업데이트되거나 오류가 발생해도 전체 시스템에 영향을 미치지 않는다.


MSA vs Monolithic

1. 아키텍처 구조

(1) 모놀리식 아키텍처

모든 기능과 모듈이 하나의 코드베이스에 통합된 구조로, 

사용자 인터페이스, 비즈니스 로직, 데이터 액세스 로직이 모두 하나의 애플리케이션으로 구성되어 있다.

(2) 마이크로서비스 아키텍처

각 기능이 독립된 서비스로 나뉘어 있으며, 이들은 서로 API를 통해 통신하여,

각각의 서비스가 독립적으로 배포되고 확장될 수 있도록 한다.

2. 개발 및 배포

(1) 모놀리식 아키텍처

애플리케이션의 어느 한 부분에 변경이 발생하면 전체 시스템을 다시 빌드하고 배포해야 한다.

따라서 배포 주기가 길어지고, 코드 변경으로 인한 오류가 전체 시스템에 영향을 미칠 수 있다.

(2) 마이크로서비스 아키텍처

특정 서비스에 대한 변경만 수행하면 되므로 배포가 더 빠르고 빈번하게 가능하다.

또한 팀별로 독립적으로 개발 및 배포가 가능하여 민첩성이 향상된다.

3. 기술스택과 유연성

(1) 모놀리식 아키텍처

하나의 기술 스택에 국한되는 경우가 많아 기술 선택의 유연성을 제한하고,

새로운 기술 도입 시 전체 애플리케이션에 영향을 줄 수 있다.

(2) 마이크로서비스 아키텍처

각 서비스가 독립적으로 개발되므로, 팀이 필요에 따라 적합한 기술 스택을 선택할 수 있으며, 최신 기술을 신속하게 도입할 수 있다.

4. 확장성과 성능

(1) 모놀리식 아키텍처

전체 애플리케이션을 확장해야 하므로 자원 낭비가 발생할 수 있으며,

특정 기능에 대한 수요가 증가할 경우 전체 시스템의 자원을 모두 늘려야 하는 비효율성이 존재한다.

(2) 마이크로서비스 아키텍처

필요한 서비스만 개별적으로 확장할 수 있어 자원 활용을 극대화할 수 있으며, 트래픽이 높은 서비스에 매우 유리하다.

5. 장애 격리 및 회복성

(1) 모놀리식 아키텍처

하나의 컴포넌트에 장애가 발생할 경우 전체 애플리케이션이 영향을 받을 수 있으며, 시스템의 신뢰성을 저하시키는 요인이 될 수 있다.

(2) 마이크로서비스 아키텍처

서비스 간 의존성이 분리되어 있기 때문에 한 서비스의 장애가 전체 시스템에 미치는 영향을 최소화할 수 있다. 또한 각 서비스는 독립적으로 회복할 수 있어 전체 시스템의 가용성을 높일 수 있다.

6. 관리와 모니터링

(1) 모놀리식 아키텍처

단일 시스템에서 모든 로그와 성능 데이터를 관리하므로 모니터링이 비교적 간단하다.

(2) 마이크로서비스 아키텍처

여러 개의 독립적인 서비스로 구성되어 있어 서비스 간의 상태와 성능을 모니터링하는데 더 큰 노력이 필요하다.

또한 통합된 모니터링 도구와 관리 시스템이 필수적이며, 이러한 시스템은 복잡성을 증가시킬 수 있다.