12 Factors 요약 버전입니다.
종종 리마인드하다가 이번에 아예 외우려고 요약 하였습니다.
기존에 12 Factors를 아예 모르는 분은 아래 포스트를 먼저 보시길 추천합니다:)
12 Factors 방법론을 지키면
- 새로운 개발자가 프로젝트 참여하는 시간과 비용 최소화
- 여러 실행환경에서 이식성을 극대화
- 클라우드 플랫폼 배포에 적합
- 개발과 운영 차이 최소화하여 빠른 지속적인 배포(CD) 가능
- 스케일업하기 용이
한 App을 개발할 수 있음
1. 코 드베이스
- 버전 관리되는 하나의 코드베이스를 사용해야하고 다양한 배포(dev, prod)를 가져야함
- 예시 : git, svn
2. 디 펜던시
- 명시적으로 선언되고 분리된 종속성(특정 패키지가 암묵적으로 존재하지 않아야함)
- 예시 : pom.xml, sbt, gradle, go.mod
3. 콘 피규어
- 환경(environment)에 저장된 설정(코드와 분리되어야 하고 환경 변수로 설정)
- 컨테이너는 실행환경 단위로 구분되므로 환경변수 사용하면 편리
4. 백 킹서비스
- 백엔드 서비스를 연결된 리소스로 취급(로컬과 서드파티가 구별되지 않음)
- local의 mysql이든 aws의 s3든 똑같이 취급하며 모듈만 변경해서 사용 가능하도록 개발(주로 DB, Cache, Queue)
5. 빌 드, 릴리즈, 런
- 철저하게 분리된 빌드와 실행 단계
- 빌드는 개발자 눈앞에서 에러가 발생하므로 복잡해도 되지만 실행은 자동실행되는 경우가 있으므로 간단해야함
6~12는 확장성 관련
6. 프 로세스
- 애플리케이션을 하나 혹은 여러개의 무상태(stateless) 프로세스로 실행(유지될 데이터는 데이터베이스에 저장)
- Failover, 수평적 확장에 용이
7. 포 트바인딩
- 포트 바인딩을 사용해서 서비스를 공개함
- 다양한 서비스들 간에 영향받지 않고 다양한 환경에서 접근 가능
8. 컨 커런시
- 프로세스 모델을 사용한 확장
- 여러 머신으로 분리 가능하도록 쓰레드 레벨이 아닌 프로세스 레벨로 처리하자[수평적 확장 가능], 수직 확장도 용이
9. 디 스포저블러티
- 그레이스풀 셧다운(graceful shutdown)을 통한 안정성 극대화
- 시작 로직을 간단히해 바로 시작이 가능해지고, 재시작시 문제가 발생하지 않도록
10. 데 브 프로덕션 패러티
- 개발, 스테이징, 프로덕션 환경을 최대한 비슷하게 유지
- CI/CD, 테스트에 용이
11. 로 그
- 로그를 이벤트 스트림으로 취급
- 앱은 로그를 그냥 stdout에 출력, Fluentd 등으로 이를 수집/병합하고 Hadoop, AWS Kinesis 같은 분석 시스템을 사용해 분석
12. 어 드민 프로세스
- admin/maintenance 작업을 일회성 프로세스로 실행
- 원격환경에서 실행하기 용이, 큐 방식, 이벤트 방식으로 작업 수행 가능
전 앞글자만 따서 외우다보니 앞글자가 떨어져있습니다ㅎ
'Cloud > Cloud Native' 카테고리의 다른 글
The Twelve Factors (0) | 2021.08.12 |
---|---|
Microservice Architecture(MSA) (0) | 2021.07.15 |
Cloud Native (0) | 2021.07.09 |