OpenCHAMI has undergone a significant architectural evolution with the introduction of fabrica-based services. This transition marks a shift from legacy, monolithic services to modern, API-first microservices generated by the Fabrica framework. Understanding this migration is crucial for both existing operators planning upgrades and new users starting with OpenCHAMI.
In the legacy tutorial, OpenCHAMI relied on two key services for node bootstrapping and configuration:
These services worked together but had accumulated technical debt over time. BSS, in particular, became challenging to modify due to its complex codebase and tight coupling with other components.
The current tutorial showcases the new fabrica-generated services:
This shift represents a fundamental change in how OpenCHAMI services are developed, maintained, and extended, and goes beyond a simple service replacement.
As highlighted in the boot-service blog post, the motivation for creating boot-service was clear: “inheriting BSS meant that we would have to deal with the technical debt that accumulated over the years.” Fabrica-generated services start with a clean slate, incorporating modern Go practices and eliminating legacy complexities.
Fabrica enforces OpenCHAMI specifications automatically, ensuring that all generated services conform to the standards decided by the Technical Steering Committee and API working group. This means less time spent on boilerplate and more time focused on domain-specific logic.
As demonstrated in the Fabrica inventory blog post, Fabrica transforms simple Go structs into complete REST APIs with:
This dramatically reduces development time and ensures consistency across services.
Fabrica’s Kubernetes-inspired resource structure separates spec (desired state) from status (observed state), providing a clear pattern for managing resource state that aligns with cloud-native principles.
The migration is now reflected in the documentation:
The move to fabrica-based services sets the foundation for OpenCHAMI’s future:
While boot-service and metadata-service are the first to be generated with Fabrica, other services are planned for migration (such as inventory-service. This will create a uniform codebase where all services benefit from Fabrica’s advantages.
New contributors can now:
With services built on the same framework:
For new users, the current tutorial provides a complete walkthrough of setting up OpenCHAMI with fabrica-based services. Key steps include:
Existing users planning migration should consult the fabrica-migration guide which provides detailed steps for transitioning from legacy deployments.
The migration to fabrica-based services represents a significant step forward for OpenCHAMI. By embracing modern API generation techniques, we’ve reduced technical debt, improved consistency, and created a foundation for faster innovation. While the core functionality remains familiar to existing users, the underlying architecture now supports more agile development and easier maintenance.
As OpenCHAMI continues to evolve, the fabrica-based approach will enable developers to deliver new features more rapidly while maintaining the reliability and standards that HPC environments demand. Whether you’re starting fresh with OpenCHAMI or planning an upgrade from a legacy deployment, the fabrica-based services offer a cleaner, more sustainable path forward.