Here’s my litmus test to determine whether an application is cloud native:
- It MUST be able to run entirely on spot instances in a public cloud environment. The application must be designed such that any one instance being shut down randomly should have no material impact on the application’s core functions. If the application relies on an old-school availability model (e.g. a timeout triggers traffic to be diverted from an active node to a passive one) to protect against instance failure, its not cloud native.
- It MUST be able to run seamlessly across multiple cloud provider environments and should not rely on any infrastructure/platform features provided by a cloud provider – said another way: It should be “vendor lock-in” proof. Yes, all cloud providers offer multiple regions, each with two or more availability zones. But if your app is written to only run in AWS, its AWS native, not cloud native.
- Bonus: It SHOULD be running across multiple cloud provider environment, i.e., be multi-cloud.
If you disagree, drop me a note.
This blog was first published on LinkedIn.