A Primer on Cloud-Native Application Development

Building and Deploying Cloud Foundry-based 12factor apps

What makes an app "cloud-native"?

Many desirable app properties attainable in a cloud environment:

however..

...distributed systems (and cloud envs in particular) are

COMPLEX

Monoliths are not well-suited for cloud environments, as these properties cannot be achieved

Solution: loosely-coupled services with a bounded context (a.k.a. microservices)

How does one build cloud-native applications?

The 12 factors are a great starting point

In essence:

  • 1 codebase used for N deploys, controlled via configuration data
  • Stateless processes, loosely bound to backing services, capable of concurrent execution

(further reading at 12factor.net)

..quite a lot of things to consider, how can we handle the complexity?

  • is an open-source PaaS ("Linux of the Cloud")
  • manages Infrastructure and provisioning of "computing units" (containers)
  • supports multiple runtimes
  • handles building, deployment and monitoring of apps

To get started, all one needs (beside access to a CF installation) is the CF CLI:

CF command-line interface

cf push <my-cloud-native-app>

Live demo

12factor apps have an easy life on CloudFoundry

Mini-Hands-on Session

Use Case:  The .msg Kitchen

staticfile_buildpack

nodejs_buildpack

nodejs_buildpack

NGINX Server

index.html

/backingsrv

forwarding

Node Express Server

APIs:

/prepareFood

/meal

Worker App(s) (chefs)

Meal Ordering UI

Try it yourself..

> npm install -g https://github.com/ionescuv/learncf
> learncf

Is this all? What next?

Good code fails when you don’t have good processes, proper organization and the platform/infrastructure to support you

Made with Slides.com