The score.yaml specification makes the developers the conductor of the workload that is performed in a symphony of technologies and instruments. A score sheet is a musical notation that describes the notes that are played by a musician on his instrument. It is used by the conductor to see at a glance what each performer should play and what the sound of an orchestra should be.
The problem of mismatched configurations in application development
In modern software development, workloads are typically viewed as microservices, with each component packaged in its own container. Implementing containerised workloads allows teams to run their code in different environments. Desires meet reality when containers need to be managed at scale, and teams begin to use orchestration platforms that include a broad set of tuples that support application development.
As a developer, you might use Docker Compose for on-premises development and deploy to remote environments that are based on systems like Kubernetes, Google Cloud Run, Amazon ECS, or HashiCorp Nomad. To successfully develop, test, deploy, and run a workload, you not only need to know the platform and related tools your team is using, but you also need to synchronize the specification of each workload. If units are configured differently across platforms, teams risk configuration inconsistencies.
The question of how things are now reflected appropriately in the next environment-which may run on Kubernetes and be managed via helm maps-gets a different answer in each team and depends on the complexity of the task at hand. A variable change is easier to synchronize than declaring a database dependency across platforms.
The Score specification allows you to specify which containers to use, whether there are resource or service dependencies, whether ports should be opened or what data volumes should be referenced – whatever the workload requires of you, it is written to score.yaml. Structurally, the specification consists of 3 top-level elements:
- Containers: defines how the workload tasks are executed.
- Resources: defines the dependencies required on the workload.
- service: defines how the workload can reveal its resources when executed.
Since all platform configuration files are generated from the same Specification, the risk of configuration inconsistencies between environments is greatly reduced. A change to score.yaml will be automatically reflected in all environments without the need for the developer to manually intervene.