![[인프라를 소프트웨어처럼 1/5] Infrastructure as Code, 그리고 그다음](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Fv31psllp%2Fproduction%2F1a54d3e4367a26f4140016603008348855c27358-1684x1030.png%3Fauto%3Dformat%26fit%3Dmax%26w%3D1200&w=3840&q=75)
설정 파일에 머물던 인프라를 테스트 가능하고 재현 가능한 진정한 '소프트웨어'로 진화시키는 방법
본 아티클은 Terraform의 plan 결과만으로는 알 수 없는 인프라의 실제 동작 여부 문제를 지적하며, 인프라를 소프트웨어처럼 다루어야 한다는 'IaS' 철학을 제시합니다. flex 팀이 추구하는 5가지 핵심 축(배포, 클라우드, 시간, 공간, 테스트)의 설계 원칙을 설명하고, 이를 통해 구현된 격리 환경 자동화의 서막을 알립니다.
인프라 변경으로 인한 프로덕션 장애를 사전에 방지하고 싶은 DevOps 엔지니어나, 대규모 인프라의 환경 격리를 자동화하려는 플랫폼 팀에게 이 연재 시리즈를 강력히 추천합니다.
기존의 Infrastructure as Code(IaC)는 설정 파일의 변경 사항(diff)은 보여주지만, 해당 변경이 실제 환경에서 의도한 대로 동작하는지에 대한 피드백 루프를 제공하지 못해 실제 반영 전까지는 안정성을 보장할 수 없습니다.
인프라를 단순한 설정 파일의 집합이 아닌 테스트 가능(Testable)하고 재현 가능(Reproducible)한 소프트웨어로 취급하는 'Infrastructure as Software(IaS)' 개념을 도입하여, 변경 사항을 즉각적으로 검증할 수 있는 환경을 구축합니다.
브랜치를 생성하면 격리된 실행 환경이 즉시 구축되고 삭제 시 함께 회수되는 '환경 배리언트(Environment Variant)' 체계를 마련하여, 인프라 변경에 대한 빠르고 안전한 피드백 루프를 확보했습니다.
Trade-off
환경을 통째로 격리하여 생성하고 관리하는 과정에서 클라우드 리소스 비용이 증가할 수 있으며, 기존의 복잡한 인프라 의존성을 모두 추상화하여 환경 외부로 밀어내는 설계의 난도가 높을 것으로 추측됩니다.
인프라를 단순 코드로 작성하는 것을 넘어, 소프트웨어 공학의 미덕인 단위 테스트, 짧은 피드백 루프, 재현성을 인프라 영역에 적용하는 태도입니다.
인프라 변경을 실제 반영하기 전에 동작을 검증할 수 있어야 하며, 동일한 선언은 시점과 장소에 관계없이 항상 같은 결과를 만들어내야 한다는 성질입니다.
특정 브랜치나 변경 사항을 위해 독립적으로 생성되었다가 목적 달성 후 사라지는 격리된 실행 환경입니다.









