2014년 3월 21일 금요일

지속적 통합(Continuous Integration)을 넘어 지속적 인도(Continuous Delivery)로 - DevOps개념 정리

구글, 페이스북, 아마존, 세일즈포스등과 같이 오늘날 IT서비스 시장을 선도하고 있는 기업들이 가지는 공통점이 있다. 바로 높은 품질을 유지하면서도 개발의 사이클이 엄청나게 짧다는 점 인데, 오늘 이야기 하고자 하는 DevOps는 바로 이러한 고속 출시를 가능하게하는 새로운 소프트웨어 개발 패러다임이다.

개발,운영,품질보증 유기적으로 연동되는 개발 패러다임인 DevOps. 출전:Wikipedia


DevOps라는 단어 자체는 Velocity 2009라는 행사에서 플리커의 엔지니어인 John Allspaw과 Paul Hammond가 발표한 "하루에 10번 배포하기10 deployas per day"라는 제목의 강연에서 처음 쓰여졌다.
DevOps는 개발Development과 운영Operations이 합쳐져서 만들어진 합성어로 개발과 품질보증Quality Assurance,운영이 한개의 사이클로 묶여 유기적으로 연동되는 개발 패러다임을 의미하며 클라우드 환경과 빠른 개발사이클이 보편화 되는 현 시점에서 빠르게 기존 운영 패러다임을 대체해 나가고 있다.

앞서 말한 고속 출시를 실현하기 위해서는 요구사항 수집에서 부터 구현과 품질보증(QA), 릴리스에 이르기까지 고객에게 가치를 전달하는 과정이 끊임없는 흐름이 되어야 하는데, 전통적인 개발방식에서는 상상도 하지 못할 만큼 많은 작업들이 한꺼번에 이루어져야 하기 때문에 개발 프로세스의 근본적인 개선 없이는 실현이 불가능하다. NIKKEI SYSTEMS의기사 "적시개발로 IT현장을 효율화 하라"에 의하면, DevOps를 구현하기 위해서는 반드시 다음의 세가지 요건이 선행되어야 한다.
  1. 반복되는 작업의 자동화: 테스트, 디플로이, 릴리스등의 작업은 기능 추가시 마다 수작업으로 진행하게 되면 사용자의 요구를 제때에 대응 하기 어렵다. 따라서, 지속적인 통합(CI)도구를 중심으로 테스트, 디플로이, 릴리스를 연동시킨 새로운 개발 체제 구축이 필수적이다.
  2. 재작업의 원인이 되는 작업미스의 제거: 개발환경이나 운영환경등의 환경 구축 작업에서 흔히 발생하는 매개변수의 설정 미스나 조작미스는 모두 수작업이 원인이 된다. 수작업을 최대한 억제함으로서 재 작업이 발생할 소지를 줄이는것은 개발 효율화에 있어서 매우 중요한 이슈이다. 
  3. 작업 공정 및 성과물의 정확한 파악: 소스코드와 문서, 맴버들의 작업상황, 요구/과제의 대응상황, 장애모니터링을 집중하여 관리하고 개발팀 내부에서 효과적으로 공유할 수 있게 해야 한다. 이렇게 함으로서 작업의 지연이나 문제가 쌓이게 되는 원인을 재빨리 발견하고 대응 할 수 있게된다.
내용을 읽어보면 CI와 다른점이 없다는 생각이 들 것이다. 사실, CI를 개발자 사이드의 지속적 통합이라 한다면, DevOps는 이를 운영에까지 확장시켜 지속적 인도(Continuous Delivery)를 구현한 것이라 보는것이 정확할 것이다.

출전: http://continuousdelivery.com/2014/02/visualizations-of-continuous-delivery/


즉, DevOps의 구현은 환경 구축에서 시작하여 디플로이,릴리스와 같은 작업들을 포괄적으로 자동화 하는것에 있으며 이를 실현하기 위한 툴 로서 ChefPuppet이 주목받고 있다.

특히 인프라스트럭쳐 시장에서 클라우드가 점차 보편화 되고 있는 최근 추세에 따라 이러한 자동화 툴의 도입은 개발에서 운영에 이르기까지 개발의 전 과정에서 진척상황에 맞추어 필요한때에 필요한 환경을 자유로이 확장/축소할 수 있게 해 줌으로서 시스템 스케일링에 상당한 자유도를 제공한다.

참고자료