Introduction to Microservices | NGINX

Microservices are currently getting a lot of attention. This blog post is the first in a 7-part series about designing, building, & deploying microservices.

www.nginx.com

1. MicroService

  1. 애플리케이션을 상호 연결된 소규모 서비스 집합으로 분할하는 것을 말한다. 각 서비스를 API 또는 메세지를 통해서 상호작용하여 비즈니스를 구축한다.
  2. 서비스가 각각의 프로세스로 분리되기 때문에 배포가 더욱 쉬워진다.
  3. 별도의 스키마로 관리하여 느슨한 결합을 보장한다.

 

 

2. 모놀로식 방식의 장점

  1. 테스트하기 쉽다. 엔드투엔드 테스트를 구현할 수 있다.
  2. 배포가 간단하다. 빌드 파일을 애플리케이션을 서버에 복사하기만 하면 된다.

 

3. 모놀로식의 단점

  1. 애플리케이션의 복잡해질 경우, 로직의 복잡도가 높아져 유지보수가 어렵다. 또한 크기가 커질 경우 개발자가 이해하기 힘들어 테스트 코드 대신 수동 테스트를 할 가능성이 높아진다.
  2. 애플리케이션이 커지면 개발 속도가 느려져 생산성이 저하된다.
  3. 지속적인 배포에 장애가 발생한다. 변경 내용이 생길 경우 전체 애플리케이션을 재배포해야 해서 작업을 수행하기 매우 어렵다.
  4. 동일한 프로세스 내에 실행되기 때문에 버그가 발생할 경우 전체 프로세스가 중단되어 가용성이 낮아진다.
  5. 모놀로식 애플리케이션이 비대해질수록 확장하기 어렵고 개발과 배포가 불가하다.

 

4. MSA 의 장점

  1. 복잡성 문제를 해결한다. 거대한 모노로식을 작은 서비스로 분해하여 개별 서비스를 개발하는 속도가 훨씬 빨라지고 이해와 유지 관리가 쉬워진다.
  2. 각 서비스를 해당 서비스에 집중하는 팀이 독립적으로 개발할 수 있게 한다.
  3. 독립적으로 배포를 할 수 있는 장점이 있다.

 

5. MSA 의 단점

  1. 마이크로서비스 애플리케이션이 분산 시스템으로 생기는 복잡성이다. 요청 대상의 속도가 느리거나 사용할 수 없으므로 부분적인 장애를 처리하는 코드도 작성해야 한다.
  2. 서로 다른 서비스에서 소유한 여러 데이터베이스를 업데이트해야 하므로 분산 트랜잭션이 필요하다.
  3. 테스트 작성을 위해서는 최소한 해당 서비스에 대한 스텁을 구성해야 한다.
  4. 여러 서비스를 통해 변경 사항을 구현해야 하기 때문에 배포 계획을 신중히 조율해야 한다.