Docker에 대한 간단한 소개

여러 글을 쓰기로 마음먹었지만, 우선 Docker(도커)에 대해서 좀 써봐야 할 거 같습니다. 거의 모든 환경에서 많이 이용하고 있는 만큼 중요하다고 생각하네요.

도커는 Docker, inc에서 출시한 오픈소스 컨테이너 프로젝트입니다. 나온지는 얼마 안되었지만 요즘 엄청나게 이용되고 있고, 현재도 많은 스터디 그룹이 만들어져서 여기저기서 이용하고 있는 것이기도 하죠.

요즘 도커를 이용하려는 이유는 확실히 있습니다. 2009~2010년을 지나면서, 수많은 시스템들이 클라우드로 옮겨가고 있습니다. 클라우드로 옮겨가게 되면, 실제의 물리 서버를 구입하는 것이 아닌 가상 서버를 구입하고 사용하는 양만큼의 요금을 지불하게 되었습니다. 게다가 가상 서버의 구축의 경우에는 그냥 몇 번의 클릭만으로도 쉽게 할 수 있는 상황입니다.

이제 여기서 문제가 생깁니다. 가상 서버에 소프트웨어를 원하는 대로 설치하고 설정을 해야 하는데, 댓수가 많아지면 사람이 직접 하는 데 있어서 여러모로 힘들어집니다. 셸 스크립트로 설치 및 설정을 자동화하는 기술들도 리눅스 환경을 이용하던 사람들은 많이 써왔습니다. 그런 상황에서도 힘든 것이 중앙 관리 기능이나 좀 더 복잡해지는 기능들입니다. 그런 부분은 셸 스크립트로 쓰기 엄청 어려워집니다. 리눅스 서버를 써보신 분들은 아시겠지만, 리눅스 환경에서는 설치만 했다고 해서 거의 바로 쓸 수 있는 상황이 아니게 됩니다. 응용 프로그램도 많고, 호환성이 제대로 이루어졌는지도 보고, 설정 또한 여러 설정을 다 해줘야 하기 때문에 상당히 복잡해집니다. 따라서 클라우드 환경에서의 설치와 배포 기능은 엄청 어려운 일이 되고 말았습니다. 이게 은근 골아픈 것이, 실제로 보면 사소한 설정 하나땜에 운영체제와 서비스의 동작에 영향이 엄청나게 가게 되면 서비스를 하기 힘들어집니다.

이런 상황에서 여러 아이디어가 나오게 됩니다. 가상머신의 복제를 통해서도 여러 시스템을 복제해서 설정을 바꿔 쓰기도 하지만, 설정이 복잡하면 그게 쉬운 설정은 아니게 됩니다. 그런 상황에서 나온 이론이 바로 Immutable Infrastructure입니다. 현재는 하나의 패러다임 취급되고 있는 이것은, 호스트 운영체제와 서비스 운영 환경을 분리하고, 한 번 설정한 운영 환경은 변하지 않는다는 개념(Immutable)을 도입한 것입니다. 즉, 서비스 운영 환경을 이미지라는 특정 환경으로 설정한 후, 서버에 배포하여 설행을 합니다. 이때, 서비스가 업데이트되면 운영 환경 전체가 변하는 것이 아니라 이미지만 새로 생성하여 배포하는 것으로 끝납니다. 클라우드 플랫폼에서 서버를 쓰고 버리는 것처럼, Immutable Infrastructure에서도 서비스 운영 환경 이미지를 한 번 쓰고 그냥 버립니다. 음… 그림으로 보면 좀 더 이해가 될까요.

disposable_infrastructure.png

Immutable Infrastructure를 검색하면 나오는 이미지 중에 좀 이해가 쉬울 법한 것을 찾아봤습니다. 초기 생성에 대해서는 버전 생성이 그대로 이루어졌고, v2로 업데이트가 되면 업데이트 된 이미지가 적용되어 수정된 내용 그대로 적용되고, 기존의 버전을 버려집니다. 이런 시스템을 이용함으로써 여러 장점이 있습니다.

관리의 편리성: 서비스 운영 환경을 이미지로 생성했기 때문에 이미지 자체만 관리하면 됩니다. 특히 이미지를 중앙에서 관리하여 체계적인 배포와 관리가 가능해졌습니다. 또한, 이미지 생성 및 설정도 파일로 되어 있기 때문에 버전 관리 시스템을 활용하여 관리할 수 있습니다.

확장성: 이미지 하나로 서버를 계속 찍어낼 수 있습니다. 이건 클라우드 플랫폼의 자동 확장 기능과 연동하면 손쉽게 서비스를 확장할 수 있습니다.

쉬운 테스트: 개발자의 PC나 테스트 서버에서 이미지를 실행하기만 하면 서비스 운영 환경과 동일한 환경이 구성됩니다. 그래서 테스트하기 쉬워집니다.

가벼움: 운영체제와 서비스 운영 환경이 분리되었다는 것은 그만큼 가볍게 만들 수 있고 어디서든 실행 가능한 환경을 제공할 수 있다는 것이 됩니다. 특히 운영체제와의 분리로 인한 가벼움은 하나의 장점이 될 수 있습니다.

이런 Immutable Infra의 대표적인 격으로 쓰이는 것이 바로 도커입니다. 상징되는 고래 또한 위에 컨테이너라는 이미지를 싣고 있는데, 저장과 배포 기능에 대한 것을 의미한다고 하는군요.

docker-logo.png

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.