요약
이 모듈에서는 ‘배포 패턴’을 새 애플리케이션 기능을 사용자에게 원활하게 출시하는 자동화된 방법으로 정의했습니다. 적합한 배포 패턴은 가동 중지 시간을 최소화하는 데 도움이 될 수 있습니다. 또한 새 기능을 사용자에게 점진적으로 출시할 수 있습니다.
여러 배포 패턴 중에 선택하여 사용할 수 있습니다. 선택하는 배포 패턴은 배포 이유와 리소스에 따라 다릅니다. 카나리아 테스터가 있나요? 다크 론치를 사용해 자신이 테스터인지 모르는 테스터를 선택하려고 하나요? 소규모에서 점진적으로 규모가 증가하는 여러 신뢰할 수 있는 테스터가 있는 경우 점진적 노출 배포를 선택할 수 있습니다. 또는 한 버전이 다른 버전보다 성능이 좋은지 확인하려면 A/B 테스트를 선택할 수 있습니다.
Tailspin 팀은 Azure App Service의 배포 슬롯을 사용하여 파란색-녹색 배포 패턴을 구현하기로 결정했습니다. ‘배포 슬롯’은 자체 호스트 이름을 갖춘 라이브 앱입니다. 팀은 두 개의 배포 슬롯을 교환할 수 있습니다. 교환을 통해 변경 내용을 프로덕션으로 즉시 승격할 수 있습니다. 팀은 아직 웹 사이트를 사용자에게 릴리스할 준비가 되지 않았지만, 가동 중지 시간 없이 사용자에게 새로운 기능을 제공할 수 있음을 입증했습니다.
또한 이 모듈에서는 Git 커밋을 되돌리고 파이프라인을 통해 되돌린 변경 내용을 푸시하여 의도하지 않은 변경을 롤포워드하는 방법도 알아보았습니다.
팀의 측정 방법
‘기존 소프트웨어 개발 프로세스 평가’ 모듈에서 Mara 님은 가치 흐름도 작성 연습을 수행했습니다. 해당 연습은 팀이 현재 릴리스-주기 프로세스를 분석하는 데 도움을 주었습니다.
‘활동 비율’ 또는 효율성은 ‘처리 시간’을 ‘총 리드 타임’으로 나눈 값입니다.
$${Activity\ ratio\ =\ }{\dfrac{Process\ time}{Total\ lead\ time}}$$
Tailspin 웹 팀은 처음에 해당 메트릭을 사용하여 23%의 효율성을 확인했습니다.
팀은 먼저 CI(연속 통합)를 구현할 때 일부 비효율성을 줄였습니다. 그리고 CD(지속적인 업데이트)를 적용하여 더 많은 비효율성을 줄였습니다.
이전 학습 경로에서 팀은 다음 사항을 줄였습니다.
새 기능의 원본 제어를 설정하는 데 걸리는 시간. 필요한 시간이 ‘3일’에서 ‘0일’로 줄었습니다.
중앙 집중식 원본 제어에서 분산 원본 제어의 한 형태인 Git로 이동한 덕분에 시간을 단축할 수 있었습니다. 분산 원본 제어를 사용하면 파일이 잠금 해제될 때까지 기다릴 필요가 없습니다.
테스터인 Amita 님에게 코드를 전달하는 데 걸리는 시간. 필요한 시간이 ‘2일’에서 ‘0일’로 줄었습니다.
팀에서 빌드 프로세스를 Azure Pipelines로 이동한 덕분에 시간을 단축할 수 있었습니다. Azure Pipelines는 빌드를 사용할 수 있을 때 자동으로 Amita 님에게 알립니다. 개발자는 더 이상 Amita 님에게 알리기 위해 Amita 님의 스프레드시트를 업데이트할 필요가 없습니다.
Amita 님이 새 기능을 테스트하는 데 걸리는 시간. 필요한 시간이 ‘3일’에서 ‘1일’로 줄었습니다.
팀은 코드 단위 테스트를 통해 시간을 단축할 수 있었습니다. 변경 내용이 빌드 파이프라인을 통해 이동할 때마다 단위 테스트를 실행하기 때문에 Amita 님에게 도달하는 버그와 재발이 적습니다. 워크로드가 줄어들기 때문에 Amita 님이 각 수동 테스트를 더 빠르게 완료할 수 있습니다.
이 학습 경로에서 팀이 만든 릴리스 파이프라인은 다음 사항을 줄였습니다.
빌드를 ‘테스트’ 단계로 가져오는 데 걸리는 시간. 필요한 시간이 ‘3일’에서 ‘1일’로 줄었습니다.
팀은 예약된 트리거를 사용해 매일 오전 3시에 테스트에 배포하여 시간을 단축할 수 있었습니다.
테스트한 빌드를 ‘스테이징’ 단계로 가져오는 데 걸리는 시간. 필요한 시간이 ‘2일’에서 ‘0일’로 줄었습니다.
팀은 테스트 단계에 기능 테스트 Selenium UI 테스트를 추가하여 시간을 단축할 수 있었습니다. 이와 같은 자동화된 테스트는 수동 테스트보다 훨씬 빠릅니다.
승인된 빌드를 ‘스테이징’에서 라이브로 가져오는 데 걸리는 시간. 필요한 시간이 ‘1일’에서 ‘1일 미만’으로 줄었습니다.
팀은 파이프라인에 수동 승인 검사를 추가하여 시간을 단축할 수 있었습니다. 경영진이 승인하면 Tim 님은 변경 내용을 ‘스테이징’에서 라이브로 릴리스할 수 있습니다.
덕분에 총 리드 타임이 22일에서 10일로 감소했습니다. 이 숫자를 수식에 대입하면 다음과 같습니다.
$${Activity\ ratio\ =\ }{\dfrac{5\ days}{10\ days}}{ = 0.50}$$
결과에 100%를 곱하면 50%가 감소했음을 알 수 있습니다.
개선에는 끝이 없지만, 이 변화는 팀에게 긍정적입니다. 고객은 매우 신속하게 가치를 얻을 수 있고, Tailspin 팀은 이제 대기 시간을 줄이고 가장 좋아하는 일, 즉, 고객이 좋아할 만한 기능을 제공하는 일에 더 많은 시간을 투자할 수 있습니다.
자세한 정보
다음 추가 리소스를 사용하여 App Service, 배포 슬롯, 롤백에 대해 자세히 알아보세요.
- App Service 설명서
- App Service를 사용하여 Azure에 웹 사이트 배포
- App Service 배포 슬롯을 사용하여 테스트 및 롤백하기 위해 웹앱 배포 스테이징
- App Service에서 스테이징 환경 설정