메인 콘텐츠로 건너뛰기
블로그 개발자 도구 IaC 인프라 설계 모범 사례

IaC 인프라 설계 모범 사례

IaC 인프라 설계 모범 사례

코드형 인프라(IaC)는 클라우드 시대에 네트워크를 배포하고 관리하기 위한 철학이자 일련의 관행입니다. IaC는 클라우드 컴퓨팅의 이점을 극대화하고 Puppet, Chef, Salt, Ansible, 및 Terraform과 같은 자동화된 구성 및 배포 도구의 기능을 활용할 수 있도록 설계되었습니다. 이러한 도구에서 제공하는 완전 자동화된 설치 및 구성을 통해 관리자는 구성 파일로 전체 시스템을 정의할 수 있습니다.

구성 파일은 시스템을 조립하고 구성하는 방법에 대한 사양이 있는 일련의 지침입니다. 이 지침 세트는 다양한 형태를 취하며 도구(예: Chef의 쿡북Ansible의 플레이북)에 따라 다른 이름을 붙일 수 있습니다. 플랫폼 간의 차이에 관계 없이 사전에 완전한 구성을 정의하는 이 기능은 시스템에 대한 지식이 코드 양식에 상주하고 콘솔 명령을 사용하여 기존 설치 또는 재구성 없이 클라우드에 빠르게 배포되는 인프라에 대한 새로운 비전으로 이어집니다.

자체 솔루션을 배포하는 단계는 자동화 플랫폼과 네트워크의 세부 사항에 따라 다르지만 IaC의 가능성을 탐색하기 시작할 때 이러한 원칙을 염두에 두십시오.

  1. 간단한 모듈식 시스템

하드웨어 시대에 Office는 이메일, 파일 저장 및 기타 여러 작업을 위한 단일 서버 시스템을 사용할 수 있지만 IaC의 첫 번째 교훈은 올인원 사고 방식에서 벗어나는 것입니다. 대규모, 다목적 시스템은 복잡성을 더하며 복잡성으로 인해 오류 및 보안 문제가 발생할 수 있습니다. IaC 인프라를 간단하고 능률적이며 모듈식으로 설계한 다음 빌딩 블록처럼 배포하여 환경의 요구를 해결하십시오.

  1. 단일 진실 공급원

동일한 구성 파일의 여러 버전은 혼동을 일으키고 실수를 초래할 수 있습니다. 각 구성에는 단일 소스가 있어야 합니다. 단일 소스란 Git과 같은 버전 관리 시스템을 사용하여 명확하고 효과적인 버전을 구현한다는 뜻입니다. 그러나 단일 진실 공급원 철학은 단순한 버전 관리 이상의 의미가 있습니다. 초점은 표준 템플릿의 중앙 별자리에 있어야하며, 사용자 정의는 즉흥적이 아닌 명확하고 예측 가능한 프로세스를 통해 실행해야 합니다.

  1. 외부 문서 없음

구성 파일 자체에 내용을 이해하는 데 필요한 모든 정보가 들어 있어야 합니다. 구성 지침과 해설을 별도의 문서에 배치하려면 팀이 별도의 파일을 병렬로 추적하고 유지 관리해야 합니다. 구성을 먼저 변경하고 나중에 문서를 업데이트하는 오래된 습관은 나중에 추가 작업을 하게 하고, 실수로 이어지며, 구성 및 문서가 일치하지 않게 됩니다.

대부분의 IaC 플랫폼은 코드에 주석을 추가하는 수단을 제공하지만 팀 구성원이 IaC 플랫폼에 사용되는 인터페이스 도구 및 선언 언어에 익숙해지고 구성의 세부 사항을 읽고 이해하는 것도 중요합니다.

  1. 자동 테스트를 통한 보증

자동 테스트는 DevOps와 IaC 철학의 핵심 원칙입니다. IaC 환경에 내장된 모듈형 및 재현성을 통해 테스트 환경에서 프로덕션 설정을 쉽게 모델링할 수 있습니다. 테스트는 구성을 변경한 후에 시작해야 하며 새 버전의 시스템이 배포되기 전에 단위 테스트, 기능 테스트, 통합 테스트 및 회귀 테스트를 통해 체계적으로 진행되어야 합니다.

  1. 고정불변을 위한 린 인

IaC에서 구성은 코드에 존재합니다. 그 목표는 구성 파일을 통해 구성의 세부 정보를 표현하는 것입니다. 시스템이 생동감이 되면 다른 컴퓨터 시스템과 마찬가지로 시스템을 관리하고 재구성하려는 유혹을 받을 수 있지만 균일성 원칙은 그대로 두는 것이 가장 좋습니다. 로컬 눈송이 재구성은 오류로 이어질 수 있으며 다른 사람이 시스템을 보호하고 유지하기 어렵게 만들 수 있습니다. 이상적으로는 구성 파일을 통해 모든 변경한 다음 실행 중인 시스템을 조정하는 대신 업데이트가 필요한 경우 다시 배포해야 합니다.

  1. 협업을 위한 프로세스 설계

전체 구성 및 목표에 대한 지식은 단일 사용자로 집중되는 병목 현상이 아니라 팀 전체가 공유하는 것이어야 합니다. 버전 관리는 공동 작업 환경의 핵심 구성 요소이지만 시작에 불과합니다. 대화형 프로세스 및 공동 작업 도구를 배포하여 정보 및 공동 책임을 극대화하는 동시에 합리적인 보안 및 감사 정책을 유지해야 합니다. 공유되지 않거나 양도할 수 없는 정보를 가진 인간은 작업의 연속성에 위협이 됩니다.

IaC의 가능성을 탐색하고 자체 IaC 인프라에 대한 배포 프로세스를 구상할 때 이러한 원칙을 염두에 두십시오.

내용

댓글 남기기

이메일 주소는 게시되지 않습니다. 필수 필드가 표시됩니다 *