DevOps 란?
DevOps 란 소프트웨어의 개발(Dev)과 운영(Ops)을 결합해 제품을 더 빠르고 효과적으로 개선하기 위한 철학, 문화, 도구의 집합체입니다. 소프트웨어 개발자와 시스템 운영자 등 전문가들 간의 협업과 소통, 통합을 통해 DevOps는 다음의 목표를 이루는 것을 목적으로 합니다.
- 시스템 개발 생명 주기의 단축 (Shorten the systems development life cycle)
- 높은 소프트웨어 품질의 지속적 제공 (Provide continuous delivery with high software quality)
DevOps의 유래
사실 DevOps 의 개념은 완전히 새로운 것이 아닙니다. DevOps 는 Agile 개발 방법론을 보완해 발전시킨 방식이고, 두 사이에는 많은 유사성이 있습니다.
DevOps 가 본격적으로 논의 된 계기는 2009년, O’Reilly Velocity 컨퍼런스에서 Flickr의 두 엔지니어, John Allspaw와 Paul Hammond가 “하루에 10번 배포하기 – 개발자와 운영자 간의 협업 at Flickr”란 주제로 강연을 하면서부터 입니다. 당시에는 개발팀과 운영팀이 완전히 나뉘어 있어 새로운 기능을 배포하려는 개발팀과 안정적으로 시스템을 운영하려는 운영팀이 많은 갈등을 일으켰지만 Flickr는 두 조직 간에 발생한 다양한 이슈들을 비롯해 어떻게 해결해 나갔는지를 컨퍼런스를 통해 공유했습니다.
이 강연을 통해 그들은 개발자(Dev)와 운영자(Ops) 간의 협업과 소통이 필수적이었던 다양한 사례들을 제시하였고, 이는 이후에 Patrick Debois가 DevOpsDays 라는 컨퍼런스를 개최하여 이 용어가 본격적으로 등장하게 된 계기가 되었습니다.
DevOps-Toolchain
DevOps툴체인은 DevOps를 적용해 하나의 체인과 같이 배포, 개발, 운영 등 시스템 개발 주기를 관리하기 위한 도구들의 모음입니다. 그 구성은 대략적으로 다음과 같습니다. (Wiki 참고 : DevOps toolchain – Wikipedia)
1. Plan
이 활동은 “Define”와 “Plan”으로 이루어져 있고 비즈니스 가치와 어플리케이션 요구 사항을 정의하는 것을 목표로 합니다. 세부적으로 이 활동은 다음 사항들로 이루어져 있습니다.
- 제품 평가 지표 (Production metrics)
- 요구사항 정의
- 비즈니스 평가 지표 (Business metrics)
- 수정사항 릴리즈 평가 지표 (Update release metrics)
- 릴리즈 계획 및 타이밍 (Release plan, timing and business case)
- 보안 정책 및 요구사항
이 활동은 다음 IT 구성원들의 참여하게 됩니다 : 비즈니스 어플리케이션 소유자, 소프트웨어 개발자, 소프트웨어 설계자, 릴리즈 관리자, 보안 담당자, 인프라 담당 조직 등
2. Create
Create는 “Building”과 “Coding” 그리고 소프트웨어 개발 프로세스를 정의하는 활동들로 구성돼 있습니다.
- 소프트웨어와 설정들에 대한 디자인
- 코드 품질과 성능 관리
- 소프트웨어 빌드 및 빌드 품질 관리
- 릴리즈 후보
3. Verify
이 활동은 소프트웨어 릴리즈에 대한 품질을 보장하는 것에 직접적으로 연관되어 있습니다. 즉, 최고 품질의 코드 퀄리티가 유지되어 제품에 배포되는 것을 목적으로 합니다.
- 인수 테스트 (Acceptance testing)
- 회귀 테스트 (Regression testing)
- 보안 및 취약성 분석
- 성능 (Performance)
- 설정 테스트 (Configuration testing)
4. Packaging
Packaging은 릴리즈의 배포가 준비 되었을 때의 활동들을 의미합니다. 다음의 활동들이 Packaging에 해당합니다.
- 승인 및 사전 승인 (Approval/preapprovals)
- 패키지 설정 (Package configuration)
- 촉발 릴리즈 (Triggered releases)
- 단계 릴리즈 및 중단 (Release staging and holding)
5. Release
Release는 제품과 목표 환경으로 소프트웨어를 배포하기 위한 일련의 과정(schedule, orchestration, provisioning and deploying)들과 관련이 깊습니다.
- 릴리즈 조직화
- 어플리케이션 배포
- 대체 및 복구
- 계획된 릴리즈 (Scheduled/timed releases)
6. Configure
이 활동은 DevOps의 운영자(Operation) 측의 활동들입니다. 한번 소프트웨어가 배포가 되면 추가적인 IT 인프라적인 반영 및 설정 작업들이 필요할 수 있습니다.
- 인프라 용량, 데이터베이스, 네트워크 등의 반영 및 설정
- 어플리케이션 반영 및 설정
7. Monitor
Monitoring은 DevOps툴체인의 중요한 연결고리입니다. 이 활동은 IT 조직으로 하여금 특정 릴리즈의 이슈들을 확일 할 수 있고 최종 유저들에 대한 영향도까지 확인할 수 있습니다.
- IT 인프라적 성과
- 최종 유저 경험 및 응답
- 제품 평가 지표 및 통계
8. Version Control
Version Control은 변경사항을 문서, 프로그램, 웹 사이트 등에 기재하고 관리하는 행위들을 의미하고 이는 소프트웨어 환경설정 관리 측면에서 매우 중요합니다.
- 비선형 개발 (Non-linear development)
- 분산 개발 (Distributed development) 등
참고 글
- DevOps Wiki
https://en.wikipedia.org/wiki/DevOps - DevOps 위키
https://ko.wikipedia.org/wiki/데브옵스 - History of DevOps – When Did DevOps Become a Thing?
https://www.bunnyshell.com/blog/history-of-devops - DevOps란?
https://velog.io/@maketheworldwise/DevOps-DevOps-란#:~:text=1-2.-,DevOps 역사,도입되지 않았던 상황이었다. - Slide Share – 10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
https://www.slideshare.net/jallspaw/10-deploys-per-day-dev-and-ops-cooperation-at-flickr?qid=bcba6878-00a0-43cd-8aaf-e66a5690e1d6&v=&b=&from_search=1