Micro Service Architecture의 줄임말로 마이크로서비스(MicroService)는 Application을 느슨하게 결합된 서비스의 모임으로 구조화하는 서비스 지향 아키텍처(SOA)스타일의 일종인 소프트웨어 개발 기법이다.
Monolithic Architecture는 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어 있는 서비스이다. 현재 많은 회사들의 소프트웨어가 레거시 또는 필요로 인해서 Monolithic 형태로 구현되어 있다. 소규모의 프로젝트에서는 Monolithic 형태는 간단하며, 유지보수가 편하기 때문에 선호된다.
그러나 일정 규모 이상을 넘어가면 Monolithic은 많은 한계점에 봉착한다.
이러한 기존 모놀리식 구조 서비스의 한계점에서 MSA가 등장하게 되었다.
MSA는 API를 통해서만 상호작용할 수 있다. 즉, MicroService는 서비스의 end-point(접근점)를 API형태로 외부에 노출하고, 실질적인 세부 사항은 모두 추상화한다. 내부의 구현 로직, 아키텍쳐와 프로그래밍 언어, 데이터베이스, 품질 유지 체계와 같은 기술적인 사항들은 서비스 API에 의해 철저하게 가려진다.
제대로 설계된 Micro Service는 하나의 비즈니스 범위에 맞춰 만들어지므로 하나의 기능만 수행한다. 즉, Application 출시처럼 하나의 목표를 향해 일하지만 자기가 개발하는 서비스만 책임진다. 그리고 여러 Application에서 재사용할 수 있어야 한다.
Application은 항상 기술 중립적 프로토콜을 사용해 통신하므로 서비스 구현 기술과는 무관하다. 따라서 Micro Service기반의 Application을 다양한 언어와 기술로 구축할 수 있다는 것을 의미한다.
Micro Service는 SOA에서 사용되는 집중화된 관리 체계를 사용하지 않는다. Micro Service 구현체의 공통적인 특징 중 하나는 ESB(Enterprise Service Bus)와 같은 무거운 제품에 의존하지 않는다는 점이다. REST등 가벼운 통신 아키텍처, 또는 Kafka등을 이용한 message stream을 주로 사용한다.
1.배포
2.확장
3.장애
4.그 외
1.설계의 어려움
2.성능
3.테스트/데이터 트랜잭션
4.데이터 관리