티스토리 뷰

1. 코드 베이스

배포된 애플리케이션은 하나의 코드 베이스만을 가져야한다. 코드는 git 같은 형상관리 도구를 이용해 관리한다.


2. 의존성

애플리케이션이 의존하는 시스템 도구나 라이브러리는 명시적으로 드러나야한다. 암묵적인 의존이 존재하여 다른 환경에 배포할때 문제가 되지않도록 해야한다.


3. 설정

배포마다 달라지는 설정은 분리하여 관리한다. 보통 local, test, release에 따라 다른시스템에 대한 정보들이 변경되게된다. 이런 설정들은 따로 관리할 수 있도록 한다.


4. 뒷단 서비스

애플리케이션의 뒷단에서 실행되는 모든 서비스들은 연결된 리소스로 취급하며, 실행환경에 따라 사용하거나 사용하지않을 수 있어야한다.


5. 빌드, 릴리즈, 실행

빌드, 릴리즈, 실행의 각 단계는 엄격하게 분리한다.


6. 프로세스

애플리케이션은 뒷단의 데이터 스토어에 데이터를 저장하고 그 자신은 무상태 프로세스로 배포되어야한다.


7. 포트바인딩

독립형 서비스는 지정된 포트별로 독립적으로 실행된다.


8. 동시성

동시처리는 프로세스를 확장함으로써 수평적으로 확장할 수 있어야한다. (scale-out)


9. 폐기가능성

애플리케이션은 빠르게 시작되고, 빠르게 종료될 수 있어야한다.


10. 개발/운영환경 동일

개발~운영까지 모든 환경은 동일해야한다. 환경이 다를 경우 운영에서는 발생하지만 개발에서는 발생하지않는 것과 같은 문제가 나타나게 된다.


11. 로그

애플리케이션은 이벤트 스트림으로 로그를 생성한다.


12. 관리자 프로세스

애플리케이션 관리에 사용되는 코드도 애플리케이션 코드와 함께 관리되고, 함께 패키징되어야 한다.

댓글
댓글쓰기 폼