언제 릴리스 빌드로 전환해야합니까?


17

Jez Humble의 Continuous Delivery 에 설정된 관행 중 하나는 하나의 패키지를 구축 한 후 배포 한 각 환경에 배포해야 배포 및 아티팩트가 프로덕션으로 이동하기 전에 여러 번 테스트 된 것입니다.

나는이 아이디어를 전적으로지지한다.

반면에 라인 번호가있는 스택 추적을 제공하는 디버그 모드 빌드는 원격 디버그 기능과 마찬가지로 테스트 환경에서 매우 유용합니다. 그러나 릴리스 빌드를 프로덕션으로 보내려고합니다.

따라서 첫 번째 원칙을 따르는 사람들은 어느 시점에서 디버그에서 릴리스 빌드로 전환합니까?

테스트 환경에 처음으로 배포하기 전에 실제 릴리스 후보를 조기에 테스트하기 위해 디버그 모드 손실 비용을 계산할 가치가 있습니까? 또는 프로모션 프로세스의 어느 시점에서 소프트웨어를 통해 빌드 프로세스를 신뢰한다고 판단하여 다시 빌드합니까? 아니면 모든 것을 망쳐 놓고 디버그 버전을 프로덕션에 배포합니까?

참고 : 일반적으로 빌드 타임에 스위치를 구성하지 않고 구성에서 스위치를 쓸어 넘길 수 있기 때문에 이것이 해석 언어에 실제로 적용되지 않는다는 것을 알고 있습니다.


답변 해 주셔서 감사합니다. 생각하기에 좋은 음식. 그러나 "빌드 변경의 요점은 대부분 오류의 재생산 비용에 달려있다"는 생각 프로세스를 지우는 데 도움이된다고 생각합니다.
pdr

답변:


5

따라서 첫 번째 원칙을 따르는 사람들은 어느 시점에서 디버그에서 릴리스 빌드로 전환합니까?

소스 코드가 버전 번호를 받고 데비안 빌드 큐에 들어갔을 때 우리는 일찍 전환합니다. 우리는 잘 지정된 입력 및 출력과 시스템 상호 작용이 거의없는 과학 소프트웨어를 수행하는 운이 좋은 상황에 있기 때문에 오류 상황을 재현하는 비용은 상당히 낮습니다.

이것은 또한 일반적인 대답입니다. 빌드를 변경하는 시점은 주로 오류의 재생산 비용에 달려 있습니다. 이것이 매우 높으면 고객을 테스트하기 위해 디버그 빌드도 제공합니다. 프로덕션 빌드에서 빌드 실패의 위험이 있지만 테스트 케이스 재생에 몇 주를 소비하는 것보다 저렴할 수 있습니다.


3

따라서 첫 번째 원칙을 따르는 사람들은 어느 시점에서 디버그에서 릴리스 빌드로 전환합니까?

QA로 이동하자마자 릴리스 빌드로 전환합니다. 그러나 릴리스 빌드를 빌드 할 때마다 빌드 프로세스는 dll의 디버그 버전도 빌드합니다. 이를 통해 디버그 dll을 QA 환경에 신속하게 드롭하고 필요한 경우 추가 정보를 얻을 수 있습니다.

dll의 릴리스 및 디버그 버전은 모두 몇 년 동안 백업 및 유지됩니다.


2

우리 환경에서는 코드가 여러 사이트에 배포됩니다. 따라서 각 배포 인스턴스에 다른 컨텍스트가 적용되어야합니다. 일반적으로 주요 "위험이 덜한"장소에 배포하고 경험을 확인합니다.

이 배포는 여전히 프로덕션 상태 이므로 '디버그'모드가 아닙니다. 그러나 또한 테스트가 잘 수행되었다고 가정합니다.

물론 디버그 모드를 해제하면 사이트의 코드를 빠르게 디버그하기가 어려울 수 있습니다. 그러나 릴리스가 실패하면 프로덕션은 폴백 릴리스로 다시 전환됩니다.

그러나 동일한 환경을 유지 보수하거나 작성하려고합니다. 이러한 환경을 재현하여 다시 테스트 할 수 있습니다. (이것은 항상 사소한 것이 아니라는 것을 알고 있습니다) 그러나 때때로 우리가 필요한 것은 거래 / 입력을 재현하는 것입니다.

요점은 디버그 모드 릴리스가 프로덕션에 있어서는 안되는 유혹의 정도입니다 . 그러나 나는 이것이 규칙이라고 말하지 않을 것입니다.

또 다른 것은,이 릴리스는 다른 건물이 아직 받아들이지 않을 때까지 상당한 시간 동안 운영 될 때까지 시험판이라고 불립니다.

빌드 프로세스 자체에 결함이 없는지 확인하는 몇 가지 다른 방법이 있습니다. 다음을 참조하십시오 : RAD 환경에서 릴리스 품질을 향상시키는 간단한 방법


2

우리는 개발자 컴퓨터가 디버그 빌드를 빌드하도록 설정했습니다. 그러나 개발자가 코드를 커밋하면 배포 패키지가 TeamCity (Continuous Integration Environment)에서 생성되고 릴리스 용으로 빌드됩니다. 따라서 QA에 배포하기로 결정할 때마다 CI 서버에서 최신 배포 패키지를 가져 와서 배포하므로 개발자 컴퓨터에 있지 않으면 항상 릴리스됩니다.

BTW, 일부 언어의 경우 릴리스를 빌드 할 때에도 디버그 기호를 만들 수 있습니다. 예를 들어 .NET에는 최적화를 허용하지만 여전히 디버그 파일을 만드는 "pdb-only"설정이 있습니다. 릴리스 버전에 대한 디버깅은 라인 단위가 아니기 때문에 까다로울 수 있지만 여전히 도움이 될 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.