cloud-native-programming icon indicating copy to clipboard operation
cloud-native-programming copied to clipboard

A Manifesto for Cloud Native Programming

A Cloud Native Programming Manifesto

Status: Super early pre-alpha strawman to get us started (is that enough disclaimers? ;-). Please open issues and pull-requests to discuss, all thoughts welcome!

Values

  1. Consistency over configuration -- that is, where possible we prefer to focus on code, not CRDs or yml or ReplicaSets or helm charts or Dockerfiles. 12-factor apps and serverless functions can help with this.
  2. Monoliths over micro-services -- that is, where possible we resist breaking down a system in to more micro-services than required (generally, a service per team is a good rule-of-thumb)
  3. Routing over deployment -- rather than managing multiple environments, where possible we prefer progressive deployment, observability and feature flags
  4. Services over managing state -- that is, we prefer to use existing services at the highest level of abstraction possible rather than managing databases and complex systems

Resources:

PaaS:

  • Cloud Foundry - A popular PaaS for 12-factor apps
  • Knative - Kubernetes-native CRDs for 12-factor apps and functions

Code-to-container:

  • Cloud Native Buildpacks - Abstracts the details of building and updating containers from code
  • Tekton - Kubernetes-native pipeline CRDs, useful for building code-to-container pipelines

Cloud Native Programming Languages:

  • Storyscript - Top-level, polyglot programming language that seamlessly moves data between microservices and functions in a serverless way with zero-devops deployments into Kubernetes. Open source under Apache 2.0 at https://github.com/storyscript
  • Dark - Programming language that hides the details of deployment and infrastructure (Why Dark?)

Related Manifestos: