저는 매우 큰 인터넷 회사의 릴리스 관리 팀에서 일하고 있습니다. 우리는 본질적으로 위에서 설명한 프로세스를 사용하며 의도적으로 해당 프로세스를 선택했습니다. 우리의 방법론에서, 스테이징은 생산의 최종 테스트 수준을위한 분기 메커니즘으로 사용됩니다.
프로덕션에 가기 전에 모든 테스트를 수행하고 싶지만 사용자가 많은 크고 복잡한 환경에서는 도달하기가 매우 어려운 목표입니다. 특히 QA에 테스트 소프트웨어를 적절히로드하는 것은 사실상 불가능합니다. 기능 테스트는로드 테스트보다 자동화하기가 훨씬 쉽습니다. 수천 명의 사용자가 서버를 공격하면 상황이 이상하고 예측하기 어렵습니다.
우리가하는 일은 다음과 같습니다.
- 개발
- 릴리스 테스트
- 내 그룹은 릴리스 자체를 분석합니다
- 설치 로그 검토
- 롤백 테스트
- 품질 관리
그것이 우리가 준비 단계와 생산 단계를 구분하는 지점입니다. 우리는 출시를 위해 기차 모델을 사용하며 몇 주마다 새로운 기차가 시작됩니다. 번호가 매겨진 열차도 스테이징 서버 (생산중인)로 이동합니다. 홀수 열차는 그렇지 않습니다.
짝수 열차 사이에서 개발자는 개별 변경 사항을 스테이징 서버에 푸시 할 수 있습니다 ( 물론 QA에서 변경 사항을 테스트 한 후 ). 이를 통해 실제 프로덕션 환경에서 소프트웨어가 예상대로 작동하는지 확인할 수 있습니다. 이것은 일반적으로 더 높은 위험으로 간주되는 구성 요소를 위해 예약되어 있으며 모든 작은 조각을 준비로 푸시하지는 않습니다.
그런 다음 모두 다음 열차가 시작될 때 스테이징 서버의 내용을 지우고 기차 기준선으로 다시 설정한다는 것을 이해합니다. 개발자는 변경 사항이 기차에 도착했는지 확인하거나 아직 일반적인 용도로 준비가되지 않았 음을 결정합니다.이 경우 해당 변경 사항은 준비 서버에서 지워집니다.
요약하면 (적어도 우리에게는) 짧은 대답은 QA에서 복잡한 시스템을 완전히 테스트하는 것이 불가능하다는 것입니다. 스테이징은 제한된 생산 테스트를 수행하는 안전한 방법을 제공합니다.
관련 메모에, 방금 발표 프로세스의 작동 방식에 대해 발표 한 프레젠테이션의 슬라이드가 있습니다.