애자일 방법론(Agile) - DevOps
Agile - DevOps
핵심 키워드
- Agile(기민한, 민첩한)
- 신속한 인프라 배포와 확장을 통해 비즈니스 요구에 신속하게 대응하는 것을 목표
- 스크럼(Scrum), 매일 짧은 회의로 작업 상황 공유, ‘스프린트’ 라고 불리는 작업 주기를 정의, 작업 항목을 선택하고 완료하는 방식
- 익스트림 프로그래밍(XP), 고객과의 빠른 피드백과 요구 사항의 우선순위를 강조, 페어 프로그래밍, 지속적인 통합, 단위 테스트, 공동 소유권, 개발자들의 생산성과 팀의 협력을 강화하는 것을 목표
- 칸반(Kanban), 작업 흐름 시각화, 작업 우선 순위와 팀의 작업 부하를 관리, 각자의 작업을 자율적으로 수행하면서 칸반 보드(작업 시각화)를 통해 상태와 진행 상황을 공유
DevOps에 Agile방법론을 채택하게 된다면?
- 작은 사이클을 가지는 개발과 릴리즈를 강요하는 DevOps 애자일 방법론은 신속한 제품 출시가 가능해집니다.
- 스크럼, 칸반 등의 협업 강화로 효율적이고, 적은 갈등의 작업 진행을 가능하게 합니다.
Agile 선언문
애자일 소프트웨어 개발 선언
우리는 소프트웨어를 개발하고, 또 다른 사람의 개발을
도와주면서 소프트웨어 개발의 더 나은 방법들을 찾아가고
있다. 이 작업을 통해 우리는 다음을 가치 있게 여기게 되었다
공정과 도구보다 개인과 상호작용을
포괄적인 문서보다 작동하는 소프트웨어를
계약 협상보다 고객과의 협력을
계획을 따르기보다 변화에 대응하기를
가치 있게 여긴다. 이 말은, 왼쪽에 있는 것들도 가치가 있지만,
우리는 오른쪽에 있는 것들에 더 높은 가치를 둔다는 것이다.
Kent Beck
Mike Beedle
Arie van Bennekum
Alistair Cockburn
Ward Cunningham
Martin Fowler
James Grenning
Jim Highsmith
Andrew Hunt
Ron Jeffries
Jon Kern
Brian Marick
Robert C. Martin
Steve Mellor
Ken Schwaber
Jeff Sutherland
Dave Thomas
© 2001, 상기 저자들
이 선언문은 어떤 형태로든 자유로이 복사할 수 있지만,
본 고지와 함께 전문으로서만 가능하다.
Agile - DevOps 수행 방법
- 기존 DevOps 수행과 크게 다른 점은 없으나, 계획적이지 않은 수행. 즉 미리 계획하는 것이 아닌 프로젝트 전체에서 지속적으로 계획하는 것이 중요합니다.
1. 폭포 개발(워터폴)이 아닌 애자일
- 큰 프로젝트를 미리 준비하고 계획하여 계획에 따라 움직이는 프로젝트가 아닌, 1~4주 길이의 짧은 단위의 작업으로 반복적인 작업으로 진행합니다.
- 이는 경험에서 배우고 지속적으로 개선하는 것을 의미합니다.
2. 지속적인 통합 그리고 자주 통합
- CI/CD를 적용하여 가능한 빨리 빌드, 테스트, 배포 파이프라인을 자동화합니다.
- 팀은 모든 스프린트를 릴리스하므로 자동화가 꼭 필요할 뿐만 아니라 빌드/배포 실패 시에 즉시 알 수 있고 이를 해결하기 위한 작업 진행이 가능합니다.
- 핵심 사항으로는 단위 테스트 / 자동화 / 분기 및 빌드 정책 / Dev에 배포가 있습니다.
3. 스크럼
- 일일 스크럼 : 매일 정해진 시간에 짧은 회의를 진행하여 진행 사항과 오류 등을 공유합니다. 커뮤니케이션과 진행 사항 파악에 중요한 역할을 합니다.
- 제품 백로그 : 개발할 기능들을 리스트화하여 새로운 요구 사항이나 변경 사항 등을 빠르게 파악할 수 있습니다.
- 스프린트 백로그 : 발생한 스프린트에서 완료할 작업들을 리스트화합니다. 제품 백로그에서 우선순위가 높은 작업들이 포함됩니다.
- 스프린트 검토 : 완료한 작업을 검토합니다. 피드백과 목표 업데이트 또한 이루어집니다.
- 스프린트 회고 : 스프린트가 끝난 이후 이를 평가하고 개선점을 찾아, 지속적인 개선과 학습을 이끌어냅니다.
4. 칸반
-
칸반 보드 : 작업 상태를 시각적으로 표현하는 도구입니다. 일반적으로 칸반 보드에는 세로 축으로 작업 상태(예: 할일, 진행 중, 완료)를 나타내는 열이 있고, 가로 축으로는 개별 작업을 나타내는 카드가 있습니다. 각 카드는 작업의 상태와 세부 정보를 표시합니다.
-
워크인프로그래스 리밋 : 해당 상태에 동시에 진행 가능한 작업의 수를 제한하는 것을 의미합니다. 이를 통해 팀은 초과 작업을 방지하고 작업 흐름을 안정화시킬 수 있습니다.
-
풀 시스템 최적화 : 개발자는 현재 작업에 집중하고 있는 상태에서 추가 작업을 가져오는 대신, 이전 단계의 작업이 완료되면 다음 단계로 진행하는 방식으로 작업을 진행합니다.
-
지속적인 개선 : 작업 흐름과 프로세스의 병목 현상을 식별하고 개선하는데 중점을 둡니다. 개선을 위한 데이터 수집과 분석을 통해 효율성을 높이고 작업 품질을 향상시킵니다.