2014년 4월 13일 일요일

왜 클라우드 컴퓨팅은 DevOps를 필요로 하는가?

아이러브스쿨의 실패

2000년, 1997년경 시작된 피씨방의 성공과 함께 보급된 인터넷은 스타크래프트와 레인보우식스에 빠져있던 사람들에게 새로운 재미거리를 제시한다. 사람과의 관계, 아이러브스쿨이었다.
하지만 1년만에 500만명의 회원을 모으며 사회적 이슈의 중심으로 떠올랐던 아이러브스쿨은 정말 신기루처럼 한순간에 사라졌다.

20억 채무에 신용불량, 이혼까지… “성공에 대비하지 못해 실패했다”

위의 기사에 나온 경영권을 둘러싼 잡음이 아이러브스쿨 실패의 모든것을 말해주진 않는다.
당시 서비스 자체가 빠르게 인기를 잃은 직접적인 원인은 서버의 확충. 즉, 서비스 스케일링에 실패했기 때문이다.
필자가 기억하는 아이러브스쿨의 마지막 모습은 사람들이 많이 접속하는 8시부터는 전혀 움직이질 않는 쓸 수 없는 서비스였다. 로그인해서 메뉴를 클릭해 동창모임에 찾아들어가는 것 만으로도 엄청난 인내심이 요구되었고, 그러한 상황은 수개월동안 지속되는 가운데 인내심이 바닥난 사람들은 뒤이어 등장한 프리첼과 다모임으로 빠르게 이동해 갔다.

2014년인 지금. 서비스 스케일링으로 실패했다는 기업은 찾아보기 어렵다. 클라우드 컴퓨팅의 등장으로 유연한 서버 인프라 환경이 정착되었기 때문이다.


DevOps와 클라우드 컴퓨팅

클라우드 컴퓨팅과 DevOps는 두가지 접점을 가진다. 한가지는 클라우드 컴퓨팅에서는 스케일 아웃Scale Out에 대응하기 위해 인프라 구성 작업이 매우 빈번하게 이루어지게 된다는 점이고 또 한가지는 이러한 구성작업이 단순한 설정작업Configuration에 그치는 것이 아니라 서버 어플리케이션의 릴리스에 따른 어플리케이션 버전관리, 데이터 마이그레이션, 그리고 이를 테스트하기 위한 버전별 자동화 테스트에 이르기까지 복잡한 일련의 작업들이 빠르고 정확하게 이루어져야 한다는 점 이다.

다시말해 클라우드 컴퓨팅에서의 DevOps는 서비스의 생명이라 할 수 있는 생산성과 유연성 그리고 안정성을 확보하기 위해 유용한 수단인 것이다.

DevOps는 요구분석에서 배포와 피드백에 이르는 일련의 작업들이
자동화 되고 끊임없이 반복되는 형태를 추구한다.
 출전 : computing.co.uk
이와같은 DevOps의 필요성 때문에 AWS에서는 OpsWorks라는 툴을 제공하고 있으며, 다른 클라우드 사업자들도 비슷한 기능을 지닌 자동화 툴을 제공하고 있다.

AWS OpsWorks User Guide - Kindle용 무료서적
Azure의 Devops - MSDN블로그


구성관리와 DevOps

굳이 애자일 개발 이라는 단어를 꺼내지 않더라도 소스코드의 형상관리는 소프트웨어 개발에 있어서 필수 요소로 자리잡은지 오래다. 최근들어서는 소스코드뿐만이 아니라 문서, 설정, 데이터베이스에 이르기까지 다양한 영역에서 변경사항을 체계적으로 관리하려는 움직임이 두드러지게 나타나고 있다.

DevOps 구현을 위한 툴셋
출전 : drdobbs.com


아래의 링크는 각 영역별 구성관리 툴의 리스트이다.

이 외에도 최근에 데이터베이스 마이그레이션의 자동화 작업이 중요한 이슈로 떠오르고 있다. 데이터베이스의 마이그레이션 자동화 작업이란 간단히 말해 퍼시스턴스의 버전변경에 따른 DDL자동 생성은 물론 기존 데이터의 마이그레이션 패치 작업을 자동화 하는 것 이다.
현재 나와있는 데이터베이스 마이그레이션 툴에 대한 비교가 Flyway의 홈페이지에 잘 정리되어 있으므로 툴의 도입을 검토하고 있다면 좋은 참고가 될 것이다.



위의 툴들은 일반적으로 단독으로 움직이기 보다는 Jenkins와 같은 CI자동화 툴을 중심으로 유기적으로 연동되어 개발과 테스트, 배포가 하나의 연속적인 흐름으로 묶이게되는데, 이것이 바로 빠른 릴리스 구현을 목표로 삼는 DevOps가 구현된 모습이라 할 수 있겠다.