Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

코드베이스

버전관리가 되는 하나의 코드베이스와 다양한 배포

Twelve-Factor 앱은 Git, Mercurial, Subversion 같은 버전 컨트롤 시스템을 사용하여 변화를 추적할 수 있어야 한다. 버전별 소스코드를 관리하는 저장소를 코드 저장소 줄여서 저장소라고 부른다.

코드베이스는 단일 저장소(Subversion 같은 중앙 집중식 버전 관리 시스템의 경우) 일수도 있고, 루트 커밋을 공유하는 여러 저장소(Git 같은 분산 버전 관리 시스템)일수도 있습니다. 지금은 분산 버전관리 시스템인 Git을 더 널리사용하는 추세다.

 Codebase

하나의 코드베스는 여러 환경으로 배포될 수 있다. 코드베이스와 앱 사이에는 항상 1대1 관계가 성립됩니다.

  • 코드베이스가 여러개 있는 경우, 앱이 아니라 분산 시스템으로 봐야합니다. 분산 시스템의 개별 구성요소가 앱이 되며, 개별 앱이 Twelve-Factor를 따릅니다.
  • 여러개 앱이 동일한 코드를 공유한다면 Twelve-Factor를 위반하는것입니다. 이를 해결하려면 공유하는 코드를 라이브러리화 시키고, 해당 라이브러리를 종속성 매니저로 관리해야합니다.
앱의 코드베이스는 한개여야 하지만, 여러 환경으로 배포할 수 잇다. 배포는 실행중인 앱의 인스턴스를 가리킵니다. 앱은 하나 이상의 개발, 하나 이상의 스테이징, 운영(production)으로 배포 될 수 있다. 이들 배포환경은 원격에 존재하는데, 이와 별개로 모든 개발자는 자신의 로컬 개발 환경에 실행되는 앱을 가질 수 있다. 이 역시 배포환경의 하나로 볼 수 있다.

배포마다 다른 버전이 활성화 될수 있지만, 코드베이스 자체는 모든 배포에 대해 동일합니다. 예를 들어, 개발자는 아직 스테이징 환경에 배포하지 않은 커밋이 있을 수 있으며, 스테이징 환경에는 아직 운영 환경에 배포되지 않은 커밋이 있을 수 있습니다. 하지만 이 모든 것들이 같은 코드베이스를 공유하고, 같은 앱의 다른 배포라고 할 수 있습니다.

목차 종속성