Cloud Foundry

The Cloud-Native Platform

Duncan C. E. Winn

“Nobody has ever built cloud-native apps without a platform. They either build one themselves or they use Cloud Foundry.”

—Joshua McKenty, Field CTO of Pivotal Cloud Foundry

Cloud Native

is

a term describing software designed to run and scale reliably and predictably on top of potentially unreliable cloud-based infrastructure.

Becoming cloud native involves three fundamental tenets

1. Automated Infrastructure Management and Orchestration

This is the ability to consume infrastructure elastically (scale up and down), on demand, and in a self-service fashion. This layer is often referred to as Infrastructure as a Service (IaaS); however, it is the automated self-service characteristics of the infrastructure that are important. There is no explicit requirement to use virtualized infrastructure.

2. Platforms

You should use the highest level of abstraction possible to drive the underlying infrastructure and related services. Service abstraction is provided by a platform that sits above the infrastructure/ IaaS layer, leveraging it directly. Platforms offer a rich set of services for managing the entire application life cycle.

3. The Twelve-Factor App

Ensure that the application layer on top of the platform can scale and thrive in a cloud environment. This is where the concept of The Twelve-Factor App becomes key. Twelve Factor describes 12 design principles for applications purposefully designed to run in a cloud environment. These applications designed to run on top of a cloud-based infrastructure are typically referred to as cloud-native applications. Cloud-native applications are infrastructure unaware; they allow the platform to leverage infrastructure on their behalf. Being infrastructure agnostic is the only way applications can thrive in a cloud environment.

“There are two approaches to handling change: adapt or die vs. same mess for less!”

—Dekel Tankel, Senior Director of Pivotal Cloud Foundry

Cloud-native platforms' technical driving forces

Anything as a service

Every layer of information technology, from networking, storage, computation, and data, right through to applications, are all offered “as a service.”

Cloud Computing

Three tenets of "XaaS"

  • Elasticity The ability to handle concurrent growth through dynamically scaling the service up and down at speed.
  • On demand The ability to choose when and how to consume the required service.
  • Self-service The ability to directly provision or obtain the required service without time-consuming ticketing.

Containers

  • Container images
  • A container management solution

Agile

manifesto values:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

Automate Everything

  • Continuous Integration
  • Continuous Delivery

DevOps

Microservices

is

a term used to describe a software architectural style that has emerged over the last few years. It describes a modular approach to building software in which complex applications are composed of several small, independent processes communicating with each other though explicitly defined boundaries using language-agnostic APIs. These smaller services focus on doing a single task very well. They are highly decoupled and can scale independently.

Business-Capability Teams

“Any organization that designs a system will produce a design whose structure is a copy of the organization’s communication structure.”

—Melvyn Conway

Cloud-Native Applications

is

an architectural style which has been established to describe the design of applications specifically written to run in a cloud environment. These applications avoid some of the anti-patterns that were established in the client-server era, such as writing data to the local file system.

“Cloud Foundry is so resilient that the reliability of the underlying infrastructure becomes inconsequential.”

—Julian Fischer, anynines

Cloud Foundry platform

offers

  • Services as a higher level of abstraction above infrastructure
  • Containers
  • Agile and automation
  • A cultural shift to DevOps
  • Microservices support
  • Cloud-native application support

“Here is my source code, run it on the cloud for me. I do not care how!”

—Onsi Fakhouri, VP of Engineering of Pivotal Cloud Foundry

Cloud Foundry built-in platform capabilities

:

  • Resiliency and fault tolerance through self-healing and redundancy
  • User management
  • Security and auditing
  • Application life-cycle management, including aggregated streaming of logs and metrics
  • Release engineering, including provisioning VMs, containers, middleware, and databases

Thank you

@tiven.wang