Immutable Infrastructure with Docker

Immutable infrastructure ( 변경 불가능한 인프라) with Container ( 컨테이너 )

Docker ( 도커 ) 는 Immutable Infrastructure ( 변경 불가능한 인프라) 를 가능하게 하는 가장 중요한 기술요소 입니다.

우리는 윈도우즈나 맥을 사용하면서 보안, 안정성 그리고 성능 등의 이유로 OS(운영체제)를 자주 업데이트 합니다.

OS는 시간이 지남에 따라 내용이나 설정이 수시로 변화가 발생하며, 새로운 애플리케이션를 설치할 때는 레지스트리도 변경합니다.

지금까지 사용하던 많은 소프트웨어들은 업데이트나 설정 변경 등을 반복하면서 최신 상태로 유지하였고, 서버용 소프트웨어도 유사한 방법으로 관리하였습니다.

변경 가능한 인프라 관리의 문제점

서버의 경우에는 OS 설정 변경이나 업데이트 그리고 애플리케이션 배포가 자주 발생하는 경우에 서비스의 안정성에 큰 영향을 미치며, 서버 환경 자체가 파괴되는 경우도 있습니다.

언제 어느 부분이 변경되었는지 이력관리가 되지 않고, 변경 정보 공유가 되지 않으면 시스템 작업 시에 문제가 발생하여도 대처 방법을 알 수 없습니다.

이러한 문제를 해결하기 위한 방법이 바로 서버를 구축한 이후에는 변경이나 업데이트를 할 수 없게 하는 Immutable Infrastructure (변경 불가능 한 인프라) 입니다.

Immutable Infrastructure ( 변경 불가능한 인프라 ) 배경

“변경 불가능한 인프라” 란 서버를 변경 불가능한 (Immutable) 것으로 취급하는 개념입니다.

만약 변경이 필요한 경우에는 아예 새로운 서버를 구축하는 방법입니다.

서버를 변경하지 못하도록 하여 얻을 수 있는 가장 큰 장점은 바로 “서버를 항상 깨끗 ( Clean) 한 상태한 상태로 유지” 하는 것입니다.

Immutable Infrastructure with Docker

이 개념은 마치 DVD 로 소프트웨어를 배포할때 소프트웨어의 변경이 생기면 새로운 이미지로 DVD를 제작하는 개념입니다.
즉 서비스 운영환경을 호스트OS 와 분리한 후 이미지로 생성하여 서버에 배포하여 실행합니다.
서비스를 업데이트하는 경우에는 운영환경을 변경하지 않고 이미지를 새로 생성하여 배포하는 것입니다.

이 개념은 6wunderlist.com의 CTO 인 Chad Fowler 가 “Trash Your Servers and Burn Your Code : Immutable Infrastructure and Disposable Components”라는 블로그 기사에서 처음 등장한 개념입니다.

Immutable Infrastructure with Docker

http://chadfowler.com/2013/06/23/immutable-deployments.html

Immutable Infrastructure 의 배경 기술로는 오토스케일링(Auto Scaling)과 블루-그린 배포 방식(Blue-Green Deployment) 가 있습니다.

또한 클라우드와 컨테이이너 기술, 가상화 기술들이 발전하면서 서비스 운영 환경을 이미지로 구성하여 배포하는 방법이 가능하게 되면서 “변경 불가능한 인프라” 도입이 확산되기 시작하였습니다.

Auto Scaling

Auto Scaling은 부하에 따라 자동으로 서버 대수를 증감시키는 기술로 항상 필요한 대수 만 시작하기 때문에 비용 절감됩니다.

Auto Scaling은 서버가 자동으로 확장하거나 축소되기 때문에 서버를 일회용으로 쓰고 버리는 방식으로 운영할 수 있습니다.

오픈시프트 오토스케일잉

Blue-Green Deployment

Blue-Green Deployment  주로 클라우드 환경에서 적용되는 배포 패턴입니다. 지금까지의 배포는 애플리케이션을 서버에 복사한 후 애플리케이션 서버를 재시작하는 것입니다. 그러나 Blue-Green Deployment에서는 서버 그룹을 통째로 복제하여 로드 밸런서에서 전환하여 배포하는 방식입니다.

만약 애플리케이션 서버가 100 대 있으면 새로운 버전의 애플리케이션을 설치 한 서버를 다시 100 대 설치하고 실행한 후, 새로운 서버 그룹으로 트래픽을 전환하는 것입니다. 이렇게하면  애플리케이션을 다시 시작할 때 성능 저하를 걱정할 필요가 없으며 롤백도 손쉽게 할 수 있습니다.

Auto Scaling뿐만 아니라 Blue-Green Deployment에서 서버는 일회용으로 다루기 때문에 서버의 구축과 관리를 단순화 할 수 있습니다.

Blue-Green Deployment

Docker 와 변경 불가능한 인프라

OS 를 포함하여 서버의 소프트웨어 구성을 일정하게 고정 시키고 애플리케이션을 도커를 이용하여 가상 OS 환경과 함께 배포하고 운영함으로서 호스트 OS 자체에 대한 변경 없이 안정적으로 애플리케이션을 실행할 수 있는 구조입니다.
애플리케이션 실행환경이 Docker 에서 제공하는 가상OS환경이 이기 때문에 언제든지 서버를 폐기/생성 할 수 있어 호스트 OS 환경의 문제로 부터 벗어 날 수 있습니다.

Docker & Container

다음 기사에서는 “변경 불가능한 인프라”가 무엇인지, 이전의 운영 방법인 “변경 가능한 인프라”와 개념적 차이점 그리고 이점 등에 대해 살펴봅니다. ( coming soon)

References & Related Links

OpenShift 소개자료, 브로셔, 데이터시트 다운로드

RED HAT OPENSHIFT CONTAINER PLATFORM 3.6

OpenShift 는 조직이 기존이나 컨테이너 애플리케이션을 물리 서버, 가상 머신,그리고 퍼블릭 클라우드에 쉽고 빠르게 개발, 배포 및 관리하도록 돕는 애플리케이션 플랫폼입니다.

검증된 오픈소스 기술을 바탕으로 하는 OpenShift 는 애플리케이션 개발팀과 IT 운영팀이 애플리케이션을 현대화하고 새로운 서비스를 제공하며 개발 프로세스를 가속화하는데 도움을 줍니다.

PaaS (서비스로서의 플랫폼), DevOps 와 애플리케이션 통합

PaaS(서비스로서의 플랫폼)의 정의는 여러 가지가 있습니다. Gartner에 따르면 PaaS는 “애플리케이션 인프라(미들웨어) 서비스(애플리케이션 플랫폼, 통합, 비즈니스 프로세스 관리 및 데이터베이스 서비스 포함)의 광범위한 집합”으로 정의됩니다.

“PaaS는 개발자가 기반 인프라를 신경 쓰지 않으면서 애플리케이션 생성, 실행 및 관리에 집중하도록 지원하는 동시에 IT 운영 부서에 관련 시스템의 제어 기능을 제공하는 추상화 계층”이라는 실용적 정의를 본 e-book은 사용합니다.

퍼블릭 PaaS, 프라이빗 PaaS, 하이브리드 PaaS를 포함한 다양한 형태로 제공되는 PaaS는 IT에 원하는 방식으로 애플리케이션을 보다 빠르게 전달하는 데 사용할 수 있는 필수 도구를 제공합니다.