헤로쿠 사에서 클라우드-네이티브 아키텍처를 구축하면서 나온 패턴들이 12-팩터 앱 가이드로 정착. 단일 유닛으로 이뤄진 어플리케이션 아키텍처를 declarative configuration, statelessness, deployment independence에 초점을 두고 설계하는 안내서
MSA에 적용
- 코드베이스
- 의존성
- 설정
- 백엔드 서비스
- 빌드, 릴리즈, 실행
- 프로세스
- 포트 바인딩
- 동시성
- 폐기 가능 (쓰고 버리기)
- 환경 일치
- 로그
- 관리 프로세스
코드베이스
- codebase
- 하나의 코드베이스는 VCS 에서 여러 배포버전을 기록하며, 하나의 앱은 하나의 코드베이스를 기반으로 소스 코드를 형상관리
- 코드는 여러 대의 분산처리 운영서버나 여러 개발자의 컴퓨터로 배포, 실행될 수 있다
의존성
- dependency
- 의존성은 명시적으로 선언하되 격리한다
- 인터넷이 차단된 개발 환경의 의존성을 어떻게 패키징할지도 고민 대상
- 시스템 유틸리티에 의존하지 않는다
설정
- configuratioon
- 여러 서버의 접속 정보 등을 설정을 코드에 저장하지 않는다
- 가변적인 것들은 환경변수를 이용한다
백엔드 서비스
- backing service
- 기반 서비스
- 부가 리소스로 취급하며 URL 를 통해 서비스에 접속한다
빌드, 릴리즈, 실행
- 빌드와 실행단계를 엄격히 구분한다
- CI / CD 와 연관된다