What is it
Cloud Native is a methodology for designing and building applications that take full advantage of cloud computing.
The term has many different definitions in different contexts, but some common denominators are:
- Using containerized applications and workloads
- Using container orchestration to run microservices as distributed systems
- Using automation to provision and manage infrastructure resources
Cloud native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach.
These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.
When to use it
- Using fully managed infrastructure to minimize need for operations
- Decentralizing ownership of cloud resources at the team-level
- Making careful use of vendor-specific products when they provide leverage
Cloud Run over GKE
The principle of using fully managed infrastructure can currently be observed in our preference toward the managed Cloud Run platform for microservice orchestration, as opposed to for example Kubernetes on GKE.
App-specific projects owned by teams
The principle of decentralizing ownership of cloud resources at the team-level can currently be observed in our project and IAM architecture, where teams own and manage app-specific projects.
The principle of making careful use of vendor-specific products can be observed in our current usage of Cloud Spanner as our main operational database, minimizing operations overhead and achieveing robustness via managed backups.