The General trend in today's world is to create the tools and the pipelines of DevOps in-house to ship stable and agile tech products. But there is a huge cost to this. Organizations spend a lot to acquire talent, who then design the full DevOps implementation starting from scratch, by combining multiple point solutions. 

We have seen that in this activity, there is a lot of repetitive work. The same discoveries and tunings around the tools and the pipelines are done across the organizations. Elsewhere in software engineering, we adopt frameworks to accelerate development to avoid repetitive and grunt work. 

Why not have a framework for implementing your Cloud Modernization and DevOps? Facets Cloud Runtime addresses this and enables you to focus all your energy on solving your business problems.

Most enterprises and startups today rely on one or more cloud providers like AWS, Azure, or GCP to host their infrastructure. Running the infrastructure in these cloud providers is a full-fledged operational task as all of these clouds have complex and very different services and setup processes. 

Routine tasks like setting up environments, setting up logging, tooling, metrics, and making sure all environments are in sync all the time takes a lot of manpower. Frequent releases and babysitting all change management overshadows want to put all of the energy into building and shipping new products. Facets aim to provide best-in-class DevOps to every team so that they can focus solely on their product.

What is Facets Cloud Runtime (FCR)?

FCR is an adapter that translates the Facets Software Product Catalog into cloud implementations. The same catalog can be implemented in any of the clouds by choosing a Facets Cloud Runtime for that cloud.

There are modules provided by Facets to fulfill the intents expressed in Facets Software Product Catalog. Organizations can build on top of these provided modules to implement new intents or new implementations for existing intents using the FCR Plugin system. FCR will build a marketplace of these plugins so that organizations can share their knowledge of fulfilling these intents.

Apart from fulfilling intents and keeping them synchronized in all environments, FCR takes care of creating the basic Networking infrastructure, Security, and Permissions. It also provisions, maintains, and manages a Kubernetes cluster. 

In this Kubernetes cluster, it takes care of continuous delivery pipelines, deployment mechanisms (Canary, Rolling, etc. ), spot node management, etc. FCR also provisions default observability (Prometheus + Alert Manager + Grafana) and logging (NFS based with S3 for archiving) stack for you with options to integrate with others.

Facets Cloud time
Facets Cloud Runtime (FCR) Layout

How does FCR function?

Facets Cloud Runtime provisions your infrastructure with best practices around cost, security, observability, and resiliency on your selected cloud provider.

The FCR provisions network isolation, security groups, Kubernetes cluster, and other components defined in the Facets Software Product Catalog. Along with this FCR installs cloud agents to maintain and run your product. These cloud agents enable capabilities like autoscaling node groups, spot management, alerting, dashboards, and much more.

FCR supports manifesting an intent in multiple "flavors". The choice of the flavor may depend on the cloud provider or stack definition itself. For eg, MySQL intent may be fulfilled by the Aurora/RDS flavor on AWS. Stacks can further customize this behavior by overriding the default flavor in the intent definition with another supported Facets flavor or custom flavor written as a Plugin.

Why FCR?

The aim of FCR is to provide robust implementations with all aspects considered, Facets Engineering team works very hard to maintain and publish various flavors of implementations so that organizations can just use it as a stepping stone and worry only about their business-specific use cases. 

FCR is like having a very specialized Ops team at your disposal at all times. Another aim is to democratize, codify and package the Ops knowledge to make it distributable within and across organizations. We envision communities to maintain and create many implementations for organizations to choose from.