DEV

[Dev] 12 Factor App

What is 12 Factor App?


  • 최근의 소프트웨어는 서비스의 형태로 제공되는게 일반화 되면서, WebAPP 혹은 SaaS(Software as A Service)라고 부른다.
  • 12 Factor app은 아래 특징을 가진 SaaS 앱을 만들기 위한 방법론
    • 설정 자동화를 위한 절차(declative)를 체계화 하여 새로운 개발자가 프로젝트 참여에 드는 시간과 비용을 최소화
    • OS에 달리진 부분을 명확히하고, 실행 환경 사이의 이식성을 극대화
    • 최근 등장한 클라우드 플랫폼 배포에 적합하고, 서버와 시스템의 관리가 필요없게 된다.
    • 개발 환경과 운영환경의 차이를 최소화하고 민첩성을 극대화하기 위해 지속적인 배포가 가능하다.
    • 툴, 아키텍쳐, 개발 방식을 크게 바꾸지 않고 확장(scale up)할 수 있다.

12 Factor 방법론은 어떤 프로그래밍 언어로 작성된 앱에도 적용가능하고, 백엔드 서비스(Database, queue, memory cache 등)과 다양한 조합으로 사용할 수 있다.



12 Factors


  1. 코드베이스
  2. 종속성
  3. 설정
  4. 백엔드 서비스
  5. 빌드, 릴리즈, 실행
  6. 프로세스
  7. 포트 바인딩
  8. 동시성(concurrency)
  9. 폐기 가능(Disposability)
  10. 개발/프로덕션 환경 일치
  11. 로그
  12. Admin 프로세스



Ref

자세한 부분은 The Twelve-Factor App를 참조