Cloudflare는 API 정의에서 SDK 패키지, 명령줄 도구, 문서 및 라이브러리를 직접 생성하는 확장 가능 오픈 소스 파이프라인 Forge를 발표했다. Forge는 지속적 통합(CI) 환경에서 작동하며, 호스팅된 SaaS 서비스에 의존하는 대신 무료로 자체 운영할 수 있다.
이 프로젝트는 Rust, Go, TypeScript, Python을 비롯한 언어로 작성된 수백 개의 서비스가 지원하는 3,500개 이상의 작업을 포함한 API를 관리해야 하는 Cloudflare의 필요에 대한 대응으로 나왔다. 회사는 현재 Forge가 cf CLI에 필요한 출력을 생성하며, 앞으로 몇 달 동안 Cloudflare 문서와 SDK 패키지 등으로 사용 범위를 확대할 예정이라고 밝혔다.
모든 변경 사항에 대한 미리보기
Forge는 제품 팀의 저장소 안에서 작동하며, 각 변경 사항을 검사한 다음 CLI 도구, 문서 및 SDK 패키지의 미리보기 버전을 만들고 해당 변경으로 인해 발생한 수정 사항을 강조 표시한다. 팀은 API 변경 사항을 병합하거나 고객에게 출시하기 전에 이러한 버전을 설치하고 테스트할 수 있다.
이 메커니즘은 API가 수백 개의 서비스와 저장소에 분산된 환경에서 발생하는 실질적인 문제를 겨냥한다. 단 하나의 변경으로 생성 과정이 중단될 수 있으며, 영향을 받은 팀은 출시 시점이 되어서야 문제를 발견할 수 있다. 반면 CI 내부에서 생성 작업을 조기에 실행하면 검증을 변경 사항의 출처에 더 가까운 단계로 옮기고 팀 간에 필요한 조율을 줄일 수 있다.
연결된 출력 생성
Forge는 전통적인 언어 대상에만 한정되지 않는다. 이 프로젝트는 OpenAPI 정의를 받아 Cloudflare의 RPC 시스템인 Cap’n Web과 같은 출력을 생성할 수 있다. Cap’n Web은 로컬 함수를 호출하는 것과 유사한 방식으로 원격 TypeScript API를 호출할 수 있도록 한다. 회사는 또한 동일한 접근 방식을 사용해 TanStack Query 바인딩, Zod 또는 Valibot 스키마, MCP 서버를 만들 수 있다고 설명한다.
Forge는 연결 가능한 변환기에 의존하므로 하나의 출력을 사용해 다른 출력을 생성할 수 있다. 현재 입력 유형으로 OpenAPI를 지원하며, 향후 AsyncAPI, GraphQL, Cap’n Proto 및 Protobuf를 추가할 수 있도록 설계되어 있다. 또한 사용자는 고정된 경로를 강요받는 대신 생성 체인을 지정할 수 있다. 이는 CLI 도구가 SDK 패키지와 다른 언어로 구축되었거나 도구에 수동으로 작성된 명령이 포함된 경우 중요하다.
실제로 무엇이 달라지는가?
Forge는 API 소비 도구를 나중에 별도로 업데이트하는 제품이 아니라 API 자체의 개발 주기에 포함된 요소로 만드는 모델을 제시한다. 이는 SDK, 문서 및 CLI를 동기화된 상태로 유지해야 하는 팀에 도움이 되지만, 특히 도구가 생성된 코드와 수동으로 작성된 명령 또는 동작을 함께 포함하는 경우 생성된 출력에 대한 검토 필요성을 없애지는 않는다.
Cloudflare는 이 프로젝트를 API 버전 관리 계획과도 연결한다. v4 메이저 버전을 10년 동안 사용한 후, 회사는 고객이나 기존 SDK 패키지를 중단시키지 않고 새로운 메이저 버전을 출시할 수 있는 접근 방식을 마련하고 있다고 밝혔다. 이 자료에서는 해당 접근 방식의 세부 내용이나 적용 일정은 공개하지 않았다.
오픈 라이선스와 현재 단계의 한계
Forge는 Apache 2.0 라이선스로 제공되며, 비용 없이 실행, 수정, 내부 또는 비공개 방식으로 사용할 수 있다. Cloudflare는 Forge가 cf CLI 출력을 생성하는 데 사용되고 있음에도 프로젝트가 아직 초기 단계라고 설명했다. 또한 TypeScript, Rust, Python, Go, PHP 및 Terraform용 SDK에 관한 세부 정보를 추후 제공하겠다고 약속했으며, Terraform 제공자의 이전 요구 사항을 특별히 언급했다.