12요소 앱(2025)

2 weeks ago 21

12요소 앱은 SaaS를 이식성과 확장성이 높고 지속적으로 배포할 수 있도록 설계하는 개발 방법론임 선언적 설정 자동화와 운영체제 간 명확한 계약을 통해 신규 개발자의 합류 비용을 줄이고 실행 환경 사이의 이동성을 높임 개발과 프로덕션의 차이를 최소화하고 빌드·릴리스·실행을 분리해 지속적 배포에 적합한 구조를 만듦 코드베이스, 의존성, 설정, 프로세스, 로그 등 12가지 원칙은 언어나 데이터베이스·큐·메모리 캐시 같은 백엔드 서비스 조합과 무관하게 적용 가능함 서비스형 애플리케이션의 개발자와 배포·관리를 담당하는 운영 엔지니어가 공통 어휘와 실천 원칙으로 활용할 수 있음 SaaS의 개발·배포·확장을 위한 방법론 현대 소프트웨어는 웹 앱이나 SaaS 형태로 흔히 제공되며, 12요소 방법론은 이러한 애플리케이션을 개발·배포·확장하는 이상적인 실천 방식을 정리함 지향하는 애플리케이션의 특성은 다음과 같음 선언적 형식으로 설정을 자동화해 프로젝트에 합류하는 개발자의 시간과 비용을 최소화함 기반 운영체제와 명확한 계약을 맺어 실행 환경 사이의 이식성을 극대화함 현대적인 클라우드 플랫폼에 배포해 서버와 시스템을 직접 관리할 필요를 없앰 개발과 프로덕션의 차이를 줄여 민첩한 지속적 배포를 지원함 도구·아키텍처·개발 방식을 크게 변경하지 않고도 확장 가능함 Heroku에서 수백 개 앱을 직접 개발·배포하고, 수십만 개 앱의 개발·운영·확장을 관찰한 경험을 토대로 구성됨 애플리케이션이 시간에 따라 자연스럽게 성장하는 과정과 개발자 간 코드베이스 협업, 소프트웨어 침식 비용 방지에 특히 주목함 현대 애플리케이션 개발의 구조적 문제를 알리고, 이를 논의할 공통 어휘와 폭넓은 개념적 해법을 제공하는 것이 목적임 형식은 Martin Fowler의 Patterns of Enterprise Application Architecture와 Refactoring에서 영감을 얻음 서비스로 실행되는 애플리케이션의 개발자와 이를 배포·관리하는 운영 엔지니어를 대상으로 함 열두 가지 요소 I. 코드베이스(Codebase): 버전 관리되는 하나의 코드베이스로 여러 배포를 운용함 II. 의존성(Dependencies): 의존성을 명시적으로 선언하고 격리함 III. 설정(Config): 설정을 실행 환경에 저장함 IV. 백엔드 서비스(Backing services): 데이터베이스·큐·메모리 캐시 같은 서비스를 연결된 리소스로 취급함 V. 빌드·릴리스·실행...

Read Entire Article