The Twelve-Factor App: 클라우드 시대의 SaaS 개발 방법론
The Twelve-Factor App은 현대의 SaaS(Software-as-a-Service) 애플리케이션 개발을 위한 방법론으로, 선언적 설정, 운영체제와의 깨끗한 계약, 클라우드 플랫폼 배포 적합성, 개발/프로덕션 환경의 차이 최소화, 그리고 확장성을 핵심 원칙으로 제시합니다. 이 문서는 Heroku 플랫폼에서 수백 개의 앱 개발과 수십만 개의 앱 운영 경험을 바탕으로 작성되었으며, 코드베이스, 의존성, 설정, 백킹 서비스, 빌드/릴리스/실행, 프로세스, 포트 바인딩, 동시성, 폐기 가능성, 개발/프로덕션 패리티, 로그, 관리 프로세스 등 12가지 요소를 다룹니다. 이 방법론은 어떤 프로그래밍 언어와 백킹 서비스 조합에도 적용 가능하며, 앱의 유기적 성장과 개발자 간 협업 역학, 소프트웨어 침식 비용을 고려한 이상적인 개발 관행을 제시합니다.
The twelve-factor methodology can be applied to apps written in any programming language, and which use any combination of backing services (database, queue, memory cache, etc).
HN 토론
109- nebezb
여전히 매우 관련성이 높다. 적용하지 않더라도 15분 만에 읽어보면 배울 점이 많다.
유일한 불만은 3장: 설정이다 [1]
"환경에 설정을 저장하라", "Amazon S3나 Twitter 같은 외부 서비스의 자격 증명"
나쁜 조언일 뿐만 아니라, 개발자들이 모든 로컬 환경 비밀을 ~/.bashrc 파일에 넣어도 된다고 믿게 만드는 2차 효과도 있었다.
이렇게 하지 말라. 나머지 11.5개 요소는 따르라.
- browningstreet
나는 이것이 현재의 고통스럽고 지속 불가능한 MFA 트렌드의 부조리함을 보여주는 12계층 MFA 데모일 거라고 정말로 생각했다.
- dec0dedab0de
Heroku는 그 당시 미래가 될 것처럼 보였다. Azure에서 이해할 수 없는 말도 안 되는 것들을 이해하려고 애쓸 때마다 나는 우리가 잃어버린 더 단순한 미래를 꿈꾼다.
- sandeepkd
이것이 소프트웨어를 만드는 매우 자연스럽고 올바른 방법처럼 느껴졌던 것이 흥미롭다. 사람들이 그것을 북극성으로 언급했던 것을 기억한다. 그리고 점차 사람들은 그것에 가까워졌지만 지나쳐 버렸다. 개인적으로 이러한 개념들은 제너럴리스트 마인드셋, 즉 애플리케이션 아키텍트가 필요하다고 생각한다. 오늘날 우리가 가진 것은 팀 내의 많은 프로덕트 엔지니어, 프로덕트 매니저, 경영진이다. 프로덕트 엔지니어들은 항상 이러한 종류의 개념을 추진할 충분한 영향력이나 인센티브를 가지고 있지 않다.
그리고 동시에 이러한 개념들은 너무나 돌에 새겨진 것처럼 느껴져서, 어떤 식으로든 모든 사람들이 그것들을 계속해서 다시 발견하게 될 것이다.
- theozero
.env는 알다시피 문제가 가득하다... 하지만! varlock(https://varlock.dev)을 확인해 보라 - 무료이고 오픈 소스이며, 우리는 익숙한 구문(그 위에 작은 DSL)을 현대화하고 적용하여 훨씬 더 좋게 만들었다.
내장 검증, 타입 안전성, 함수를 통한 구성, 플러그인을 통한 로딩, 누출 방지 등이 있다.
- RKearney
제목은 (2011)이어야 한다.
- mermadicsolutio
나도 내 앱의 비밀 관리에 대한 트레이드오프를 고민 중이다. 저장은 쉽다. 암호화만 하면 대부분 괜찮다. 하지만 전달이 까다롭다. 환경 변수를 통한 전달은 확실히 간단하지만 누출될 수 있다. 다른 방법은 작업 범위 서명이지만, 이것은 작업이 비밀을 출력하는 것을 막지 못하며, 단지 폭발 반경을 줄일 뿐이다.
하지만 작업이 끝나거나 배포가 완료된 후 비밀을 삭제한다면 결과는 거의 같다.
- imglorp
좋은 모범 사례들이지만, 12-Factor 앱 모델은 상태를 범위 밖으로 정의함으로써 완전히 회피했다고 생각한다: "상태는 저기 외부 서비스에 있다, 세 마리 원숭이 이모지".
그래, 하지만 때로는 상태가 핵심이고 직접 관리해야 할 때도 있으며, 그 결과 일부 프로세스는 9 또는 10 요소가 되어야 한다.