Docker 활용 시나리오

이재홍 http://www.pyrasis.com 2014.08.02 ~ 2014.09.20

개발, 테스트, 운영을 통합

얼마전부터 DevOps라는 말이 등장하기 시작했습니다. DevOps(Dev + Ops)는 Chef의 개발사인 Opscode에서 만든 용어입니다. 보통 개발(Development)과 운영(Operation)은 조직이 분리되어 있고, 업무도 따로 진행됩니다. 이렇게 되면 업무 효율이 떨어지고, 커뮤니케이션 비용이 발생합니다.

DevOps는 개발, 테스트, 운영에 이르는 전 구간을 자동화하여 배포 주기를 짧게하고, 표준화된 도구를 사용하여 커뮤니케이션 비용을 줄이는 환경을 뜻합니다.


그림 19-2 Docker로 개발, 테스트, 운영을 통합

그림 19-2는 Docker로 개발, 테스트, 운영을 통합한 환경의 개념도입니다.

  • 개발자가 소스 서버/빌드 서버에 소스를 올리면 Docker 이미지를 자동으로 빌드합니다.
    • 소스 서버는 Git, Subversion, Mercurial, Perforce 등과 같은 도구로 구성합니다.
    • 빌드 서버는 Jenkins, CruiseControl 등과 같은 도구로 구성합니다.
  • 자동 빌드된 Docker 이미지는 미리 정의된 테스트 케이스로 자동 테스트하거나 사람이 직접 테스트합니다.
    • 웹 사이트는 phantomjs와 같은 Headless 웹 브라우저로 손쉽게 테스트할 수 있습니다.
  • 테스트가 완료되면 Docker 이미지를 서비스용 서버에 배포하고, 컨테이너로 실행합니다.

제품이나 서비스를 개발하다 보면 테스트 담당자는 계속 안된다고 얘기하고, 서비스는 사소한 문제로 늘 장애가 발생합니다. 이런 상황에서 개발자가 가장 자주하는 말이 “내 PC에서는 잘 되는데요”입니다.

Docker를 사용하면 개발자는 자신의 PC에서 이미지와 컨테이너를 생성하여 서비스 환경과 동일한 상태에서 개발을 할 수 있습니다. 그리고 테스트 담당자는 서비스 환경, 개발자의 PC와 동일한 상태에서 테스트를 할 수 있습니다. 즉 Docker라는 공통된 도구를 사용하므로 개발자 PC의 환경, 테스트 환경, 서비스 환경이 달라서 발생하는 각종 문제를 방지할 수 있습니다.

DevOps에서 한 발 더 나가아서 운영 부서가 필요없는 NoOps 환경도 생각해볼 수 있습니다.


저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.

Published

30 November 2014