Project
A Project is your workspace in Facets: one blueprint and the environments deployed from it. When to create a project, when not to split one, and how Facets keeps large projects manageable.
A Project is your workspace in Facets. It holds one Blueprint, your application's map of resources, and the Environments deployed from that Blueprint onto your cloud. You create a Project from a Project Type, which sets the modules it can use, then build its Blueprint and deploy it across environments.
When to create a new project
Create a project around a functional or operational boundary, not by default:
- Distinct business capabilities. A recommendation engine and an e-commerce platform serve different purposes and run independently, so they belong in separate projects.
- Operational independence. Systems that run in silos, with little interaction, are good candidates for separate projects.
Why not split one product into many projects
Splitting a single product across projects usually adds complexity without benefit. Before you split:
- For access control, use resource groups, not a split. If RBAC is the reason, Resource Groups give logical separation and fine-grained access without splitting the project.
- Size is not a reason. Facets abstracts Terraform state management and optimizes it for scale, so a large blueprint does not need splitting.
Handling large projects
Facets is built to keep a single project manageable at scale:
- Abstracted state management automates Terraform state, reducing operational overhead.
- Performance optimizations keep deployments efficient even for large environments.
- Unified project knowledge gives one view of every resource and dependency, so you see relationships clearly and avoid redundant configuration.
Reusing Terraform code
Reference external public Terraform modules from within Facets modules to reuse common logic like naming and provisioning, plus the Facets Utility Modules.
Creating a Project
Step-by-step guide to creating a project in Facets: name it, pick a Git account and project type, choose its environments, or import an existing repo.