자동화된 배포
지속적 통합을 위해서 여러 환경이 필요한데, 커밋 테스트를 실행하기 위한 환경과, 2차 테스트를 실행하기 위한 여러 환경을 말한다. 이 환경에 하루에 여러번 실행본을 옮겨야 한다면, 이를 자동화 하길 원할것이다. 그래서 어떤 환경이든지 쉽게 애플리케이션을 배포할 수 있는 스크립트를 갖는건 중요하다.
이는 자연스러운 결과로 이와 유사하게 제품을 배포할수 있는 스크립트도 가지고 있어야만 한다. 제품을 매일 배포하지는 않지만 (그렇지만 나는 프로젝트가 그렇게 하도록 한다.) 자동화된 배포는 프로세스 진행 속도를 높여주며 에러를 줄이는데 도움이 된다. 이는 테스트 환경에 이용하는 배포와 같은 정도의 능력이면 되기 때문에 값싼 선택이다.
만일 제품이 별도의 자동화된 기능에 의해 배포된다면, 자동화된 롤백도 고려해야 한다. 때때로 잘못된일이 발생하는데 가능한 빨리 좋은 상태로 되돌려야 한다. 자동으로 복구를 하는기능은 배포에 대한 많은 부담을 줄여주며 사람들이 더 자주 배포를 할수있게 해주고 사용자가 더 빨리 새로운 기능을 사용할 수 있게 해준다.(루비 온 레일즈 커뮤니티는 Capistrano 라는 툴을 개발했는데 이런 작업을 해주는 툴의 좋은 예라고 할 수 있다.)
클러스터된 환경에서 한번에 한개 노드에 새로운 소프트웨어를 배포하도록 하면 점차적으로 몇 시간 내로 애플리케이션을 변경할수가 있다.
내가 일반적인 웹 애플리케이션을 배포하다가 알게된 부분적으로 재밌는 시도는 사용자 일부에 대해 시험적인 빌드를 배포해 보는 것이다. 그러면 팀은 시험 빌드가 어떤지 살펴볼수 있으며 이를 전체 사용자에게 배포할지 여부를 결정할때 사용할수 있다. 이 방법은 최종 선택을 확정하기전에 새로운 기능과 UI를 테스트 할수 있다. 자동화된 배포는 좋은 CI 규칙과 밀접하게 관련이 있으며 이를 가능하게 하는것은 중요하다.
'Work & Study > TechTalk' 카테고리의 다른 글
| Continuous Integration by Martin Fowler 13/15 (0) | 2007/09/30 |
|---|---|
| 마이크로소프트 실버라이트 1.1 개발자 참조도 (0) | 2007/09/28 |
| Continuous Integration by Martin Fowler 12/15 (0) | 2007/09/24 |
| Continuous Integration by Martin Fowler 11/15 (0) | 2007/09/24 |
| Continuous Integration by Martin Fowler 10/15 (0) | 2007/09/23 |
| Continuous Integration by Martin Fowler 9/15 (0) | 2007/09/23 |


