본문으로 바로가기

[DevOps] Pets vs Cattle 이란?

category IT/DevOps 2022. 5. 15. 02:17
반응형

Intro

클라우드 컴퓨팅 기술이 발전하고 보다 쉽게 서버를 확장할 수 있게 되면서 변경 가능한 서버, 확장 가능한 서버를 위한 설계가 중요시 되고 있습니다. “Pets vs Cattle”은 한마디로 변경 불가능한(Immutable)인프라와 변경 가능한(Mutable)인프라에 대한 개념이라고 할 수 있습니다. 오늘은 “Pets vs Cattle”이 무엇이고 탄생 배경이 어떻게 되는지 알아 보도록 하겠습니다.

탄생 배경

Pets vs Cattle 서비스 모델은 Microsoft의 엔지니어인 Bill Baker가 Scaling SQL Server 2012라는 프레젠테이션을 통해 이 것을 처음 소개했습니다.

Bill은 이 발표에서 클라우드나 클라우드 컴퓨팅에 대해 이야기하지 않았습니다. 그의 발표는 대부분 "스케일업" 대 "스케일아웃" 아키텍처에 관한 것이었습니다.

시간이 지나면서 많은 사람들이 이 컨셉에 대해 이야기를 하기 시작했고, 오늘날에 인프라 서버를 운영하는 개념으로 정립 되었습니다.

Pets은 무엇이고 Cattle은 무엇인가


Pets은 사랑스럽게 잘 돌봐주어야 하는 존재입니다. 이를 서버에 비유해보면 만약 서버가 다운이라도 되면 관리자가 전체 점검을 수행하고, 서버를 재부팅하고 로그를 하나하나 확인하고 구성 요소를 교체하여 전반적인 상태를 확인합니다. 또한 항상 이상이없는지 문제 및 성능을 모니터링합니다. 마치 애완 동물에게 하는 것처럼 헌신해야 하며 손이 많이 갑니다.

  • 절대 다운될 수 없는 필수 또는 고유한 시스템
  • 일반적으로 수동으로 구축, 관리

반면에 Cattle 은 가축인 소들을 의미 합니다. 소들의 귀에 고유한 번호가 적혀져 있는 것처럼 서버들도 각각의 식별번호로 태그가 지정됩니다. 만약 서버가 다운되면 다른 서버로 교체가 가능하고 스케일아웃이 언제든지 가능합니다.

  • 자동화된 도구를 사용
  • 장애가 발생시 서버를 다시 시작하거나 자동화를 통해 사람의 개입없이 해결

컨테이너에서의 Pets과 Cattle

2015년 Bernard Golden은 이 Pets과 Cattle에서 Cattle을 소가아닌 닭으로 표현하여 유연한 환경에 필요한 컨테이너를 설명했습니다.

닭은 소와 달리 몸집이 작고 공간이 거의 필요하지 않습니다. 즉, 소비하는 리소스를 최소화하면서 더 많이 사용할 수 있습니다. 게다가 닭은 소보다 수명이 훨씬 짧습니다. 클러스터(소) 인스턴스의 수명은 며칠입니다. 용기(닭)의 수명은 분 단위로 측정됩니다.

공간 뿐만아니라 속도라는 요소도 관련되어 있습니다. 물리적 서버는 프로비저닝 및 구성에 가장 오랜 시간이 걸리고 VM(적절한 자동화가 적용된 상태)과 컨테이너가 그 다음입니다. 잘 설계된 컨테이너 모델에 가까울수록 구성 요소 중 하나를 더 빨리 제거하고 교체합니다. 이 모든 것이 기본 제공자와 함께 제공되어 조직이 애플리케이션 소비자의 요구를 충족하기 위해 양방향(스케일업 및 스케일아웃)으로 빠르게 확장할 수 있습니다.

Cattle의 핵심

우선 궁극적으로 서버의 폐기 가능성에 초점을 맞추는 것이 Cattle 개념의 가장 중요한 컨셉입니다. Cattle은 서버를 폐기 할 수 있는 인프라를 말하며 따라서 구성 변경을 최소화하고 프로그램을 가능한 가장 작은 구성 요소로 분해하며 자동화를 활용하여 이러한 모든 움직이는 요들소을 제어할 수 있어야 합니다. 즉, 확장 가능하고 안전하며 유연한 인프라를 만드는 것이 핵심인 것입니다.

이러한 인프라를 위해서는 Cloud , Infra as a code , Container ochestration 가 필수 요소라고 할 수 있습니다.

변경 가능한(Mutable) 인프라와 변경할 수 없는(Immutable) 인프라

좀 더 나아가서 변경 가능한 인프라와 변경할 수 없는 인프라에 대해 간단히 알아보도록 하겠습니다. 위에서 설명드린 Cattle은 변경할 수 없는(Imutable)인프라이며 Pets은 변경 가능한(Mutable)인프라 입니다.

온프레미스 데이터 센터와 클라우드에서 서버를 처리하는 방법에는 차이가 있습니다. 유지 관리해야 하고 파괴할 수 없는 기존의 온프레미스 서버와 달리 클라우드의 서버는 임시 서버로 처리됩니다.

  • 변경 가능한 인프라: 서버를 수동으로 수정할 수 있습니다. 서버에 로그인하여 구성을 변경하고 패키지를 설치/수정할 수 있습니다.
  • 불변 인프라: 일단 배포되면 서버를 수정할 수 없습니다. 구성을 변경해야 하는 경우 기존 이미지를 업데이트하고 새 서버를 가동하여 이전 이미지를 교체할 수 있습니다. 서버가 실행되는 동안에는 구성 또는 코드 변경이 허용되지 않습니다.
반응형