Systems
Systems in Ctrlplane are the highest level of organizational units, designed to group related deployments and environments together. They provide a structured approach to managing complex deployment pipelines and enforcing consistency across your infrastructure.
Key Features of Systems
- Deployment Organization: Systems contain information about all associated deployments, allowing for centralized management.
- Environment Standardization: All deployments within a system share the same set of environments, ensuring consistency across the deployment pipeline.
- Scalability: Systems can accommodate as many deployments and environments as needed, supporting growth and complexity in your infrastructure.
- Deployment Cycle Alignment: Commonly used to group applications with similar deployment cycles, facilitating coordinated releases.
- Access Control: Systems provide a natural boundary for implementing role-based access control (RBAC) policies.
System Structure
- Deployments: Each system can contain multiple deployments, representing different applications or services.
- Environments: Systems define a set of environments (e.g., Development, QA, Staging, Production) that are shared across all associated deployments.
- Policies: System-level policies can be applied to govern deployment processes across all included deployments and environments.
- Configurations: Shared configurations can be defined at the system level and inherited by deployments.
Benefits of Using Systems
- Consistency: Enforce uniform environments and deployment processes across related projects.
- Simplified Management: Centralize configuration and policy management at the system level.
- Efficient Onboarding: Quickly set up new deployments with pre-configured environments and policies.
- Coordinated Releases: Facilitate synchronized deployments for applications with interdependencies.
- Improved Visibility: Gain a holistic view of related deployments and their statuses.
- Streamlined Governance: Apply security and compliance policies consistently across all deployments within a system.
Best Practices
- Logical Grouping: Create systems based on application domains, teams, or deployment cycles.
- Standardized Environments: Define a consistent set of environments that make sense for your development and release processes.
- Policy Enforcement: Implement system-wide policies to ensure compliance and security across all deployments.
- Regular Review: Periodically assess and update system configurations to align with evolving organizational needs.
Example Use Case
A typical use of systems might involve grouping all microservices for a particular product:
-
System: “E-commerce Platform”
-
Environments: Dev, QA, Staging, Production
-
Deployments:
- User Authentication Service
- Product Catalog Service
- Order Processing Service
- Payment Gateway Service
-
Shared Configurations:
- Database connection strings
- API gateway settings
-
System-wide Policies:
- Automated rollback on failed deployments
- Required approvals for production deployments
-
By organizing these services under one system, you ensure they all progress through the same environments and adhere to consistent deployment policies, facilitating a coordinated release process for the entire e-commerce platform.
How should I organize my deployments into systems?
Focus on these two crucial aspects:
- Deployment Resources: Ensure that all deployments within a system share identical deployment resources. This is crucial because deployment pipelines are structured to perform deployments on a uniform set of resources within the system.
- Environments: Ensure that all deployments within a system operate within the same environments and adhere to the same environment policies.
Although this method may seem prescriptive, it provides a strong framework for managing deployments. It encourages the separation of software from infrastructure, leading to enhanced maintainability and fostering improved system ownership.