Building Microservices: Micro Service 5 Deploy Principle

Building Microservices

라는 책에 나오는 5개의 마이크로서비스 배포 원칙에 대해서 살펴보자.

실행 격리 Isolated execution

부하/배포에 있어 마이크로서비스간에 영향을 주어서는 안된다.

다음과 같은 상황을 보자.

Example : 한 호스트에서 여러 마이크로 서비스 인스턴스 실행.

  1. 한 마이크로서비스의 부하가 급격히 증가 → 다른 마이크로서비스 성능 저하

  2. 한 마이크로서비스 배포를 위한 설정 변경 → 다른 마이크로서비스 배포 영향

마이크로서비스는 서로 격리된 환경에서 실행되어야 한다. 그렇지 못하면 위와 같은 상황이 발생할 수 있다.

물리적으로 격리를 하던가 혹은 가상화, 컨테이너 등으로 격리를 하도록 한다.

물리적 격리 : 강한 격리

논리적 격리 : 빠른 제공

자동화에 초점 Focus on automation

마이크로서비스가 증가할수록 더 복잡해진다.

  • 더 많은 절차, 더 많은 설정, 더 많은 모니터링 대상

  • 운영 부하 증가

운영 부하 감소 위해 자동화에 초점을 맞춰야한다.

  • 자동화하지 않으면 성장에 빠르게 대응할 수 없음

개발자가 직접 인프라 서비스를 제공할 수 있도록 한다 → 생산성 증가로 이어진다.

코드형 인프라 Infrastructure as code

인프라 구조를 코드로 정의하라.

  • 자동화를 구현하는 한 가지 방법중 하나이다.

  • 텍스트 형식으로 원하는 인프라 구조 정의

  • 인프라 구조에 대한 버전 관리가 가능해진다.

Terraform, Pulumi 같은 특화된 도구가 있다.

무중단 배포 Zero-downtime deployment

마이크로서비스 개발/배포에 있어 무중단 배포는 필수이다.

서비스 사용자에 통지하지 않고 출시하는 것이 목표이다.

출시하기 위해 사용자와 일정을 조율하고 공유하는 과정 제거

독립적 배포를 위해서도 필요하다.

기대 상태 관리 Desired state management

수작업 없이 인프라 구조를 원하는 상태로 유지할 수 있는 수단이 필요하다.

개발자의 개입 없이 인프라 상태를 원하는 상태로 유지하는 것을 말한다.

  • e.g. 최소 3개의 인스턴스가 실행중이어야 함.

  • e.g. CPU 부하가 50%이상이면 인스턴스를 1개 더 늘림.

플랫폼 지원/도구 필요.

Last updated