마이크로서비스란?

2020. 2. 8. 18:38스터디/AWS Study

마이크로서비스는 소프트웨어가 잘 정의된 API를 통해 통신하는 소규모의 독립적인 서비스로 구성되어 있는 경우의 소프트웨어 개발을 위한 아키텍처 및 조직적 접근 방식이다. 

 

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

 

모놀리딕 애플리케이션을 마이크로서비스로 분할

 

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

 

마이크로서비스의 특징

 

자율성

마이크로서비스 아키텍처의 각 구성 요소 서비스는 다른 서비스의 기능에 영향을 주지 않으면서 개발,배포,운영,확장이 가능하다. 서비스가 해당 코드 또는 구현을 위한 다른 서비스와 공유할 필요가 없다. 개별 구성 요소 간의 통신은 잘 정의된 API를 통해 이루어진다

 

전문성

각 서비스는 일련의 기능을 위해 설계되며 특정 문제를 해결하는데 중점을 둔다. 개발자가 시간이 지남에 따라 서비스에 더 많은 코드를 제공하여 서비스가 복잡해지면 더 작은 서비스로 분할할 수 있다.

 

마이크로서비스의 이점

 

민첩성

마이크로서비스는 해당 서비스를 소유한 독립적인 소규모 팀 조직을 육성하는 역할을 한다. 팀은 충분한 이해를 바탕으로 하는 소규모 컨텍스트 내에서 활동하며 더 독립적이면서 신속하게 업무를 수행할 수 있다. 개발 주기 시간 역시 단축된다.

 

유연한 확장성

마이크로서비스의 경우 각 서비스가 지원하는 애플리케이션 기능의 수요를 충족하도록 해당 서비스를 독립적으로 확장할 수 있다. 따라서 팀은 필요한 인프라의 규모를 적절히 조절하고, 기능의 비용을 정확하게 측정하고, 서비스의 수요가 급증하는 경우에도 가용성을 유지할 수 있다. 

 

손쉬운 배포

마이크로서비스는 지속적 통합 & 지속적 전달 (CI & CD) 가 가능하며 문제가 발생할 시 간단히 롤백할 수 있어 더 쉽게 코드를 업데이트하고 시험해볼 수 있어 출시 시간을 앞당길 수 있다

 

기술적 자유

마이크로서비스에서 팀은 특정한 문제를 해결하는데 가장 적합한 도구를 자유롭게 선택할 수 있다

 

재사용성

소프트웨어를 잘 정의된 소규모 모듈로 분할할 수  있기 때문에 팀이 기능을 여러 용도로 사용할 수 있게 된다. 이를 통해 개발자가 코드를 처음부터 작성하지 않고도 새 기능을 생성할 수 있어 애플리케이션이 자체적으로 부트스트랩 작업을 생성할 수 있다.

 

복원성

서비스가 독립적이므로 실패에 대한 저항성이 증가 된다. 모놀리식 아키텍처에서는 단일 구성 요소가 실패하는 경우 전체 애플리케이션이 실패하게 될 수 있다. 하지만 마이크로서비스에서는 기능을 저하시키고 전체 애플리케이션을 충돌시키지 않는 방식으로 전체 서비스 실패를 처리할 수 있다.

 

'스터디 > AWS Study' 카테고리의 다른 글

Auto Scaling Group  (0) 2020.02.09
Load Balancers for Solutions Architect  (0) 2020.02.05
Load Balancer Stickiness  (0) 2020.02.05
Load Balancing  (0) 2020.02.02
Scalability & High Availability  (0) 2020.02.02