본문으로 바로가기

Docker와 DevOps, CI/CD

category 프로그래밍 & IT/Docker 2017. 11. 1. 01:09
반응형

1. DevOps


DevOps라는 말을 한번쯤은 들어봤을 것이다.

DevOps는 Development(개발) 와 Operation(운영)이 합쳐진 단어로, Chef의 개발사 Opscode에서 처음 만든 용어이다. 

일반적으로 과거에는 개발조직과 운영조직이 분리되어 있었고, 업무 자체도 구분되어 있었다. 운영조직이 시스템 운영 중 발생한 문제를 개발조직에 알리고, 개발조직이 수정하여 다시 운영환경에 반영한 뒤 운영조직에게 인계를 하는 과정은 듣기만 해도 비효율적이다. 여기서 발생하는 커뮤니케이션 비용은 상당하다.


DevOps의 철학은 개발, 테스트, 운영에 걸친 구간을 자동화하여 배포 주기를 최소화하고, 개발 도구 및 환경을 표준화하여 커뮤니케이션 비용을 줄이는 환경을 만드는 것에 있다.





2. DevOps를 위한 Docker


우선, 이 글을 읽기 전에 Docker가 무엇인지조차 알지 못한다면 아래 두 글을 먼저 읽어보길 권한다.


[ http://www.leafcats.com/146 - docker 개념과 Architecture 정리 ]

[ http://www.leafcats.com/152 - 가상머신과 도커(Docker) ] 



Docker를 사용하면,

1. 개발자가 개발을 하고 소스를 Git, Subversion 등의 형상 서버에 커밋한다.

2. Jenkins나 CruiseControl 등의 도구로 Docker 이미지로 빌드한다.

3. 자동 빌드된 Docker 이미지로 테스트 서버에서 테스트를 수행한다.

4. 테스트가 완료되면 해당 이미지를 운영 서버에 배포한다.


이렇게 되면, 개발자가 개발한 소스는 자신의 로컬 PC에서 이미지와 컨테이너를 생성하여 운영 환경과 동일한 상태에서 개발을 할 수 있다. 개발-테스트-운영 환경이 Docker라는 공통된 도구를 사용하게 때문에 서버 환경이 달라서 생기는 각종 문제를 방지할 수 있다.


또한 빌드된 소스 이미지라는 형태로 손쉽게 관리 및 이동이 가능하기 때문에 보다 유연한 관리가 가능하다.

따라서 Docker만 설치되어 있으면 어디든지 해당 시스템을 명령어 한두번 만으로 손쉽게 이전할 수 있다.


반응형

 Other Contents