개발,운영,품질보증 유기적으로 연동되는 개발 패러다임인 DevOps. 출전:Wikipedia |
DevOps라는 단어 자체는 Velocity 2009라는 행사에서 플리커의 엔지니어인 John Allspaw과 Paul Hammond가 발표한 "하루에 10번 배포하기10 deployas per day"라는 제목의 강연에서 처음 쓰여졌다.
DevOps는 개발Development과 운영Operations이 합쳐져서 만들어진 합성어로 개발과 품질보증Quality Assurance,운영이 한개의 사이클로 묶여 유기적으로 연동되는 개발 패러다임을 의미하며 클라우드 환경과 빠른 개발사이클이 보편화 되는 현 시점에서 빠르게 기존 운영 패러다임을 대체해 나가고 있다.
앞서 말한 고속 출시를 실현하기 위해서는 요구사항 수집에서 부터 구현과 품질보증(QA), 릴리스에 이르기까지 고객에게 가치를 전달하는 과정이 끊임없는 흐름이 되어야 하는데, 전통적인 개발방식에서는 상상도 하지 못할 만큼 많은 작업들이 한꺼번에 이루어져야 하기 때문에 개발 프로세스의 근본적인 개선 없이는 실현이 불가능하다. NIKKEI SYSTEMS의기사 "적시개발로 IT현장을 효율화 하라"에 의하면, DevOps를 구현하기 위해서는 반드시 다음의 세가지 요건이 선행되어야 한다.
- 반복되는 작업의 자동화: 테스트, 디플로이, 릴리스등의 작업은 기능 추가시 마다 수작업으로 진행하게 되면 사용자의 요구를 제때에 대응 하기 어렵다. 따라서, 지속적인 통합(CI)도구를 중심으로 테스트, 디플로이, 릴리스를 연동시킨 새로운 개발 체제 구축이 필수적이다.
- 재작업의 원인이 되는 작업미스의 제거: 개발환경이나 운영환경등의 환경 구축 작업에서 흔히 발생하는 매개변수의 설정 미스나 조작미스는 모두 수작업이 원인이 된다. 수작업을 최대한 억제함으로서 재 작업이 발생할 소지를 줄이는것은 개발 효율화에 있어서 매우 중요한 이슈이다.
- 작업 공정 및 성과물의 정확한 파악: 소스코드와 문서, 맴버들의 작업상황, 요구/과제의 대응상황, 장애모니터링을 집중하여 관리하고 개발팀 내부에서 효과적으로 공유할 수 있게 해야 한다. 이렇게 함으로서 작업의 지연이나 문제가 쌓이게 되는 원인을 재빨리 발견하고 대응 할 수 있게된다.
즉, DevOps의 구현은 환경 구축에서 시작하여 디플로이,릴리스와 같은 작업들을 포괄적으로 자동화 하는것에 있으며 이를 실현하기 위한 툴 로서 Chef나 Puppet이 주목받고 있다.
특히 인프라스트럭쳐 시장에서 클라우드가 점차 보편화 되고 있는 최근 추세에 따라 이러한 자동화 툴의 도입은 개발에서 운영에 이르기까지 개발의 전 과정에서 진척상황에 맞추어 필요한때에 필요한 환경을 자유로이 확장/축소할 수 있게 해 줌으로서 시스템 스케일링에 상당한 자유도를 제공한다.
참고자료
- DevOps의 도입에 대해 좀 더 구체적인 이미지를 얻고 싶다면 Puppet의 케이스 스터디 비디오가 도움이 될 것이다.
Featured Case Study: How GitHub Uses Puppet - InfoQ에서 DevOps에 관련된 다양한 자료들을 한데 묶어 배포하고 있다.
DevOps All-In-One-Guide: Tools, Case Studies, Articles - DevOps 툴 리스트
A Short List of DevOps Tools - 그 밖의 DevOps관련 InfoQ기사들
Search results for devops
댓글 없음:
댓글 쓰기