Micro-Service Architecture

대형 애플리케이션을 구축하고, 운영하고, 조정하는 것은 조직에게 중요하지만, 많은 걸림돌로 인해서 점점 더 어려운 업무가 되고 있습니다.
이러한 이유로, Microservice가 나타났고, 개별 컴포넌트들을 특정 비즈니스 기능 중심의 독립적인 서비스로 분리함으로써 최근의 클라우드 애플리케이션을 구축하는 패턴이 되기 시작했습니다.
Microservice 아키텍처는 그 자신만의 생명주기를 가지는 잘 정의된 서비스를 분산 환경에서 사용할 수 있는 시스템을 구현하는 접근 방법입니다.
Microservice는 기존 획일적인(monolith) 애플리케이션과 같은 전통적인 멀티/n-티어 아키텍처의 문제를 해결하면서 개별 비즈니스 프로세스나 기능을 중심으로 모델링된 서비스입니다.
Microservice는 또한 지난 많은 SOA 구현체들의 단점을 극복하는데 도움이 되는 새로운 기술과 기법들을 사용하고 있습니다.
Microservice로 구축한다는 의미는 많은 애플리케이션들을 관리가 더 수월하고 신뢰성이 높은 분산 시스템을 보장하도록 실패, 일관성, 성능 등 다양한 아키텍처 문제를 고려하고 해당 품질을 보장하는 기술들을 사용한다는 것입니다.

MSA 적용 장점

● 서비스 단위로 배포가 독립적으로 가능

Microservice로 애플리케이션을 구축하는 것은 여러개의 컴포넌트화(모듈화)된 서비스들로 분리한다는 것을 의미하며, 이러한 서비스들은 다른 서비스와 관계없이 언제든지 재배포가 가능함을 의미합니다. 이는 MSA를 통해 개발자는 언제든지 타 서비스와 관계없이 독립적인 개발과 재포를 할 수 있습니다.

● 장애 허용 (장애 복구)

어느 한 micro-service가 실패하면, 다른 micro-service가 계속해서 기능을 수행할 수 있습니다. 이는 클라우드 기반의 PaaS (Platform as a Service) 기술을 통해 구현이 가능합니다.

● 서비스별 서로 다른 언어 구현 가능

서로 다른 서비스에 대한 소스 코드는 서로 다른 언어와 OS, 아키텍처 구성이 가능합니다. MSA는 RESTful 방식으로 서비스 간 연계를 통해 새로운 서비스를 만들 수 있습니다.

● 기타 장점들

쉬운 통합과 자동 배포

Jenkins, GitLab-Runner, Bamboo와 같은 CI(Continuous Integration) 도구를 사용하여 다양한 언어나 OS 기반의 서비스를 쉽게 통합하고 배포를 자동화시켜줍니다.

빠른 생산성과 쉬운 운영

작은 단위의 기능을 서비스로 구현하기 때문에 업무 이해가 쉬우며, 소스 개발이나 수정이 용이합니다. 따라서 새로운 멤버가 추가되어서 빨리 생산성을 낼 수 있습니다.

높은 확장성/재사용성/효율성

RESTful API를 통해서 서비스를 제공하기 때문에 3rd-Party 서비스와 연계하여 확장이 용이합니다. 또한, 서비스의 재사용을 통해서 또 다른 기능을 추가 혹은 변경하여 새로운 서비스로 확장이 가능합니다.