Chapter 2. Cloud Native Requirements
Applications that run on cloud infrastructure need to handle a variety of runtime scenarios that occur less frequently in classical infrastructure, such as transient node or network failure, split-brain state inconsistencies, and the need to gracefully quiesce and shut down nodes as demand drops off.
Applications or Services?
We use the term “application” to refer to a legacy or heritage application, and “service” to refer to a modernized service. A system may be composed of both applications and services.
Any application or service deployed to cloud infrastructure must possess a few critical traits:
- Location independence
- The ability to move across hosts in the event of a server failure, with no loss of state.
- Fast startup
- Cloud nodes are expected to fail and restart, therefore the startup time of services must be ultra fast, ideally measured in single-digit seconds.
- In-memory state will be lost when a node crashes, therefore stateful applications and services that run on cloud infrastructure must have a robust recovery mechanisms.
- Reliable communications
- Other processes will continue to communicate with a service or application that has crashed, therefore they must have a mechanism for reliable communications even with a downed node.
- Distributed state
- Cloud-native services must support in-memory state and have a mechanism for recovery in case the service fails and restarts.
Some so-called cloud ...