12-Factors란?

Posted by negabaro kim on Thursday, June 4, 2020 Tags: software   1 minute read

12-Factor와 각 항목에 대한 필자의 생각을 정리해본다.

12 Factor app란?

12-Factors란?

cloud환경에서 돌아가는 어플리케이션이 지켜야할 규칙을 정의한것

1. 코드베이스(중요도★★★★★)

여기서 말하는 코드베이스는 버전관리 시스템을 말함(git,svn)

어플리케이션은 하나의 버전관리 시스템에 의해 관리되어야하고 동일한 코드로 운영/개발에 배포되어야한다.

주저리(중요도★★★★)

전반적으로 git 안쓰는 개발자들은 당연히 없을테니 사람을 때려선 안된다 같은 당연한 소리로 들림..

어플리케이션은 하나의 버전관리 시스템에 의해 관리되어야하고

백엔드는 bitbucket 프론트는 github면 NG인건가..?? 프론트 코드를 하나의 어플리케이션으로 보는건가..??

동일한 코드로 운영/개발에 배포되어야한다.

hot fix해야될 경우 프로덕션(운영)서버에 직접들어가 코드를 수정하는 경우가 실제 있기도.. 물론 다중화된 서버의 경우 전부 수동으로 코드 수정해야하므로 불가능한 경우도

컨테이너 베이스 디플로이시 컨테이너가 죽으면 수정한 코드가 사라진다든지 aws reserved instance같이 24시간 기동을 담보하지 않는 서버들에 디플로이시의 문제점들을 막기 위한 규칙이 아닐지 생각해봄

2. 종속성(Dependencies,依存関係)

명시적으로 선언되고 분리된 종속성

3. 설정

환경(environment)에 저장된 설정

4. 백엔드 서비스

백엔드 서비스를 연결된 리소스로 취급

5. 빌드, 릴리즈, 실행

철저하게 분리된 빌드와 실행 단계

6. 프로세스

애플리케이션을 하나 혹은 여러개의 무상태(stateless) 프로세스로 실행

7. 포트 바인딩

포트 바인딩을 사용해서 서비스를 공개함

8. 동시성(Concurrency)

프로세스 모델을 사용한 확장

9. 폐기 가능(Disposability)

빠른 시작과 그레이스풀 셧다운(graceful shutdown)을 통한 안정성 극대화

10. 개발/프로덕션환경 일치

개발, 스테이징, 프로덕션 환경을 최대한 비슷하게 유지

11. 로그

로그를 이벤트 스트림으로 취급

12. Admin 프로세스

admin/maintenance 작업을 일회성 프로세스로 실행

reference:

https://medium.com/dtevangelist/12-factors-%EB%9E%80-b39c7ef1ed30 https://12factor.net/ko/