Are replicated stateful applications (databases) actually being used in reality?

Hi Community!

I just deployed a webapp for a client on a cloud kubernetes cluster. The frontend part of the app is easily scalable as it is a stateless application. But the database part of the application of course is not. When researching the options for scaling databases on Kubernetes I have learned a lot about the limitations and options. Basically the only viable option for having multiple database pods running on a kubernetes cluster is with the techniques described here: Run a Replicated Stateful Application | Kubernetes
Or am I missing something?

Now I am wondering: Is this technique actually used by engineers in real production environments? And if not? How are databases for bigger apps that run on kubernetes clusters being managed? Do the databases run on VMs outside the cluster?

In addition I would be very grateful for tipps on where one can get insights on the architecture behind real production apps.

Thank you!

Yes you must use StatefuSet to run databases in-cluster, because databases are stateful.

It’s more common to run databases externally though to keep your cluster fully stateless. Large production applications are more likely to be run on cloud, and then you would tend to use the cloud offering like AWS RDS.