[MSA]MSA란 무엇인가?

heeee·2021년 3월 12일
0

MSA

목록 보기
1/1

마이크로서비스는 애플리케이션 구축을 위한 아키텍처 기반의 접근 방식입니다. 마이크로서비스를 전통적인 모놀리식(monolithic) 접근 방식과 구별 짓는 기준은 애플리케이션을 핵심 기능으로 세분화하는 방식입니다. 각 기능을 서비스라고 부르며, 독립적으로 구축하고 배포할 수 있습니다. 이는 개별 서비스가 다른 서비스에 부정적 영향을 주지 않으면서 작동(또는 장애가 발생)할 수 있음을 의미합니다.

즉, 하나의 큰 단일 어플리케이을 여러개의 독립적이고 단순한 작은 서비스 단위로 쪼개어 개발하도록 만든 아키텍처입니다.


애플리케이션 개발 초기에는 최소한의 변경사항이 있어도 자체적인 QA(Quality Assurance) 주기에 따라 대규모 업데이트를 해야 헸습니다. 전체 애플리케이션의 소스 코드는 하나의 배포 유닛(.war 혹은 .ear 등)으로 내장되기 때문에 이런 방식을 종종 "모놀리식"이라고 부릅니다.

이와 같은 구성의 애플리케이션은 로컬 환경에서 개발하기에 편리하고, 통합 시나리오 테스트를 수행하기에도 쉬운 구성입니다. 또한 모든 코드가 하나의 묶음으로 이루어져있으므로 배포 역시 매우 간편합니다.

그러나 일부 애플리케이션의 업데이트로 인해 오류가 발생할 경우, 전체를 오프라인으로 전환 후 운영 규모를 축소시킨 후 문제를 해결해야 했습니다.

서비스 복잡도가 증가하면서 모놀리틱 아키텍처가 가지는 문제점
1) 배포 시간의 증가
2) 부분적 스케일 아웃의 어려움
3) 안정성의 감소
4) 프로그래밍 언어, 프레임워크 변경의 어려움

기획, 개발, 리스크 파악에 걸리는 시간이 길어지다 보니 시장에 내놓을 타이밍을 놓치게 되고, 고객이 원하는 기능을 정확하게 배포했는지에 대해 확신을 가질 수 없었습니다. 그러나 그렇더라도 정해진 QA 주기에 맞춰 개선해야만 했습니다.

🧩마이크로 서비스

이러한 문제를 해결하고 원하는 비즈니스 목표를 이루기 위해 등장한 수단이 "마이크로 서비스" 입니다.

마이크로서비스는 소프트웨어가 잘 정의된 API를 통해 통신하는 소규모의 독립적인 서비스로 구성되어 있는 경우의 소프트웨어 개발을 위한 아키텍처 및 조직적 접근 방식으로, 단일 애플리케이션을 작은 서비스로 개발하는 방법입니다.

마이크로 서비스의 특징
1) 각각 자체 프로세스에서 실행, 대개 HTTP API와 통신
2) 비즈니스 기능을 중심으로 구축되며 독립적으로 배포 가능
3) 최소한의 중앙 집중식 관리
4) 다른 프로그래밍 언어, 다른 데이터베이스 사용 가능

마이크로서비스 아키텍처는 애플리케이션의 확장을 용이하게 하고 개발 속도를 앞당겨 혁신을 실현하고 새로운 기능의 출시 시간을 단축할 수 있게 해 줍니다.

모놀리식 아키텍처와 마이크로서비스 아키텍처 비교


모놀리식 아키텍처의 경우 모든 프로세스가 긴밀하게 결합되고 단일 서비스로 실행됩니다. 따라서 애플리케이션의 한 프로세스에 대한 수요가 급증하면 해당 아키텍처 전체를 확장해야 합니다. 코드 베이스가 증가하게 되면 모놀리식 애플리케이션의 기능을 추가하거나 개선하기가 더 복잡해집니다. 그리고 이러한 복잡성으로 인해 실험에 제한을 받고 새로운 아이디어를 구현하기가 어려워집니다. 종속 관계를 이루며 긴밀하게 결합된 많은 프로세스로 인해 단일 프로세스의 실패로 인한 영향이 증가함에 따라 모놀리식 아키텍처는 애플리케이션 가용성에 대한 위험을 가중시킵니다.

마이크로서비스 아키텍처의 경우, 애플리케이션이 독립적인 구성 요소로 구축되어 각 애플리케이션 프로세스가 서비스로 실행됩니다. 이러한 서비스는 경량 API를 사용하여 잘 정의된 인터페이스를 통해 통신합니다. 서비스는 비즈니스 기능을 위해 구축되며 서비스마다 한 가지 기능을 수행합니다. 서비스가 독립적으로 실행되기 때문에 애플리케이션의 특정 기능에 대한 수요를 충족하도록 각각의 서비스를 업데이트, 배포 및 확장할 수 있습니다.


마이크로서비스의 장점

1) 쉬운 장애 격리와 복구
2) 비용 효율적으로 증설이 가능
3) 서비스 개선 속도 증가(모놀리스는 서비스가 크기 때문에 상대적으로 느립니다.)
4) 생산성 향상, 코드양이 적어 쉽게 수정 가능(다른 프로그래밍 언어 사용 가능)
5) 신기술 도입에 유리
6) 서비스에 최적화된 개발 언어와 데이터베이스를 선택

0개의 댓글