Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

The Twelve Factors

The Twelve-Factor App 문서 Joinc 위키 문서로 복사했습니다. 이 내용을 클라우드 환경에 맞게 해석해서, 아키텍처 문서를 만드는게 최종 목표입니다.

이 방법론은 Heroku의 개발자가 초안을 작성했으며, 2011년에 Adam Wiggins가 처음 발표했다.

머리말

클라우드가 널리 사용 되면서 소프트웨어를 서비스 형태로 제공하는 SaaS(Software As A Service) 혹은 웹앱이라고 부르는 애플리케이션이 일반화됐다. 이에 따라 SaaS 혹은 웹앱 형식의 애플리케이션을 개발하기 위한 방법론이 개발됐는데, 이를 12가지 요소로 정리한게 Twelve-Factor이다.

  • 설정 자동화를 위한 절차(declarative) 를 체계화 하여 새로운 개발자가 프로젝트에 참여하는데 드는 시간과 비용을 최소화한다.
  • OS에 따라 달라지는 부분을 명확히하고, 실행 환경 사이의 이식성을 극대화 한다.
  • 최근 등장한 클라우드 플랫폼 배포에 적합하고, 서버와 시스템의 관리가 필요없게 된다.
  • 개발 환경과 운영 환경의 차이를 최소화하고 민첩성을 극대화하기 위해 지속적인 배포가 가능하다.
  • 툴, 아키텍처, 개발 방식을 크게 바꾸지 않고 확장(scale up) 할 수 있다.
Twelve-Factor 방법론은 프로그래밍 언어에 상관없이 적용할 수 있으며, 백앤드 서비스(데이터베이스, 큐, 메모리캐시)와 다양한 조합으로 사용 할 수 있다.

배경

이 문서에 기여한 사람들은 수백개 앱의 개발과 배포에 직접 참여했으며, Heroku 플랫폼을 통해서 방대한 앱의 개발, 운영, 확장을 간접적으로 관찰했다.

이 문서는 실제로 쓰이는 다양한 SaaS 앱에 대한 경험과 관찰을 종합한 결과물이다. 특히 시간이 지나면서 앱이 유기적으로 성장하는 부분, 앱 코드베이스에서 작업하는 개발자들 간의 협업, 시간이 지나면서 망가지는 소프트웨어 유지비용을 줄이는 법에 집중하여 이상적인 앱 개발 방법을 찾고자 했다.

이 문서는 우리가 최신 애플리케이션 개발에서 만났던 몇가지 시스템적인 문제에 대한 인지도를 높이고, 이 문제들을 가지고 논의 하는데 필요한 공통의 어휘를 제공하며, 이 문제들에 대한 넓은 개념의 해결책과 용어를 제공하기 위해 작성 했다. 형식은 Martin Fowler의 책, Patterns of Enterprise Application Architecture과 Refactoring에서 영감을 받았다.

문서의 대상

서비스로 동작하는 애플리케이션을 개발하는 모든 개발자. 그런 애플리케이션을 배포하고 관리하는 인프라 엔지니어.

The Twelve-Factor App

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