Architecting database environment

Databases come in so many shapes and forms that it may not be clear how to design the environment that will match your expectations and deliver the stable setup for your production. For example, even if we will stick to MySQL, we are still talking about several different solutions and flavours. Are you going to use MariaDB or MySQL? Maybe Percona Server for MySQL? What is the difference? Asynchronous or semisynchronous replication? What would work better: replication or Galera Cluster? How does it compare to InnoDB Cluster? MySQL NDB Cluster can be used for something useful?

Then you may want to consider loadbalancers. Which one? ProxySQL? MaxScale? MySQL Router? What are pros and cons of them all? Have you considered scaling? Do you need to shard your database? If so, how are you going to do that? Will you use query rules in ProxySQL or maybe Vitess?

How are you going to build the cache layer? Redis sentinel or Redis cluster? Maybe you would use ProxySQL instead? Or maybe just rely on a web layer cache and do not implement caching on the database side?

As you can see, designing a proper architecture for an environment requires you to answer more than one question. Moreover, bad design may not be visible from the start but issues may surface later, when your environment is under load. It may be not much time to figure out the fix and implement it. Having someone that would point you in a good direction may save you time and significant amount of money later.

If you are interested in getting help in designing the proper architecture for your solution, feel free to reach out to us and we will do our best to help you solve your problems and answer your questions so that the environment you will build will match your expectations.