메인 콘텐츠로 건너뛰기
블로그 개발자 도구 IaC의 선언적 vs. 필수 사항

IaC의 선언적 vs. 필수 사항

IaC의 선언적 vs. 필수 사항

코드형 인프라(IaC)는 IT 환경을 구상, 구성 및 배포를 위한 강력한 패러다임입니다. IaC 모델에서 컴퓨터 시스템은 수동으로 구성되는 것이 아니라 특수 언어를 사용하여 파일에 설명됩니다. 그런 다음 자동화 도구가 파일을 읽고 사용자의 사양에 맞게 시스템을 빌드합니다. IaC는 그 효율성과 다양성 덕분에 DevOps와 클라우드 컴퓨팅 혁명에 대한 인기 있는 보완이 되었습니다.

각기 다른 다양한 기능과 이점을 갖춘 다수의 자동화 플랫폼에서 IaC를 지원합니다. IaC 솔루션 구상을 시작할 때 이러한 기능 중 요구 사항에 가장 적합한 기능을 고려해야 합니다. IaC 자동화 플랫폼을 비교할 때 염두에 두어야 할 중요한 고려사항 중 하나는 도구가 명령적 또는 선언적 작업을 지원하는지 여부입니다.

IAC 토론에서는 명령적선언적이라는 용어가 자주 등장합니다. 두 용어 모두 사용자가 자동화 플랫폼에 명령을 제공하는 방식을 나타냅니다. 명령적 도구로는 원하는 솔루션에 도달하기 위해 취할 단계를 정의합니다. 선언적 도구로는 원하는 최종 솔루션 상태를 정의하고, 자동화 플랫폼은 이 상태를 달성하는 방식을 결정합니다.

초기에는 명령적 시스템이 더 쉬울 때가 많습니다. 명령적 시스템이 인간이 생각하는 방식과 더 비슷하게 조직되어 있다고 할 수도 있습니다. 명령적 시스템은 일련의 작업이나 단계로서 구성에 대해 지속적으로 생각할 수 있게 해주어, 각각 목표에 더 가까이 다가갈 수 있게 됩니다. 명령적 언어의 또 다른 이점은 다층식 명령어 계층을 구축하여 매우 상세하고 복잡한 구성을 자동화할 수 있다는 것입니다. 또한, 명령적 시스템은 사용자에게 작업을 수행하는 방식에 대한 제어권을 보다 많이 제공하기 때문에, 선언적 시스템보다 특정 목적 최적화하기에 보다 효율적이고 간편할 때가 많습니다.

명령적 언어가 모든 장점을 갖추고 있는데 왜 선언적 언어가 대단한 인기를 끌고 있는지 궁금하실 것입니다. 선언적 도구는 수년 간 인기를 얻어 왔으며 논쟁의 여지는 있지만 IaC 자동화의 지배적인 형식이라 할 수 있습니다. 선언적 도구의 인기에 대한 한 가지 이유는 적어도 일단 이 도구들이 작동하는 방식을 이해하고 나면 사용자 측에 대해 더 자세히 알아야 할 필요가 없기 때문입니다.

명령적 도구 사용 시, 사용자는 자동화 플랫폼에 수행할 작업을 지시기에 충분한 지식을 갖추어야 합니다. 선언적 시스템의 경우에는 사용자가 최종 구성 상태만 정의하면 되며, 플랫폼이 이에 이 상태에 도착하는 방법을 결정합니다. 사용자는 단계별 실행의 복잡성을 전혀 알 필요가 없어집니다.

선언적 언어의 또 다른 장점은 멱등성이 더 뛰어나다는 것입니다. 멱등법칙의 개념은 동일한 결과로 여러 번 실행할 수 있는 프로세스를 가리킵니다. 선언적 언어는 최종 상태만 정의하기 때문에 어디서부터 시작하든 항상 동일한 위치에 있게 됩니다. 반면에 명령적 언어는 시작점에 따라 다른 끝점으로 이동시킬 수 있는 일련의 미리 정의된 일련의 단계로 작업을 구상합니다.

선도적인 IaC 자동화 플랫폼은 명령에서 선언에 이르기까지 스펙트럼의 다양한 장소를 차지하지만, 많은 도구에는 최소한 두 가지 접근 방식을 모두 지원할 수 있는 용량이 있습니다. Chef는 일반적으로 명령적 도구로 알려져 있습니다. TerraformPuppet은 선언적인 것으로 간주됩니다. AnsibleSalt는 대부분 선언적이지만 명령적 명령에 일부 지원을 제공합니다.

IaC 자동화 플랫폼을 구매할 때 고려해야 할 많은 요소가 있습니다. 명령적 대 선언적 선택은 보다 큰 규모의 옵션 매트릭스에서 하나의 기준에 불과합니다. 그러나 미래의 IaC 환경 설계를 시작할 때 명령적 또는 선언적 솔루션 중 어느 것이 조직에 더 적합한지 여부를 시각화하는 데 시간을 할애하는 것이 중요합니다.


내용

댓글 남기기

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