MicroServices
마이크로서비스(Microservices)는 소프트웨어가 잘 정의된 API를 통해 통신하는 소규모의 독립적인 서비스로 구성되어 있는 경우의 소프트웨어 개발을 위한 아키텍처 및 조직적 접근방식이다.
마이크로서비스 아키텍처는 애플리케이션의 확장을 용이하게 하고 개발 속도를 앞당겨 혁신을 실현하고 새로운 기능의 출시 시간을 단축할 수 있게 해준다.
모놀리식과 마이크로서비스 아키텍처 비교
기존에 사용하면 모놀리식 아키텍처의 경우 모든 프로세스가 긴밀하게 결합이 되어있고 단일 서비스로 실행이 되었다.
이에 따라 애플리케이션의 한 프로세스에 대한 수요가 급증하면 해당 아키텍처 전체를 확장해야 한다.
이러한 문제점을 개선하고자 마이크로서비스 아키텍처가 나왔다.
마이크로서비스 아키텍처의 경우에는 애플리케이션이 독립적인 구성 요소로 구축되어 각 애플리케이션 프로세스가 서비스로 실행된다.
이러한 서비스는 경량 API를 사용하여 잘 정의된 인터페이스를 통해 통신을 한다.
서비스는 비즈니스 기능을 위해 구축되며 서비스마다 한 가지 기능을 수행한다.
서비스가 독립적으로 실행되기 때문에 애플리케이션의 특정 기능에 대한 수요를 충족하도록 각각의 서비스를 업데이트, 배포, 확장할 수 있다.
마이크로서비스의 특징
- 자율성
- 마이크로 서비스 아키텍처의 각 구성 요소 서비스는 다른 서비스의 기능에 영향을 주지 않으면서 개발, 배포, 운영하고 확장 할 수 있다.
- 전문성
- 각 서비스는 일련의 기능을 위해 설계되면 특정 문제를 해결하는데 중점을 둔다.
개발자가 시간이 지남에 따라 서비스에 더 많은 코드를 제공하여 서비스가 복잡해지면 더 작은 서비스로 분할할 수 있다.
마이크로서비스의 이점
- 민첩성
- 마이크로서비스는 해당 서비스를 소유한 독립적인 소규모 팀 조직을 육성하는 역할을 한다.
팀은 충분한 이해를 바탕으로 소규모 컨텍스트 내에서 활동하며 더 독립적이면서 신속하게 업무를 수행할 수 있다.
- 확장성
- 마이크로서비스의 경우 각 서비스가 지원하는 애플리케이션의 기능의 수요를 충족하도록 해당 서비스를 독립적으로 확장할 수 있다.
- 쉬운 배포
- 마이크로서비스는 지속적 통합 및 지속적 전달을 통해 새로운 아이디어를 손쉽게 시험하고 문제가 발생할 경우 간단히 롤백할 수 있다.
- 기술적 자유
- 마이크로서비스 아키텍처는 모든 규모에 부합하는 접근 방식을 추구하지 않는다.
팀은 특정한 문제를 해결하는데 가장 적합한 도구를 자유롭게 선택할 수 있다.
- 코드의 재사용성
- 소프트웨어를 잘 정의된 소규모 모듈로 분할하여 팀이 기능을 여러 용도로 사용할 수 있게 된다.
특정 기능을 위해 구축된 서비스를 다른 기능의 빌딩 블록으로 사용할 수 있는 것이다.
- 복원성
- 서비스가 독립적이므로 실패에 대한 애플리케이션의 저항성이 증가한다.
모놀리식 아키텍처는 단일 구성 요소가 실패하는 경우 전체 애플리케이션이 실패하게 될 수 있다.
참고: 마이크로서비스