Primrose Docs
  • Home
    • ⛓️Blockchain
      • Avalanche
        • What is AVAX?
      • Ethereum
        • Ethereum Cancun Upgrade Explained(draft)
        • go-ethereum: gas estimate
        • Blockchain Transaction Lifecycle
        • Mempool
        • Gas optimization in Solidity, Ethereum
      • Solidity DeepDive
        • Meta transaction
        • solidity: patterns
        • UUPS vs Transparent
        • Solidity Interface
        • Smart contract storage
        • ERC-2981 Contract
        • Solidity modifier
        • Solidity delete keyword
        • How To Make NFTs with On-Chain Metadata - Hardhat and JavaScript
        • How to Build "Buy Me a Coffee" DeFi dapp
        • How to Develop an NFT Smart Contract (ERC 721) with Alchemy
        • Upgradeable Contract
        • Smart Contract Verification
      • Common
        • Eigenlayer
        • MultiSig(draft)
        • Chain-Based Proof-of- Stake, BFT-Style Proof-of-Stake
        • Byzantine Fault Tolerance
        • Zero-knowledge
        • Hierarchical Deterministic Wallet
        • Maker DAO
        • Defi
        • Uniswap
        • IBC
        • Cosmos
        • Gossip Protocol
        • Tendermint
        • UTXO vs Account
        • Blockchain Layer
        • Consensus Algorithm
        • How does mining work?
        • Immutable Ledger
        • SHA256 Hash
        • Filecoin
        • IPFS - InterPlanetary File System
        • IPFS와 파일코인
        • Livepeer
        • Layer 0
      • Bitcoin
        • BIP for HD Wallet
        • P2WPKH
        • Segwit vs Native Segwit
    • 📖Languages
      • Javascript/Typescript
        • Hoisting
        • This value in Javascript
        • Execution Context
        • About Javscript
        • tsconfig.json
        • Nest js Provider
        • 'return await promise' vs 'return promise'
      • Python
        • Pythonic
        • Python: Iterable, Iterator
        • Uvicorn & Gunicorn
        • WSGI, ASGI
        • Python docstring
        • Decorator in Python
        • Namespace in Python
        • Python Method
      • Go
        • GORM+MySQL Connection Pool
        • Context in golang
        • How to sign Ethereum EIP-1559 transactions using AWS KMS
        • Mongo DB in golang(draft)
        • Golang HTTP Package
        • Panic
        • Golang new/make
        • golang container package
        • errgroup in golang
        • Generic Programming in Golang
        • Goroutine(draft)
    • 📝Database
      • MongoDB in golang
      • Nested loop join, Hash join
      • DB Query plan
      • Index
      • Optimistic Lock Pessimistic Lock
    • 💻Computer Science
      • N+1 query in go
      • Web server 를 구성할 때 Thread, Process 개수를 어떻게 정할 것인가?
      • CAP
      • Socket programming
      • DNS, IP
      • URL, URI
      • TLS과 SSL
      • Caching(draft)
      • Building Microservices: Micro Service 5 Deploy Principle
      • Red Black Tree
      • AOP
      • Distributed Lock
      • VPC
      • Docker
      • All about Session and JWT
      • Closure
      • Singleton Pattern
      • TCP 3 way handshake & 4 way handshake
      • Race Condition
      • Process Address Space 
      • Call by value, Call by reference, Call by assignment
      • Zookeeper, ETCD
      • URL Shortening
      • Raft consensus
      • Sharding, Partitioning
    • 📒ETC
      • K8S SIGTERM
      • SQS
      • Git Branch Strategy: Ship / Show / Ask
      • Kafka
      • Redis Data Types
      • CI/CD
      • How does Google design APIs?
      • Minishell (42 cursus)
      • Coroutine & Subroutine
      • Redis
Powered by GitBook
On this page
  • Building Microservices
  • 실행 격리 Isolated execution
  • 자동화에 초점 Focus on automation
  • 코드형 인프라 Infrastructure as code
  • 무중단 배포 Zero-downtime deployment
  • 기대 상태 관리 Desired state management
  1. Home
  2. Computer Science

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

플랫폼 지원/도구 필요.

PreviousCaching(draft)NextRed Black Tree

Last updated 1 year ago

💻