12 팩터 앱
IT 위키
12 팩터 앱(영어: The Twelve‑Factor App)은 클라우드 환경에서 서비스형 소프트웨어(SaaS)를 개발하고 운영할 때 이식성, 확장성, 유지보수성을 확보하기 위해 제안된 12가지 원칙이다.
개요[편집 | 원본 편집]
12‑Factor 앱 방법론은 2011년 Heroku 소속 개발자들이 정의하였으며, 클라우드 환경에서 애플리케이션을 일관되게 개발, 배포, 운영하기 위한 실천 지침으로 널리 사용된다. 이 방법론은 특정 언어나 프레임워크에 종속되지 않으며, 마이크로서비스 및 DevOps 문화와 잘 맞는다.
12가지 원칙[편집 | 원본 편집]
- 1. 코드베이스(Codebase)
- 하나의 애플리케이션에 대해 하나의 코드베이스를 버전관리 시스템(Git 등)으로 관리하고, 여러 환경(개발·테스트·운영)에 배포될 수 있어야 한다.
- 2. 의존성(Dependencies)
- 시스템에 기본 탑재된 패키지에 의존하지 않고, 모든 의존성을 명시적으로 선언하고 분리해야 한다.
- 3. 설정(Config)
- 실행 환경마다 다른 설정 값은 코드에 하드코딩하지 말고 환경 변수 등 외부 설정으로 분리해야 한다.
- 4. 부가 서비스(Backing Services)
- 데이터베이스, 메시지 큐, 캐시 등은 애플리케이션과 동일한 방식으로 접근되는 외부 리소스로 간주해야 한다.
- 5. 빌드, 릴리스, 실행(Build, Release, Run)
- 애플리케이션의 빌드, 릴리스, 실행 단계를 명확히 분리하여 관리해야 한다.
- 6. 프로세스(Processes)
- 애플리케이션은 상태를 저장하지 않는(stateless) 독립적인 프로세스로 실행되어야 한다.
- 7. 포트 바인딩(Port Binding)
- 내장 웹 서버 등을 사용하여 포트를 바인딩하고 외부와의 통신을 직접 처리해야 한다.
- 8. 동시성(Concurrency)
- 프로세스를 유형별로 나누고 독립적으로 수평 확장할 수 있도록 구성해야 한다.
- 9. 폐기성(Disposability)
- 빠른 시작과 안전한 종료가 가능해야 하며, 시스템은 유연하게 장애에 대응할 수 있어야 한다.
- 10. 개발과 운영 환경의 일치(Dev/Prod Parity)
- 개발, 스테이징, 운영 환경 간 차이를 최소화해야 한다.
- 11. 로그(Logs)
- 로그는 이벤트 스트림으로 표준 출력에 기록하고, 실행 환경에서 이를 수집·분석해야 한다.
- 12. 관리자 프로세스(Admin Processes)
- 데이터베이스 마이그레이션, 유지보수 스크립트 등은 일회성 관리 명령으로 실행하되, 앱과 동일한 환경에서 실행되어야 한다.
장점[편집 | 원본 편집]
- 클라우드 기반에서의 이식성 및 유연한 확장성 확보
- DevOps 및 CI/CD 파이프라인과의 높은 호환성
- 환경 간 일관성 확보를 통한 릴리스 오류 감소
- 무상태 프로세스 설계를 통한 고가용성 구조 구현
한계 및 고려사항[편집 | 원본 편집]
- 단순한 애플리케이션에는 과도한 구조일 수 있다.
- 레거시 시스템이나 상태 유지가 필요한 앱에는 일부 원칙 적용이 어려울 수 있다.
- 운영 복잡성이 증가할 수 있으며, 자동화 및 인프라 수준에서의 준비가 필요하다.
같이 보기[편집 | 원본 편집]
참고 문헌[편집 | 원본 편집]
- The Twelve-Factor App. https://12factor.net/
- Red Hat. “An Illustrated Guide to 12‑Factor Apps”. https://www.redhat.com/
- TechTarget. “What is Twelve-Factor App?”. https://www.techtarget.com/definition/twelve-factor-app