Product Catalog

Introduction

In this new age of DevOps, developers spend more time building manifests, and CI pipelines than writing code. Deploying artifacts to the cloud can become a zoo of terms, resources and competing provisioners, each with their own unique YAML formats and domain specific language. Merging Development and Ops seemed like a good idea when the Ops part of it was less involved. Kubernetes brings power to an orchestration platform, but with it comes complexity. Developers do not need to spend time in a configuration nightmare. They do not need to serve their orchestration platform, it should serve them. The whole purpose of having something like a cloud development platform is to empower developers and make their lives easier, not harder. A Product Catalog is one way to help developers remove complexity and friction from their development process.

What is a Product Catalog

Every application requires a set of resources to realize its functionality. In fact an application itself is composed of a set of resources that work together to fulfill users requests. For instance, a document store may be composed of SpringBoot, MariaDB and MinIO. SpringBoot provides the application framework, MariaDB stores metadata about the document – file names, timestamps, sizes, etc. – and MinIO handles the actual document storage and retrieval.

This is a well known set of resources required for a document storage web application. Other resources like caching or search may be added to the core catalog when needed. It is time consuming for developers and ops teams to generate and compose the manifests for this type of product catalog. Since it is a fairly well-known composition, developers or Ops should be able to choose these artifacts as a package and install them with a single command. This is the notion of Product Catalogs.

An Product Catalog, in one sense, is another name for a Service Catalog which contains the manifests for resource management in a cluster.

The purpose or goal of providing bundled resources is to provide users with a prix-fixe selection that they can select and deploy. The Product Catalog can be composed of a number of these collections as well as individual components that can be selected and added to the infrastructure upon demand.

Product Catalog

Swipe Left to see more

Product Catalog Deployment

Swipe Right to go back

The diagram shows some of the core components of a CNDE.

  • The product catalog contains a product template that includes SpringBoot, MariaDB and MinIO. It also contains a separate resource for Prometheus.
  • Developers, Testers and Ops can select that product template by name and with a single command, create the resources in the cloud.
  • Teams members can also manage the entire lifecycle of the product as a whole. This means updating it, viewing it and even deleting it.
  • The self service capabilities for managing product template is powered by the artifacts contained in the CNDE.
This diagram details the results of team members selecting a product catalog and submitting a command to create a product resource in the cloud.

If the product templates and configuration files are configured correctly, the result is a fully deployed workload that developers, testers and ops can use.

The product stack can be updated, monitored, inspected and deleted. The product catalog can be used repeatedly on many different CNDEs and it will remain consistent in every application where it is used.

Benefits

There can be many different product templates within a Product Catalog. They can be standard templates with the most commonly used configurations or they can be customized and assembled upon demand. The aim of developing product templates is to remove the configuration chaos, when dealing with more complex product architectures. It also has other benefits as well:

  • Application templates are easier to use.
  • It provides a level of consistency and confidence to the deployment process.
  • They provide a holistic view of the product.
  • They are composable, mutable and can be modified as the product evolves.
  • They reduce the time developers spend on creating manifests or building internal developer platform (IDPs).
  • They reduce the cognitive load on developers.

Product Catalogs are yet another way for organizations to reduce complexity, promote automation, enhance quality, empower product development and reduce time to market.

Ideate Iterate Innovate