cloud-native-programming
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
- 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.
- 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)
- Routing over deployment -- rather than managing multiple environments, where possible we prefer progressive deployment, observability and feature flags
- 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:
- OMG! The Open Microservice Guide and The 12 Factor Microservice - A guide, spec and tools to expose microservice operations in a platform-agnostic way.
- Agile Manifesto
- The 12 Factor App