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.
Fault-tolerance
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.

Infrastructure Requirements

Some so-called cloud ...

Get Migrating Java to the Cloud now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.