본문 바로가기
Spring Cloud

[Spring Cloud] 12Factors

by sinabeuro 2022. 3. 29.
728x90

헤로크라는 개발 회사에서 제시한 12가지 항목으로,

클라우드 서비스를 개발 시 고려해야하는 항목을 정리한 것입니다.

 

https://12factor.net/

 

The Twelve-Factor App

Background The contributors to this document have been directly involved in the development and deployment of hundreds of apps, and indirectly witnessed the development, operation, and scaling of hundreds of thousands of apps via our work on the Heroku pla

12factor.net

 

I. Codebase
One codebase tracked in revision control, many deploys
형상관리를 위해서 코드를 한 곳에서 배포하는 것이 주목적입니다. 
이후 여러 개발 환경에 배포하기 위해 코드의 동일적인 관리가 필요한다.


II. Dependencies
Explicitly declare and isolate dependencies
각 마이크로 서비스는 자체 종속성을 가지고 패키지되어있어 전체 시스템에 영향을 주지않는 상태에서 운영, 변경 되어야한다.

III. Config
Store config in the environment
시스템 코드 외부에서 구성 관리도구를 통해서 마이크로 서비스에 필요한 작업들을 제어하는 것을 말한다.


IV. Backing services
Treat backing services as attached resources

보조 서비스 데이터 베이스, 메시징, 케싱, 서비스 브로커를 이용해서 마이크로 서비스가 가져야할 기능을 추가적으로 지원해야하는 것을 말함.

 

V. Build, release, run
Strictly separate build and run stages

빌드, 배포, 실행을 각각 분리해야한다는 것을 말하고 있다.


VI. Processes
Execute the app as one or more stateless processes

마이크로 서비스는 실행 중인 다른 서비스와 분리된 채로 독립적으로 운영되어야한다.

Dependencies와 일치한다.

필요한 자원이 있다면 캐시와 데이터 저장소를 이용해서 외부와 동시화하면 된다.


VII. Port binding
Export services via port binding

각각의 마이크로 서비스는 자체 포트에서 노출되는 인터페이스 및 노출되는 기능이 있어야한다.


VIII. Concurrency 동시성, 병행성 
Scale out via the process model

하나의 서비스가 여러 인스턴스에 동일한 형태로 복사되어 운영됨으로서 분산이 가능하다.

이런한 복사된 인스턴스 간에 동시성이 이루어져야한다.


IX. Disposability 일회성
Maximize robustness with fast startup and graceful shutdown

서비스 인스턴스 자체가 삭제 가능해야 하고 확장성 기회를 높혀야하고 정상적으로 종료를 할 수 있는 환경이 되어야한다.


X. Dev/prod parity
Keep development, staging, and production as similar as possible


XI. Logs
Treat logs as event streams

마이크로 서비스에 의해서 생성된 로그를 이벤트 스트림으로 처리해야한다. 

즉, 하나의 시스템 안에서 구성되고 있는 로그를 출력하는 로직은 기존에 쓰고 있던 어플리케이션 로직과 분리해야하며,

어플리케이션 종료된 상태에서도 로그는 작동할 수 있는 상태여야한다.

Azure Monitor, ELK 도구 등을 활용. 장기적으로 쌓여있는 로그를 분석할 수 있다.


XII. Admin processes
Run admin/management tasks as one-off processes

모든 마이크로 서비스들은 파악하기 위한 적절한 모니터링 기술이 있어야한다.

리포팅, 데이터 분석기능 등이 포함되어야 한다.

 

 

+ 3 

피보탈 클라우드 서비스 회사가 추가 고려 사항을 제시함

13. API first

모든 마이크로 서비스는 API로 관리되어지며, 사용자 측면에서 어떤 측면에서 어떻게 쓸 것인지 고려해야한다.

 

14. Telemetry 원격 측정

개발 관리자 항목과 유사하며, 모든 지표는 시각화 수치화해서 관리되어져야한다.

 

15. Authentication and authoriaztion

API 사용함에 있어 인증을 통해서 데이터 교환이 이루어져야한다.

 

728x90

'Spring Cloud' 카테고리의 다른 글

Spring Cloud - Spring Cloud Config Server 와 github 연동  (0) 2022.05.26

댓글