The IaC framework to build cloud infrastructure faster
Because it is React for Infrastructure-as-Code - see why
developed and sponsored by FABR
AWS CDK | Terraform CDK | cdk8s | Pulumi |
Framework(s):
- Coming Soon: | | (vote)
Packages as reference implementations:
Sample projects using the packages above:
- AWS CDK for AWS
- Terraform CDK for Digital Ocean
OpenFABR CDF aims to offer a brand new way of building cloud infrastructure, based on our view that the future of DevOps is MODULAR + CUSTOM.
We envisage a future where application developers (in product engineering) and DevOps/Cloud engineers (in platform engineering) collaborate by code in a true Infrastructure-as-Code manner. OpenFABR CDF is the missing piece, the glue, that brings the entire tool chain together from IaC runtimes like CDK, to imperative languages like TypeScript, testing frameworks like Jest, and artefact repositories like NPM.
Ad-hoc, bespoke infra build project after project should be a thing of past. There are common patterns emerging that can be encapsulated into reusable modules, or L2/L3 constructs as AWS would call them. Bigger engineering organisations with platform engineering function also tend to have their own opinions about how their internal cloud operations can be constructed by high-level components, which in turn can be offered to the product engineering counterpart in the same organisation.
Abstraction (via packages mentioned above) is hard, and almost impossible to work without an escape hatch, because every infra project could have its own quirks, e.g. special permissions, external dependencies, or even different domain names. OpenFABR CDF fully acknowledges it by offering an inversion-of-control based custom code block feature for application developers to access all underlying cloud resources fully, for customisation.
For application developers, OpenFABR CDF is the framework that pieces together a cloud infra package with local custom code to deliver a cloud infra project extremely quickly.
- From 0 to 95%: With the help of a selected package, an infra baseline can be assembled using a simple, schema-aware JSON configuration file. This can be done in minutes or hours, instead of days or weeks.
- From 95% to 100%: Every project is different, the framework allows detailed customisation to every underlying infra resources being created by the modular approach earlier. This can be done in hours or days, certainly not weeks.
For DevOps/Cloud/Platform engineers, adopting OpenFABR CDF means following a separation-of-concern approach by implementing modular, reusable packages from day one.
Best of all, OpenFABR CDF does not have any opinions about what IaC runtime (AWS CDK and Terraform CDK; Pulumi and others coming soon) and language (Typescript; Python, Java, C# and Golang coming soon) one should use. It allows engineering organisations to pick their favourite runtime and language. It forms the foundation of an internal cloud platform and leaves the opinions about how to implement cloud infrastructure to package authors and application developers.
Follow the Getting Started to experience the workflow yourself.
To dive deep, the User Guide covers the context as well as detailed manuals for both application developers and package authors.
Click on the badge to join our server:
Same as other OpenFABR projects, it is dual-licensed under
- GNU AGPL v3
- FABR Commercial v1 (coming soon)
Before accepting your contribution, please e-sign the Contributor License Agreement (coming soon) which is a common practice in open source. Once signed, your GitHub username will then be registered on the project's contributor list which safeguards the contributions to the project.
The monorepo is structured in a way that different build tools are used for different CDF language implementation. See below for details about how to develop for CDF in a particular language:
- Framework:
- core/typescript for CDF
- Packages as reference implementations:
- samples/packages/awscdk-typescript for TypeScript based AWS CDK package
- samples/packages/cdktf-typescript for TypeScript based CDKTF package
- samples/packages/pulumi-typescript for TypeScript based Pulumi package
- Sample projects based on the use of the packages above:
- samples/projects/awscdk-typescript for using the TypeScript AWS CDK package above
- samples/projects/cdktf-typescript for using the TypeScript CDKTF package above
- Documentation:
Tools and libraries in use include:
-
GitHub Actions are used as CI/CD tooling. Again the build and release workflows vary between sub repos based on language, framework etc.
-
Conventional Commits spec is strictly followed which enabled the use of Release Please across CDF releases in different languages.
-
Material for MkDocs is used to generate the doc site from markdown format. A Github Actions workflow handles CI/CD. It can also be previewed locally before creating pull requests.