The Twelve-Factor App - SaaS 앱을 만들기 위한 방법론 [한국어]
(12factor.net)- 설정 자동화를 위한 절차(declarative) 를 체계화 하여 새로운 개발자가 프로젝트에 참여하는데 드는 시간과 비용을 최소화한다.
- OS에 따라 달라지는 부분을 명확히하고, 실행 환경 사이의 이식성을 극대화 한다.
- 최근 등장한 클라우드 플랫폼 배포에 적합하고, 서버와 시스템의 관리가 필요없게 된다.
- 개발 환경과 운영 환경의 차이를 최소화하고 민첩성을 극대화하기 위해 지속적인 배포가 가능하다.
- 툴, 아키텍처, 개발 방식을 크게 바꾸지 않고 확장(scale up) 할 수 있다.
** The Twelve Factors **
I. 코드베이스 - 버전 관리되는 하나의 코드베이스와 다양한 배포
II. 종속성 - 명시적으로 선언되고 분리된 종속성
III. 설정 - 환경(environment)에 저장된 설정
IV. 백엔드 서비스 - 백엔드 서비스를 연결된 리소스로 취급
V. 빌드, 릴리즈, 실행 - 철저하게 분리된 빌드와 실행 단계
VI. 프로세스 - 애플리케이션을 하나 혹은 여러개의 무상태(stateless) 프로세스로 실행
VII. 포트 바인딩 - 포트 바인딩을 사용해서 서비스를 공개함
VIII. 동시성(Concurrency) - 프로세스 모델을 사용한 확장
IX. 폐기 가능(Disposability) - 빠른 시작과 그레이스풀 셧다운(graceful shutdown)을 통한 안정성 극대화
X. 개발/프로덕션환경 일치 - 개발, 스테이징, 프로덕션 환경을 최대한 비슷하게 유지
XI. 로그 - 로그를 이벤트 스트림으로 취급
XII. Admin 프로세스 - admin/maintenance 작업을 일회성 프로세스로 실행