# Building Microservices: Micro Service 5 Deploy Principle

By [Primrose](https://paragraph.com/@primrose) · 2023-02-24

---

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개 더 늘림.
    

플랫폼 지원/도구 필요.

---

*Originally published on [Primrose](https://paragraph.com/@primrose/building-microservices-micro-service-5-deploy-principle)*
