2010-05-17 3 views
4

코드 릴리즈를 위해 만들어진 민첩한 프로세스를 알고 계십니까? 애자일의 주요 테마 중 하나는 자주 출시되며 각 회사/클라이언트는 코드 릴리스를 제어하는 ​​자체 테스트/승인 프로세스를 갖게됩니다. 대부분의 경우 이러한 작업은 "빈번한 릴리스"속도를 늦 춥니 다.민첩한 코드 릴리즈

현재 우리는 독점적 인 도구 기반 작업 흐름을 가지고 있습니다. 코드 승격이 필요한 팀은 최종 UAT 서버 중 하나에 승격 요청을해야합니다. 일단 이것이 완료되고 테스트가 완료되면 특정 고객, 기술/비 기술 관리자가 승인을 받아야하며, 그러면 프로덕션 배포 단계로 넘어갑니다. 그 사이에 스프린트 계획 회의 나 그런 종류의 회의는 없습니다.

효과적이었던 코드 릴리스 프로세스 (민첩성)는 무엇입니까?

+1

이 질문은 [이 주제에 관해서 내가 질문 할 수있는 항목은 무엇입니까?] (// stackoverflow.com/help/on-topic)에서 정의 된 것처럼이 사이트의 범위에 포함되지 않았기 때문에 주제가 아닙니다. 질문 유형을 묻지 말아야합니까?] (// stackoverflow.com/help/dont-ask) [다른 Stack Exchange 사이트] (// stackexchange.com/sites#name), * 아마도 * 요청할 수 있습니다. [pm.se] 또는 [softwareengineering.se]. 질문을 올리려는 사이트에 대한 도움말 센터의 주제 페이지를 읽어보십시오. – Makyen

답변

5

워크 플로우가 진행되는 동안 스프린트 계획 미팅이없는 이유는 무엇입니까? 리포지토리에 태그를 지정하고 다음 버전을 즉시 사용할 수 있습니다. 후보 릴리스에서 버그 수정이 필요한 경우 태그에서 분기하여 수정하십시오. 승인 워크 플로와 최종 UAT 테스트는 개발 팀을 포함 시키거나 지연 시켜서는 안됩니다. (실제로 Git이나 Mercurial 같은 것을 사용하고 있다면 비 분산 SCM 용어를 사용하지 마십시오.)

Scrum과 같은 민첩한 프로세스를 사용하는 경우 릴리스 출력은 "릴리스 된 소프트웨어"가 아닌 "해제 가능한 소프트웨어"입니다. 프로덕션에 릴리스되는 오버 헤드가 있으면 병렬로 발생할 수 있습니다. 나는 테스트의 대다수가 스프린트의 일부로 있어야한다고 덧붙여 야합니다. 아마도 사이클 중에 테스트가 정확히 수행되었는지 다시 확인해야 할 필요가있을 것입니다.

+3

"Releasable"vs. "released"은 아주 좋은 지적입니다. 개발자는 릴리스 가능한 소프트웨어를 만들어야합니다. 관리자, QA 및 기타 이해 관계자는 특정 릴리스 가능 빌드가 실제로 릴리스되는지 여부를 결정할 것입니다. 그리고 버그 수정을 포기하고 수정본을 다시 병합하는 것을 두려워해서는 안됩니다. –

-1

귀하의 제품이 미션 크리티컬한지 여부에 달려 있습니다. "출시"란 귀하의 평생 중요한 소프트웨어를 병원에 출시한다는 의미입니까? 아니면 캐주얼 게임 웹 사이트입니까?

업무가 미션 크리티컬이거나 치명적인 경우 애자일이 당신을 위해 일하지 못할 수도 있습니다. 이 경우 배포하기 전에보다 공식적인 테스트를 수행해야 할 수 있습니다.

미션 크리티컬이 아닌 웹 사이트에서 작업하는 경우 (이 방법은 그렇지 않은 경우가 더 낫습니다!), 약간의 자유를 줄 수 있습니다. 이렇게하면 반복 속도가 빠르고 반복적으로 다시 릴리스 할 수 있습니다.

민첩성이 뛰어난 제품의 경우 개발자가 스스로 테스트하고 고객이 결과를 볼 수있게 한 다음 가능한 한 빨리 작은 그룹의 사용자 (무작위로 선택된 활성 사용자 - 복도 테스트)를 시작합니다. - 작은 일이라면, 심지어 전체 사용자층에게도. 웹 서비스에서이 작업을 빠르게 수행하고 많은 고통을 겪지 않고 해결할 수 있습니다.

+2

애자일 프로세스는 버그가 많은 소프트웨어를 릴리스하고 빨리 수정하는 것에 대해서는 __not__이며 버그가있는 소프트웨어 기간을 릴리스하지 않는 것에 관한 것입니다. –

+2

당신은 카우보이 코딩과 거의 같다고 생각합니다! –

+0

@ 무기명 : 차이가 있습니까? : p – Randolpho

3

"큰"릴리스를 테스트하는 데 문제가있는 경우 릴리스주기가 길어집니다. 릴리스의 기본 원칙은 종종 작은 릴리스 인 경우가 종종 있습니다. 문제가 있고 테스트를 오래 걸리지 않는 작은 기능 세트 만 출시하는 경우 병목 현상이되는 릴리스 엔지니어링 팀이므로 폭포 승인 절차를 변경해야합니다.

스프린트 중에 공통 개발 환경으로 모두 릴리스하고 스프린트 중에 QA 환경으로 해제한다.

완성 된 (테스트 한) 기능 만 데모하기 위해 스프린트 끝에 참조 환경으로 출시하십시오.

제품 소유자가 원할 때마다 제품으로 출시하십시오.

버그는 릴리스의 빈도와 상관 관계가 없어야하며 실제로 더 많은 릴리스가 실제로 적은 위험과 적은 버그를 의미해야하므로 문제가되지 않아야합니다. 테스트는 동안 수행되어야하며 이후에는 수행되지 않습니다. 무언가가 완전히 테스트되지 않았고 버그가있을 수 있다면 으로 끝나야하며 데모되지 않아야합니다.

최종 생산 버전의 제품 소유자는 전화를해야합니다. 정치화 된 폭포 공개 엔지니어링 프로세스가 거의 결코은 버그를 생산 중단 상태로 유지합니다. 관리자가 "ok"라고 표시된 양식의 확인란을 선택하면 고객의 눈에서 버그가있는 코드가 유지되지 않습니다. 개발 중 QA로 자주 출시됩니다. 테스트는 릴리스 엔지니어링주기의 일부가 아니어야하며 개발주기의 일부 여야합니다.

+0

"테스트는 릴리스 엔지니어링주기의 일부가 아니어야하며 개발주기의 일부 여야합니다." - UAT 또는 사전 제작 고객 테스트는 어떻습니까? 이것들은 제가 볼 수있는 한 멀리에서 중요한 역할을합니다. –

+0

사용자 수락 테스트 최종 사용자 고객 테스트는 기능 및 통합 테스트와 다릅니다. 결국 제품 소유자가 자신의 업무를 수행하고 있다는 확인 만해야합니다. 제품 소유자는 기능을 사용하기 전에 기능을 테스트하고 수락해야합니다. UAT 및 최종 사용자 고객 테스트는 시스템에서 버그를 발견하는 데있어 __not__해야합니다. 그것은 그들이 질문했지만 부적절한 것들을 찾아야 만합니다. –

+0

+1하지만 회귀 테스트가 각 릴리스에 대해 수행되어야하기 때문에 나중에 릴리스 * 할 때 테스트하는 데 오랜 시간이 걸린다는 사실에 비춰 보입니다. 다행히도 이것은 자동화되어 있으므로 빠르지 만 인정되어야합니다. – Randolpho