Modern applications and SaaS platforms are designed with a “cloud-native” methodology, using small stateless, elastic and versioned micro-services and deployed in lightweight VMs or Docker containers. Micro-service instances are added when applications need to scale. The overall service is not interrupted when things break or need to upgrade. The data and state of the application services are stored in a set of “persistent” services, and those have unique attributes such as atomicity, concurrency, elasticity, etc. specifically targeting the new model and enabling application fault-tolerance and scalability.
Cloud native applications require a minimum of five “stateful” data services:
- Message queue/stream – to reliably transfer messages between tiers.
- Fast Key-Value or NoSQL – storing application state and context.
- Log stream and time series data – for application and user monitoring.
- Object Storage – storing static content, images and files.
- File volumes/shares – storing application data in case of stateful apps.
These services are typically provided by the cloud vendor in public cloud environments.