Overview

Learn about Score, the Score implementation (CLI), and how to eliminate configuration mismanagement.

What is Score?

Score is made up of two components, the Score Specification file and the Score implementation CLI tool.

The Score Specification is a developer-centric application definition that describes how to run a Workload. As a platform-agnostic declaration file, score.yaml file presents the single source of truth on a Workloads profile of requirements and works to utilize any platform or tooling.

The Score implementation (CLI) is a conversion tool for developers and teams used to generate environment-specific configurations. Use the Score implementation tool to generate your target platform configurations from the Score Specification, which can then be combined with environment-specific parameters to run the Workload in the target environment.

Workload specification

The Score Specification resolves configuration mismanagement between environments. Compose a score.yaml file that describes how to run your workload. As a platform-agnostic declaration file, score.yaml creates a single source of truth for Workload profiles and requirements, which is used to integrate with any platform or tooling.

Who uses Score?

Developers use the Score Specification to describe their resources and environments consistently.

Then they use the Score implementation tool to generate their resources in an environment of choice.

For example, you might use a Postgres database in a local, development, staging, and production stage. Each stage of the deployment process connects to a different Postgres database. When composing your Score Specification file, describe the Postgres database once, and each environment will connect the appropriate Postgres database dynamically.

Benefits

Score can be used with any platform or tool that runs containerized Workloads. Because of this, Score offers many benefits, including:

Reduces time spent debugging

The Score Specification file provides a single source of truth on a Workload’s profile of requirements. Meaning that there is a clear separation of concerns between developers with their applications, operations with their platform of responsibilities.

Score serves as the main point of reference when wanting to understand what an application requires to run in any environment.

With Score, the specification ensures standardization across all environments.

Eliminates configuration mismanagement

Configuration mismanagement is the difference between how your local environment and remote environments are defined. For example, if you’re running a testing in environment with Docker Compose and a production environment Kubernetes Cluster, keeping both environments in sync is no easy task.

With the Score, define your environment once, and the target Score implementation tool manages the configuration.

Reduces cognitive load

The Score Specification provides sensible configuration that cover most common use cases. Because of this, developers can keep their focus when it comes to specifying their application configuration. If needed, these defaults can be overridden.

How is Score different from other specs?

Docker Compose and Helm are great for running resources regardless of platform, but when you use Docker in testing and Helm in development, ensuring your code runs in both environments can cause friction. Score abstracts the complexity by providing a language-agnostic layer that can describe your resources without the specifying the platform.

Why Score is not a configuration management tool

Score exclusively takes care of translating the Workload requirements specified in score.yaml into a platform-specific format. The platform consuming the generated file is responsible for processing and resolving each property. This means:

  • Score is not a configuration management tool for environments. It isn’t recommended to store configuration values or secrets in score.yaml. Instead, use dynamic environment-specific configurations to declare items such as configuration maps, secrets, or vaults as a Workload dependency in your Score Specification.
  • Score is not a resource and environment management system, such as Terraform or an Internal Developer Platform like Humanitec. It won’t spin up or purge physical resources or services defined in score.yaml.
  • Score is not a deployment tool. It doesn’t support you with deploying or promoting Workloads across environments.