[Monitoring, Logging and Runtime Security] 가변 인프라와 불변 인프라: 차이점과 실용 예제

IMKUNYOUNG·2024년 6월 29일
0

CKS

목록 보기
68/70

이번 글에서는 인프라의 두 가지 접근 방식인 가변 인프라불변 인프라에 대해 알아보겠습니다. 이 두 개념을 이해하면 시스템 관리와 운영을 보다 효율적이고 안전하게 할 수 있습니다. 예제를 통해 알아보겠습니다.

가변 인프라란?

가변 인프라는 시스템의 구성 요소가 시간에 따라 변경될 수 있는 인프라를 말합니다. 여기서는 Nginx 웹 서버를 예로 들어 설명하겠습니다.

가변 인프라 예제: Nginx 업그레이드

Nginx 1.17 버전이 실행 중인 서버를 생각해보겠습니다. 새로운 버전이 출시되면 우리는 소프트웨어를 1.17에서 1.18, 1.19로 업그레이드해야 합니다. 이를 위해 서버에서 직접 업그레이드를 하거나 구성 관리 도구를 사용할 수 있습니다.

단일 서버에서의 업그레이드

  1. 새로운 Nginx 버전을 다운로드합니다.
  2. 수동으로 또는 스크립트를 통해 업그레이드합니다.

다중 서버 환경에서의 업그레이드

고가용성을 위해 동일한 소프트웨어와 코드를 실행하는 세 개의 웹 서버를 가지고 있다고 가정해보겠습니다. 각 서버에 대해 동일한 업그렝이드 절차를 적용해야 합니다. 기존 서버의 소프트웨어를 새로운 버전으로 업데이트하는 과정을 인-플레이스 업데이트라고 합니다.

구성 드리프트의 문제

업그레이드 과정에서 각 서버가 동일한 종속성을 충족해야 하지만, 항상 그렇게 되지 않을 수 있습니다. 예를 들어, 두 서버는 1.19 버전으로 성공적으로 업그레이드되었지만, 한 서버는 종속성 문제로 1.18 버전에 머물 수 있습니다. 이는 구성 드리프트를 초래하여 시스템을 복잡하게 만들고, 문제해결과 향후 업그레이드를 어렵게 합니다.

Configuration Drift는 시간이 흐르면서 시스템이나 애플리케이션, 서버, 인프라, 하드웨어 등의 실제 구성이 의도하거나 원하는 구성과 달라지는 현상을 뜻합니다.

불변 인프라란?

불변 인프라는 리소스를 변경하는 대신 새 리소스를 생성하여 교체하는 방식을 말합니다. 이를 통해 구성 드리프트 문제를 방지할 수 있습니다.

불변 인프라 예제: Nginx 업그레이드

Nginx 1.17에서 1.18로 업그레이드하려면 1.18 버전의 Nginx가 포함된 새로운 서버를 생성하고, 기존 서버를 삭제합니다. 이는 불변 인프라의 기본 원칙입니다. 변경할 수 없는 리소스를 사용하여 일관성과 안정성을 유지합니다.

컨테이너와 불변성

컨테이너 기술은 불변성을 염두에 두고 설계되었습니다. 예를 들어, Nginx를 1.18에서 1.19로 업그레이드하려면 Dockerfile에서 기본 이미지를 업데이트하고, 이를 통해 새로운 컨테이너를 생성합니다. 롤링 업데이트를 사용하면 다운타임 없이 새 버전의 컨테이너를 배포할 수 있습니다.

불변 인프라의 장접

  • 구성 드리프트 방지: 새로운 리소스를 사용하여 업데이트하므로 구성 드리프트가 발생하지 않습니다.
  • 일관성 유지: 모든 서버가 동일한 상태를 유지하므로 문제가 발생했을 때 쉽게 해결할 수 있습니다.
  • 보안 강화: 실행 중인 컨테이너를 직접 변경하지 않으므로 악의적인 코드 변경을 방지할 수 있습니다.

결론

가변 인프라와 불변 인프라는 각각의 장단점이 있지만, 불변 인프라는 구성 드리프트를 방지하고 일관성을 유지하는 데 큰 장점이 있습니다. 이를 통해 시스템 관리와 운영의 효율성을 크게 향상시킬 수 있습니다.

0개의 댓글