Mutable and Immutable Infra

xgro·2022년 6월 24일
0

DevOps

목록 보기
4/9

[C911] 가변적(mutable) 인프라와 불변적(immutable) 인프라의 차이는 무엇인가요?

📌 Differences Between Mutable and Immutable Infrastructure

가변 인프라와 불변 인프라 사이의 가장 근본적인 차이는 central policy에 있다.

  • Mutable Infrastructure:
    서버를 수동으로 수정할 수 있다. 
    서버에 로그인하여 구성을 변경하고 패키지를 설치/수정할 수 있습니다.

  • Immutable Infrastructure:
    일단 배포되면 서버를 수정할 수 없다. 
    구성을 변경해야 하는 경우 기존 이미지를 업데이트하고 새 서버를 가동하여 이전 이미지를 교체할 수 있습니다. 
    서버가 실행되는 동안에는 구성 또는 코드 변경이 허용되지 않습니다.

좀 더 자세히 설명하자면, 서버 기반의 가변 인프라와 불변 인프라 사이에는 practical 및 conceptual 적인 차이가 있다.

  • conceptual
    두 종류의 인프라는 서버를 어떻게 다루어야 하는지에 대한 접근 방식(예: 생성, 유지 관리, 업데이트, 제거)이 크게 다릅니다. 이것은 일반적으로 "pets vs cattle”의 비유로 설명된다.

    DevOps Concepts: Pets vs Cattle
    https://iamondemand.com/blog/devops-concepts-pets-vs-cattle/

  • practical
    Mutable 인프라는 가상화 및 클라우드 컴퓨팅과 같은 불변의 인프라를 실현하고 실용적으로 만드는 핵심 기술보다 훨씬 오래된 인프라 패러다임이다.

이 역사를 알면 둘 사이의 개념적 차이와 현대 인프라에서 하나를 사용하거나 다른 하나를 사용하는 것의 의미를 contextualize 하는 데 도움이 된다.

👉 Why Immutable Infrastructure?

오늘날의 분산 시스템은 불변의 인프라 개념을 채택하고 있다.

시스템 아키텍처에 불변성을 적용하여 구축하면 몇가지 이점이 있다.

간단히 요약하자면, 변경할 수 없는 인프라가 있다는 것은 서버의 구성을 변경하고자 할때, 기존 서버에서 수정하는것이 아닌 업데이트된 구성으로 새로운 서버를 구축한다는 의미이다.

✅ Simplifying Your Operations

  • 구성 요소 내에서 drift detection을 다루어야할 필요가 없다.
  • 요소를 수정하는 대신 교체하므로 작업이 더 간단해 진다.
  • 변경할 수 없는 인프라이므로 많은수의 프로덕션을 각각 관리할 필요가 없다.
  • 인프라 자동화가 환경내에서 일관성을 보장하도록 할 수 있다.

✅ Quick Recovery from Failures

  • 인프라를 다룰때 Failures는 불가피하게 발생한다. 그러나 자동화된 방식으로 노드를 교체할 수 있다면 장애를 신속하게 복구할 수 있다.
  • 서버간의 구성을 변경하는것을 식별하는 별도의 작업을 처리할 필요가 없다.

✅ Scaling Your Infrastructure Dynamically

  • 기본 이미지를 사용하여 인프라를 자동으로 시작하면 애플리케이션 부하에 따라 환경을 동적으로 확장 할 수 있다. 또한, 부하가 감소하면 워크로드를 단계적으로 축소 할 수도 있다.

✅ Minimizing the Risk Factor

  • DevQA, integration, staging, and live 등 다양한 환경에 CI/CD 파이프라인을 구축할 수 있어야 한다.
  • 환경간의 상태 차이로 인해 스테이징에서는 작동하지만 라이브 환경에서는 작동하지 않는 상황이 종종 발생한다. 모든 환경에서 동일한 이미지를 이용하면 drift detection을 최소화 하고 표준화된 환경에서 작업을 할 수 있다.

✅ Securing Your Infrastructure

  • 보안 패치 또는 업데이트를 기존 인프라에 적용할 때 업그레이드 후 문제가 발생할 수 있다.
  • 불변의 인프라를 사용하면 기본 이미지에 보안 업데이트를 적용하고 유효성 검사 테스트를 실행한 다음 애플리케이션에서 사용할 이미지를 게시한다.
  • 위의 프로세스를 통해 accetp되고 test가 완료된 base 이미지를 이용하여 처음부터 빌드하기 때문에 보안 관점에서 효과적으로 접근할 수 있다.

What is drift?
리소스의 실제 속성 값이 예상 속성 값과 다른 경우 리소스가 drift된 것으로 간주한다. Drift detection를 사용하면 스택의 실제 구성이 예상구성과 다르거나 드리프트 되었는지 여부를 감지할 수 있다.

✅ 레퍼런스 참조

profile
안녕하세요! DevOps 엔지니어 이재찬입니다. 블로그에 대한 피드백은 언제나 환영합니다! 기술, 개발, 운영에 관한 다양한 주제로 함께 나누며, 더 나은 협업과 효율적인 개발 환경을 만드는 과정에 대해 인사이트를 나누고 싶습니다. 함께 여행하는 기분으로, 즐겁게 읽어주시면 감사하겠습니다! 🚀

0개의 댓글