Cloud Native Architecture - sambos/Architectures GitHub Wiki
Cloud Native Principles
Cloud Native generally applies to architecting and desining applications that can be ported to any IaaS cloud provider without any changes to the application code. Many of the lessons learned are drived originally from the Heroku project (including the 12factor), following is a short list for some of them :
- Pivotal Cloud Native definition - read more
- Adopt Cloud Migration and Deployment strategies
- Use DevOps/DevSecOps
- Use convention over configuration
- Follow 12-Factor Principles (Heroku proj)
- 3 additional: telemetry, API, security
- Establish a contract between apps and underlying platform
- Cloud Native apps are Ephemeral, minimize/eliminate dependency on underlying platform
- Deployable as JAR file (exampl for java apps), Application is self contained
- start as command/shell (e.g. java -jar) or
- register your applications as systemd or init.d on linux-based systems - so it can start when the server starts
- Use cloud ecosystem (such as PaaS - PCF)
- Drive Cloud Mindset for building application from start
- Use Spring Cloud Services (Spring Cloud Netflix:OSS) and or Service Mesh Best Practice Frameworks
| Service | Description |
|---|---|
| Config Server | Central Configuration server |
| Eureka | Service Registration & Discovery for Client/Server |
| Ribbon | Client-side Load Balancer |
| Hystrix | Circuit Breaker |
| Turbine | Hystrix stream provides information on a single application, Turbine provides a way to aggregate this information across all installations of an application in a cluster (overall health of the system) |
| zuul | Intelligent Routing - Reverse Proxy |
| Feign | Declarative Webservice Client |
| Archaius | External Configuration |