명확히하기 위해 문제는 실질적으로 이 아니며 배포하는 방법은입니다. 그게 다른 질문입니다. 더 깊은 원칙은 @DaveE가 언급 한 이유로 테스트 환경이 가능한 한 생산에 가깝도록해야한다는 것입니다. 작은 배치 차이로 인해 테스트가 쓸모 없게 될 수 있습니다.
실제 설치를 미러링하는 것이 개발 중에 테스트하기에는 너무 많은 작업이라고 생각합니다. 여기에는 두 가지 해결책이 있습니다. 테스트 환경을 프로덕션 환경과 다르게 만드는 것은 그 중 하나가 아닙니다.
먼저 제작 설치를 쉽게하십시오. 이것은 자동 프로세스로 수동 프로세스 (여기에 파일 복사,이 스크립트 실행, 이러한 권한 변경 ...)를 할 수 있습니다. 또는 실제로 배치가하는 것을 줄일 수 있습니다. 세부 사항을 모른 채 더 이상 말할 수 없습니다.
테스트 환경이없는 경우 dev 환경 은 테스트 환경이이되어 프로덕션 전의 유일한 방어선이라는 더 엄격한 규칙을 따라야합니다. 이를 피하려면 테스트 할 준비 서버를 만드십시오. 스테이징 서버는 가능한 많은 제품을 미러링하는 서버입니다. 개발 사본은 먼저 스테이징 서 v에 설치되고 프로덕션으로 푸시되기 전에 테스트됩니다. 이것은 당신에게 2 단계 테스트 시스템을 제공합니다. 정확하지 않은 개발 환경에서 일부 테스트를 수행하고 전체 테스트 배터리를 준비 환경에서 수행합니다. 전체 테스트 스위트를 항상 실행할 필요는 없으므로 스테이징 서버를 지속적으로 업데이트 할 필요가 없습니다. YMMV. 그런 다음 개발 환경에서 모서리를 잘라내어 개발 속도를 높이면서 모든 것이 제작 전에 전체 설치에서 테스트된다는 것을 알 수 있습니다.
리소스가있는 경우 준비 서버는 프로덕션 환경의 모든 하드웨어 및 소프트웨어를 완벽하게 반영합니다. 아마도 가상 머신이나 하위 디렉토리 일 수 있습니다.나머지 팀에서 구매할 필요가 없다면 둘 다 개발 컴퓨터에서 살 수 있습니다.
설치 프로세스와 준비 서버를 자동화하면 continuous integration testing을 시작할 수 있음을 의미합니다. 이는 "모든 커밋에서 테스트 서버에서 테스트를 자동으로 실행"하는 멋진 용어입니다. 연속 통합 시스템의 예는 Jenkins입니다. 그렇다면 배치가 얼마나 복잡한 지 상관없이 로봇이 처리해야합니다.
처음에는 까다로운 작업처럼 보일 수도 있지만, 버튼을 누르지 않아도 테스트가 가능하도록 모든 것이 함께 제공됩니다.
궁극적으로 새 코드는 실제 푸시되기 전에 가능한 한 프로덕션과 유사한 환경에서 테스트해야합니다. 이를 달성하는 데는 여러 가지 방법이 있지만 이는 견고한 규칙입니다.
나는 공격적인 단어가 허용되지 않는다는 것을 알았습니다. –
@Schwern ... 마지막에 주제가 호언 장담하고 습관으로 f 단어를 사용하는 것에 대해 유감스럽게 생각합니다. q를 다시 읽으면서 나는 그 점에 대해 아무런 지적이 없다는 것을 깨달았고 그냥 삭제하거나 downvoting하는 대신 편집 해 주셔서 감사합니다. 건배! – NeuronQ