IaC Spec Kit - 클라우드에 구애받지 않는 인프라 코드 명세 도구 키트
비즈니스 요구사항을 인프라 코드로 변환하는 AI 지원 워크플로우
목차
명세 주도 개발(Specification-Driven Development)이란 무엇인가?
명세 주도 개발(Specification-Driven Development, SDD)은 코드를 작성하기 전에 상세한 명세를 생성하는 새로운 방법론입니다. 이 명세는 진실의 단일 출처(single source of truth)가 되어 AI 에이전트가 구현 계획과 프로덕션 준비가 된 코드(production-ready code)를 생성하도록 안내합니다. 이 접근 방식은 의도를 사전에 명확히 하고, 불일치(misalignment)를 줄이며, 프로젝트와 함께 진화하는 살아있는 문서(living documents)를 통해 반복적인 개선을 가능하게 합니다.
더 알아보기: Red Hat의 SDD • Martin Fowler의 SDD • ThoughtWorks Radar
인프라에 대한 잠재적 이점:
- AI 에이전트가 사용할 수 있는 높은 수준의 요구사항으로 시작할 수 있도록 지원하여 상세 명세를 생성합니다.
- 요구사항(무엇이 필요한지)과 구현 세부 사항(특정 클라우드 서비스)을 분리하도록 장려합니다.
- AI 에이전트가 명세(specs)를 IaC 구성으로 변환하는 데 도움이 되는 템플릿과 명령어를 제공합니다.
- 계획 및 코드 변경에 정보를 제공할 수 있는 명세 업데이트를 가능하게 합니다.
- 명시적이고 검토 가능한 명세를 통해 팀의 정렬(alignment)을 용이하게 합니다.
이 프로젝트 소개
CI
GitHub Release
License
Python 3.11+
Last Commit
PRs Welcome
IaC Spec Kit은 GitHub Spec Kit 툴킷의 전문화된 구현체로, Terraform 및 클라우드 제공업체를 사용한 Infrastructure as Code (IaC) 워크플로우에 맞게 조정되었습니다. Specification-Driven Development (SDD)가 떠오르는 트렌드가 되면서, 이 프로젝트는 명세 기반 접근 방식이 인프라 개발을 어떻게 개선할 수 있는지 탐구합니다. 이곳은 AI 지원 인프라 프로비저닝으로 무엇이 가능한지 발견하고 있는 실험적인 분야입니다.
시각적 워크스루 (Visual Walkthrough)
전체 워크플로우를 실행으로 확인하세요 (2분):
<a href="https://www.youtube.com/watch?v=al1Yx0BG7Wo">
<img src="https://raw.githubusercontent.com/IBM/iac-spec-kit/HEAD/media/iac-spec-kit-thumbnail.png" alt="IaC Spec Kit Walkthrough" width="600">
</a>
이 시각적 가이드는 IaC Spec Kit을 사용하여 IBM Cloud에 대한 WordPress 배포를 위한 인프라 명세, 계획 및 Terraform 코드를 생성하는 엔드투엔드(end-to-end) 프로세스를 보여줍니다.
인프라별 기능 (Infrastructure-specific features)
- 인프라 명령어 네임스페이스 (Infrastructure command namespace): 모든 명령어는
.iac 접두사를 사용합니다 (/iac.principles, /iac.specify, /iac.plan, /iac.tasks, /iac.implement).
- IaC 중심 템플릿 (IaC-centric templates): 클라우드 리소스, 네트워킹, 보안 및 규정 준수를 위해 설계된 템플릿입니다. 이 툴킷은 Terraform에 약간 치우쳐 있지만, 모든 IaC 도구를 사용할 수 있습니다.
- 멀티 클라우드 지원 (Multi-cloud support): AWS, Azure, GCP, IBM Cloud, Oracle Cloud 등 모든 클라우드 제공업체에서 작동합니다.
- 인프라 원칙 (Infrastructure principles): 클라우드 인프라를 위한 거버넌스 프레임워크, 보안 표준 및 비용 관리를 다룹니다.
멀티 클라우드 인프라 지원 (Multi-Cloud Infrastructure Support)
IaC Spec Kit은 모든 클라우드 제공업체에서 작동하도록 설계되었습니다. 이 툴킷은 AI 에이전트가 일반적인 인프라 요구 사항(무엇이 필요한지)을 클라우드별 구현 방식(어떻게 구축할지)과 분리하도록 장려합니다.
- **원칙 및 사양(Principles and Specifications)**은 일반적인 인프라 용어를 사용합니다. IaC Spec Kit은 "관리형 데이터베이스 (managed database)", "객체 스토리지 (object storage)", "암호화 키 관리 (encryption key management)"와 같은 용어를 사용하여 요구 사항을 설명하도록 장려하며, 클라우드별 특정 서비스 이름보다는 일반적인 용어에 초점을 맞춥니다.
- **계획 및 구현(Plans and Implementation)**은 클라우드별로 특화되어 있습니다. IaC Spec Kit은 AI 에이전트가 일반적인 요구 사항을 AWS RDS, Azure Database, Cloud SQL 또는 IBM Databases for MySQL과 같은 특정 서비스로 변환하는 것을 돕습니다.
이러한 분리는 다음 목적을 가지고 있습니다:
- 무엇이 필요한지에 집중하고, 이를 위해 어떻게 구축할지 고민하는 부담을 줄여줍니다. 이 과정에서 AI 에이전트가 클라우드별 구현 세부 사항을 따르도록 안내하는 템플릿을 제공합니다.
- 특정 클라우드 공급업체에 익숙하지 않은 팀원들에게 사양을 더 쉽게 이해할 수 있도록 합니다.
- 다른 클라우드 공급업체로 전환할 때
/iac.plan을 다른 클라우드로 다시 실행하여 지원할 수 있습니다.
- 동일한 사양을 여러 클라우드에 배포하는 것을 가능하게 합니다.
- 커밋하기 전에 다양한 클라우드 공급업체의 옵션을 비교하는 것을 용이하게 합니다.
기여 및 향후 아이디어 (Contributing and future ideas)
IaC Spec Kit은 Specification-Driven Development(사양 주도 개발)가 Infrastructure as Code(코드로서의 인프라, IaC) 워크플로우를 어떻게 개선할 수 있는지 탐구하는 실험적인 프로젝트입니다. 기여는 템플릿을 다듬고, 호환성을 확장하며, AI 지원 인프라 프로비저닝과 가장 잘 작동하는 방식을 발견하는 데 도움이 됩니다. 참여 방법에 대한 지침은 CONTRIBUTING.md를 참조하고, 탐색할 수 있는 잠재적인 영역은 IDEAS.md를 참고하십시오.
시작하기 (Get Started)
1. IaC Specify CLI 설치
사전 요구 사항: 이 CLI 도구는 빠른 Python 패키지 설치 프로그램인 uv가 필요합니다. 아직 설치하지 않았다면 다음 명령어로 설치하십시오:
curl -LsSf https://astral.sh/uv/install.sh | sh
...
선호하는 설치 방법을 선택하세요:
옵션 1: 영구 설치 (권장)
한 번 설치하여 어디서든 사용합니다:
uv tool install iac-specify-cli --from git+https://github.com/ibm/iac-spec-kit.git
그런 다음 도구를 직접 사용합니다:
iac-specify init <PROJECT_NAME>
iac-specify check
iac-specify를 업그레이드하려면 내장된 셀프 업그레이드 명령을 사용하세요:
또는 uv로 수동 업그레이드를 진행하세요:
uv tool install iac-specify-cli --force --from git+https://github.com/ibm/iac-spec-kit.git
옵션 2: 일회성 사용(One-time Usage)
설치 없이 직접 실행하기:
uvx --from git+https://github.com/ibm/iac-spec-kit.git iac-specify init <PROJECT_NAME>
영구 설치의 이점:
- 도구가 설치되어 PATH에서 사용 가능합니다.
- 셸 별칭(shell alias)을 생성할 필요가 없습니다.
uv tool list, uv tool upgrade, uv tool uninstall를 통해 더 나은 도구 관리가 가능합니다.
- 더욱 깔끔한 셸 구성이 가능합니다.
2. 명세(Spec) 작성하기
프로젝트 디렉터리에서 AI 어시스턴트를 실행하세요. /iac.* 명령어는 해당 어시스턴트에서 사용할 수 있습니다.
/iac.specify 명령어를 사용하여 구축하고자 하는 내용을 설명합니다. **무엇(what)**과 **왜(why)**에 집중하세요. IaC Spec Kit은 이 단계에서는 AI 에이전트가 기술 스택 세부 사항을 피하도록 안내합니다.
/iac.specify I need to deploy WordPress for my small business website. Should handle a few thousand visitors per day, needs to be secure with automated backups. Budget is around $500/month. Use the official WordPress Docker image.
3. 기술 구현 계획(Plan) 작성하기
/iac.plan 명령어를 사용하여 아키텍처 계획을 생성합니다. 이 명령어는 인라인 리서치와 함께 단일 plan.md 파일을 출력합니다.
/iac.plan Deploy in us-south. Use Code Engine for containers, Databases for MySQL, Cloud Object Storage for media.
선택적 보강 작업(Optional enrichment): 품질이 중요하거나 복잡한 프로젝트의 경우, **/iac.enrichplan**을 실행하여 심층 리서치(Well-Architected Framework 분석, 큐레이션된 모듈), 상세 아키텍처, 모듈 명세 및 프로비저닝 퀵스타트 가이드를 생성할 수 있습니다.
4. 작업 목록으로 분해하기
**/iac.tasks**를 사용하여 구현 계획으로부터 실행 가능한 작업 목록을 만듭니다.
5. 구현 실행하기
계획에 따라 모든 작업을 실행하고 기능을 구축하려면 **/iac.implement**를 사용하세요.
선택 사항: 프로젝트 원칙 추가 - 다중 기능 프로젝트 또는 팀 협업의 경우, /iac.specify 이전에 **/iac.principles**를 사용하여 여러 기능에 적용되는 일련의 원칙을 설정할 수 있습니다. 이렇게 하면 모든 다른 명령어에서 참조되는 principles.md 파일이 생성됩니다.
/iac.principles This is a production environment. Security and compliance are critical. Use Terraform with curated modules.
/iac.principles This is a development environment. Keep it simple, focus on basic security, and keep costs low. Use Terraform.
원래의 명세 기반 개발(Spec-Driven Development) 방법론은 GitHub Spec Kit 문서를 참조하세요.
생성된 예시
IaC Spec Kit이 무엇을 생성하는지 확인: wordpress-ibm-cloud - 아래 워크플로우를 사용하여 IBM Cloud에 배포된 완전한 WordPress 배포판으로, 생성된 명세(specifications), 계획(plans), 작업(tasks), 및 Terraform 코드를 보여줍니다.
클라우드 공급자 예시
클라우드 공급자로 시작하기:
더 알아보기: 클라우드별 서비스 이름 대신 일반적인 인프라 용어를 사용하여 명세를 작성하는 방법을 이해하려면 기술 비종속적 인프라 명세 작성 (Writing Tech-Agnostic Infrastructure Specifications)을 읽어보세요.
최상의 결과를 위한 팁
프론티어(frontier) AI 모델 사용
주요 AI 제공업체의 최신 프론티어 모델은 일반적으로 향상된 추론 능력(reasoning capabilities)과 인프라 패턴에 대한 더 나은 이해도를 제공합니다. AI 비서(AI assistant)를 구성할 때는 사용 사례에 맞는 가장 진보된 모델을 선택하는 것을 고려해 보세요.
MCP 서버 사전 구성