CNCF Open Source Solutions Guide (and more) for cloud native
March 8, CNCF Foundation, created by The Linux Foundation, introduced a significantly updated version of its "map of previously uncharted territory of cloud (cloud native) technologies" - Cloud Native Landscape 2.0. The information collected within the framework of this project is aimed at companies that are just starting their way into the world of infrastructure for cloud native applications, and is designed to introduce them to the many available open source solutions and more.
First, let’s figure out what is called “cloud native” in a fund with a consonant name (Cloud Native Computing Foundation). In the understanding of CNCF, these are applications (and related infrastructure) that are endowed with the following properties:
Introducing the wide variety of existing products that help applications meet these requirements is the following description of the main steps towards cloud native (see the picture for the translation) .
So, the recommended in the CNCF Trail Map - the process of mastering the cloud infrastructure - is as follows:
The first 3 points are basic, and the rest are optional, depending on the situation.
The “landscape” itself is a rather extensive catalog of products that are not limited to CNCF projects and even free licenses (although most of them relate to Open Source). For convenience, they are divided into categories:
This entire collection is represented graphically:
( Full image on GitHub .)
( Note: in this table you can also see that Kubernetes was the first CNCF project to achieve graduated status , ie “graduate.” This was announced recently - March 6. All other CNCF projects are classified as incubating and inception.)
In addition, with the second version of Cloud Native Landscape, CNCF launched an interactive web version of the catalog, available as landscape.cncf.io (for serverless - s.cncf.io ).
Cloud Native Landscape catalogs are generated based on data obtained from a special YAML , to which information from external services (project information in GitHub, financial indicators from Crunchbase and Yahoo Finance) is added, resulting in a new YAML , as well as JSON , which is already and used by the application to output data.
CNCF welcomes the addition of new projects, which is done through a pull request to the aforementioned landscape.yml . The project must have at least 250 stars on GitHub and it must correspond to one of the available categories (for more details on the requirements, see here ).
The main Cloud Native Landscape table, as well as its serverless counterpart, and the Trail Map mentioned earlier, are available in different formats . All project data is distributed under the free Apache License 2.0, with the exception of image files and YAML (they are licensed under Creative Commons Attribution 4.0), information from Crunchbase and project / product logos.
Read also in our blog:
Path to cloud native
First, let’s figure out what is called “cloud native” in a fund with a consonant name (Cloud Native Computing Foundation). In the understanding of CNCF, these are applications (and related infrastructure) that are endowed with the following properties:
- the possibility of exploitation , i.e. application / system lifecycle management with external tools;
- the possibility of observation , i.e. the presence of mechanisms for obtaining the current state and performance;
- elasticity , allowing to increase and decrease in size within the available resources and depending on the changing load;
- fault tolerance , guaranteeing fast automatic recovery in case of falls;
- dynamism , including fast deployments (deploy), iterations, configuration changes.
Introducing the wide variety of existing products that help applications meet these requirements is the following description of the main steps towards cloud native (see the picture for the translation) .
So, the recommended in the CNCF Trail Map - the process of mastering the cloud infrastructure - is as follows:
- Containerization . Usually implemented using Docker. You can pack applications into containers and their dependencies of any size (even the code for PDP-11, run in the emulator). Over time, it is recommended to split existing functions into parts, and implement new ones as microservices.
- CI / CD . Set up continuous integration and delivery (Continuous Integration / Continuous Delivery) so that changes in the source code will automatically turn into a container built with them, tested and deployed on staging and, ultimately, on production. Set up automated rollouts, rollbacks, and testing.
- Orchestration . Choose a solution for orchestration. Kubernetes is called the market leader, and certified variants are recommended as its distributions .
- Observation and analysis . Choose solutions for monitoring, logging, tracing. Among the CNCF projects are Prometheus (monitoring), Fluentd (logging), Jaeger (tracing).
- Service mesh . These products solve the issues of interaction between services and their availability from the outside (from the Internet), including the discovery of services, checking their status, routing, load balancing. CNCF offers Envoy, Linkerd and CoreDNS (we also recently wrote about Conduit , which, however, [so far?] Is not on the list of CNCF projects) .
- Network . More flexible networking capabilities help provide CNI- compatible solutions: Calico, Flannel , Weave Net.
- Distributed database . When one DBMS is no longer enough, the Vitess project is recommended for launching MySQL on a large scale.
- Messaging . To achieve better performance than JSON-REST, CNCF offers to try gRPC.
- Executable Wednesday containers (container runtime) . Alternate OCI compatible container launch environments are containerd , rkt, and CRI-O .
- Software distribution . To safely distribute the collected software, you can use Notary (we wrote about it at the end of this article ) .
The first 3 points are basic, and the rest are optional, depending on the situation.
Cloud native landscape
The “landscape” itself is a rather extensive catalog of products that are not limited to CNCF projects and even free licenses (although most of them relate to Open Source). For convenience, they are divided into categories:
- Application development : databases and data warehouses (Vitess, CockroachDB ...), queues (RabbitMQ, Kafka ...), source code management (GitLab, GitHub ...), application modeling / definition (Docker Compose, Bitnami ...), continuous integration and delivery ( GitLab Runner, Jenkins ...);
- Orchestration and management : planning / orchestration (Kubernetes, Mesos ...), interaction and discovery of services (CoreDNS, Consul ...), service management (gRPC, Linkerd ...);
- The environment for execution : cloud storage ( Rook , Ceph ...), runtime for containers (containerd, rkt ...), cloud networking solutions (CNI, open vSwitch ...);
- Provisioning : tooling and management for hosts (Ansible, Chef ...), infrastructure automation (Helm, Terraform ...), container registries (Docker Registry, Quay ...), image security (Notary, Clair ...), key management (Vault, Spire ...) ;
- Platforms : Kubernetes certified distributions (OpenShift, Tectonic ...), Kubernetes certified platforms (Google Kubernetes Engine, Azure Container Service ...), uncertified Kubernetes implementations (Amazon EKS, ContainerShip ...), PaaS and container services (Heroku, Hyper.sh ...);
- Observation and analysis : monitoring (Prometheus, Datadog ...), logging (fluentd, Graylog ...), tracing (Jaeger, Zipkin ...), serverless (many subcategories are listed in a separate table );
- Clouds : public (AWS, Google Cloud ...) and private (OpenStack, MAAS ...);
- Certified Kubernetes service providers (Heptio, Huawei ...).
This entire collection is represented graphically:
( Full image on GitHub .)
( Note: in this table you can also see that Kubernetes was the first CNCF project to achieve graduated status , ie “graduate.” This was announced recently - March 6. All other CNCF projects are classified as incubating and inception.)
Interactive Landscape
In addition, with the second version of Cloud Native Landscape, CNCF launched an interactive web version of the catalog, available as landscape.cncf.io (for serverless - s.cncf.io ).
Content for Landscape
Cloud Native Landscape catalogs are generated based on data obtained from a special YAML , to which information from external services (project information in GitHub, financial indicators from Crunchbase and Yahoo Finance) is added, resulting in a new YAML , as well as JSON , which is already and used by the application to output data.
CNCF welcomes the addition of new projects, which is done through a pull request to the aforementioned landscape.yml . The project must have at least 250 stars on GitHub and it must correspond to one of the available categories (for more details on the requirements, see here ).
The main Cloud Native Landscape table, as well as its serverless counterpart, and the Trail Map mentioned earlier, are available in different formats . All project data is distributed under the free Apache License 2.0, with the exception of image files and YAML (they are licensed under Creative Commons Attribution 4.0), information from Crunchbase and project / product logos.
PS
Read also in our blog:
- " CNCF has offered a free cloud to Open Source projects for DevOps / microservices ";
- “ How many developers think that Continuous Integration is not needed? ";
- “ What famous companies use Docker in production and for what? ";
- “ Why is Kubernetes needed and why is it bigger than PaaS? ";
- “ The New Stack Statistics on Kubernetes Implementation Difficulties ”;
- “ Infrastructure with Kubernetes as an affordable service .”