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"
Containers
Agile
manifesto values:
Automate Everything
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
“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
:
Thank you