목차

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

MSA 정의

표준프레임워크 실행환경은 응용SW의 구성기반이 되며 응용SW실행 시 필요한 기본 기능을 제공하는 환경을 의미한다.
즉 전자정부 업무 구현을 목적으로 개발된 프로그램이 사용자가 의도하는 대로 정상적으로 실행될 수 있도록 지원하는 재사용 가능한 서버 실행 모듈, SW구조의 집합을 의미 한다.

마이크로서비스를 위키백과에서는 아래와 같이 정의하였다.

“마이크로서비스(microservice)는 애플리케이션을 느슨히 결합된 서비스의 모임으로 구조화하는 서비스 지향 아키텍처(SOA) 스타일의 일종인 소프트웨어 개발 기법이다.
마이크로서비스 아키텍처에서 서비스들은 섬세(fine-grained)하고 프로토콜은 가벼운 편이다.
애플리케이션을 더 조그마하나 여러 서비스로 분해할 때의 장점은 모듈성을 개선시키고 애플리케이션의 이해, 개발, 테스트를 더 쉽게 해주고 애플리케이션 침식에 더 탄력적으로 만들어 준다.
규모가 작은 자율적인 팀들이 팀별 서비스를 독립적으로 개발, 전개, 규모 확장을 할 수 있게 함으로써 병렬로 개발할 수 있게 한다. 또, 지속적인 리팩토링을 통해 개개의 서비스 아키텍처가 하나로 병합될 수 있게 허용한다.
마이크로서비스 기반 아키텍처는 지속적인 배포와 전개(디플로이)를 가능케 한다.”

즉, 전통적인 애플리케이션은 단일 플랫폼(시스템)에 여러 서비스를 모놀리식 아키텍처로 배포가능한 단일 소프트웨어 산출물로 전달된다.
예로, UI(User Interface) 및 비즈니스 로직, 데이터베이스 엑세스 로직 모두가 하나의 애플리케이션 산출물로 패키징되어 애플리케이션 서버(WAS)로 배포되는 것이다.
이러한 구조에서는 고객의 요구조건에 맞추어 확장성 및 성능을 위한 신속한 대처가 어려워, 보다 유연성 및 작고 독립적으로 분산된 플랫폼 아키텍처가 요구되며 이를 위한 마이크로 서비스 아키텍처가 활용되고 있다.
마이크로 서비스는 대형 애플리케이션의 경계를 허물고, 시스템 내부에 논리적으로 독립적인 소형 시스템들을 구축하는데 도움을 준다.

monolith와 msa 비교

위 다이어그램의 마이크로 서비스 아키텍처에서 볼 수 있듯이, 각각의 마이크로 서비스는 자체 비즈니스 계층과 데이터베이스를 가지고 있다.
그렇게 함으로써, 하나의 마이크로 서비스를 수정한다고 해서 다른 마이크로 서비스에 영향을 주지 않는다.
일반적으로 마이크로 서비스는 HTTP, REST 같은 널리 채택된 lightweight 프로토콜 또는 JMS 또는 AMQP 와 같은 메시징 프로토콜을 사용하여 서로 통신한다.
특정 시나리오에서는 더 전문화된 프로토콜을 사용할 수도 있다.

마이크로서비스 아키텍처(MSA)의 특징은 다음과 같다.

참고자료