Immutable infrastructure ( 변경 불가능한 인프라) with Docker

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

변경 가능한 인프라와 변경 불가능한 인프라 간의 가장 근본적인 차이점은 정책에 있습니다.

전자는 서버 컴포넌트들을 배포한 후에도 변경되도록 설계된 반면, 후자의 경우에는 배포된 서버 환경을 변경하지 않고 궁극적으로는 기존 것은 버리고 새 것으로 대체하는 것입니다.

두 가지의 인프라 관리 방법은 서버를 어떻게 처리 ( 생성, 유지, 업데이트, 제거)해야 하는지에 대한 접근 방법에서 다른 점이 있습니다.

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

기존에는 서버를 교체하는 비용이 너무 많이 들었기 때문에 3년, 5년, 10년 등의 유지 보수 기간을 설정하여 장비를 자사에서 구매하고 이 기간이 끝날 때까지 사용하였습니다.

일단 구축하고 난 뒤 유지 보수하면서 최대한 오랫동안 사용하는 것이 일반적이다. 장비뿐만 아니라 OS와 미들웨어 벤더도 유지 보수 기간이 있으며 OS·미들웨어 애플리케이션과 실제 운영 모드의 트래픽에 맞춘 퍼포먼스 튜닝도 수행하는 등 인프라 관련해 여러 가지 구성 요소를 변경하면서 운영 관리 하였습니다.

이 때문에 인프라 구축 규모가 크면 클수록 인프라 구성관리에 대한 부담도 늘어납니다.

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

변경 불가능한 인프라는 서버를 일회용으로 취급하는 개념이고, 변경 가능한 인프라는 항상 운영가능한 상태이고, 대체 불가능한 유일한 시스템으로 다루는 개념입니다.

즉 일회용 종이컵과 고급 도자기 컵과 비유될 수 있습니다. 종이컵은 한번 쓰고 버리지만 컵 하나를 구매하는데 부담스러워 하지 않습니다. 고급 도자기 컵은 어떨까요? 깨지면 모든 것이 끝나게 됩니다.

Immutable infrastructure ( 변경 불가능한 인프라) with Docker

Immutable Infrastructure ( 변경 불가능한 인프라 ) 장점 – Docker

Immutable Infrastructure가 제공하는 혜택에 대해 생각해 보겠습니다.

Immutable Infrastructure with Docker

모든 서버를 동일한 상태로 유지

서버들을 Ansible/Puppet/Chef 와 같은 도구를 사용하여 오랜시간 동안 업데이트와 패치를 거듭하면서 관리되었다고 가정해 봅니다.

그렇다면 그 서버들의 상태가 모두 동일하게 유지되고 있다고 자신있게 말할 수 있을까요?

서버를 수동이 아닌 자동화된 방식으로 관리한다는 것은 관리의 효율성은 보장하지만 모든 서버들의 상태를 동일하게 유지 한다고 할 수 없습니다.

“변경 불가능한 인프라”에서는 서버의 변경이 필요하게 되면 모든  서버의 이미지를 새로 만들기 때문에 모든 서버가 동일한 상태임을 보장합니다

언제든지 즉시 운영 가능한 서버 구축

언제든지 즉시 운영 가능한 서버 환경을 구축할 수 있다면 서비스의 가용성을 확실하게 보장 할 수 있습니다.

아무리 클라우드환경에서 시스템을 운영 중이라고 하더라도 하드웨어를 사용하는 것이므로 반드시 물리적인 고장이 발생할 수 있습니다. 마냑

만약 장애 상황에서 서버를 처음부터 설치해야 한다면, 시간의 문제 뿐만이 아니라 비즈니스에도 큰 문제가 발생합니다.

Immutable Infrastructure with Docker
Infrastructure as Code

Provisioning 은 단순하게

“변경 할수 없다”는 것은 “Ansible 을 최초 한 번만 실행하는 것 ‘입니다.

Ansible은 “멱등성 ‘이라는 중요한 특징을 가지고 있습니다.이것은 동일한 서버에 Ansible을 여러 번 반복해서 실행해도 동일한 결과를 얻는 것입니다.

Immutable Infrastructure 환경에서는 최초의 상태에서 변화가 필요없기 때문에 멱등성이 불필요합니다.

테스트의 편이성

Immutable Infrastructure에서는 개발/스테이징/운영 단계에서  모든 서버 상태가 동일하게 보장되어 있기 때문에, CI를 통한 테스트에 대한 신뢰도가 높아집니다.

Docker Test 편이성 제공

애플리케이션 이식성 향상

Docker Hub 를 통해 컨테이너 이미지를 공유 할 수 있기 때문에 전세계 누구나 ​​동일한 시스템 사양이면 같은 환경의 서버를 구축 할 수 있습니다.

글로벌한 개발 커뮤니티에서는 머신 이미지와 간단한 스크립트를 공유하면 손쉽게 개발환경을 공유할 수 있습니다.

Immutable Infrastructure with Docker

맺음말

이 기사에서는 변경 불가능한 인프라가 무엇인지, 이전 스타일의 변경 가능한 인프라와 개념적 및 실제적 차이, 사용 이점 및 구현에 대해 자세히 설명했습니다.

변경 불가능한 인프라의 이점은 인프라의 일관성과 안정성을 보장하고, 간단하고 예측 가능한 배포 프로세스를 포함하는 것입니다.

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에 원하는 방식으로 애플리케이션을 보다 빠르게 전달하는 데 사용할 수 있는 필수 도구를 제공합니다.