12 Factors (+ 3)

CHEESE·2022년 8월 22일
0

Spring Cloud + MSA

목록 보기
2/13
post-thumbnail

12 Factors

PaaS를 제공하는 heroku에서 제시한 Cloud Native Architecute를 개발하거나 운영할 때 고려해야 할 항목

Basic code

  • 버전을 제어하기 위한 목적
  • 형상 관리를 위해 코드를 한 곳에서 관리
  • 배포를 위한 코드의 통일적인 관리

Dependency isolation

  • 각 마이크로 서비스는 전체 시스템에 영향을 주지 않고 변경될 수 있어야 한다.

Configurations

  • 시스템 코드 외부에서 작업들을 제어할 수 있어야 함

Linkable backing services

  • 메시징, 캐시 등을 이용해서 마이크로 서비스가 가져야 할 기능들을 추가로 지원해야 한다.

Stages of creation

  • 빌드, 릴리즈, 실행 환경을 분리한다.
  • 각각의 환경은 자동화된 시스템을 구축해야 하고, 이전 단계로 돌아갈 수 있어야 한다.

Stateless processes

  • 독립적으로 실행되어야 한다.
  • 필요한 자원이 있다면 외부와 데이터를 동기화해야 한다.

Port binding

  • 다른 마이크로 서비스와 격리돼야 한다.

Concurrency

  • 부하 분산
  • 수 많은 프로세스에 대해 동시성을 가져야 한다.

Disposability

  • 서비스의 인스턴스가 삭제 가능해야 한다.
  • Docker 등의 컨테이너를 이용하면 추가/삭제가 용이

Development & Production parity

  • 수명 주기 전반에 걸쳐 다른 서비스와 종속되지 않아야 함

Logs

  • 로그를 출력하는 로직은 어플리케이션과 분리되어야 한다.
  • 모니터링 도구를 사용할 수 있다.

Admin processes for eventual processes

  • 리소스가 어떻게 사용되는지 관리할 수 있는 도구가 있어야 한다.
  • 리포트하고 분석할 수 있는 도구

+3 ?!

pivotal이 12 Factors에서 3가지 항목을 추가했다?!

API first

  • 가지고 있는 모든 마이크로서비스에 대해 API로 제공되어야 한다.
  • 사용자가 어떻게 쓸지를 우선해서 고려해서 개발해야 한다.

Telemetry

  • 모든 지표는 수치화/시각화하여 제공되어야 한다.

Authentication and authorization

  • 인증 제공이 필수적
  • 적절한 인증을 가진 리소스를 통해 데이터가 제공되어야 한다.

0개의 댓글