What is our primary use case?
My main use case for Liquibase is because, for our product NormaPro, we have different databases and different data schemas for each of our clients. The database, apart from the table architecture and so on, has a lot of business logic embedded within functions and procedures. Liquibase is our main solution for new client provisioning, for deployments of the entire database architecture and all functions and procedures, to find differences between the different database schemas of our clients, and to apply updates and fixes.
What is most valuable?
Before having Liquibase, we had no control over the software that was running in each of the clients' schemas. Liquibase has provided us with a quick way to find errors in those clients where functions or procedures were outdated.
Every time we have a deployment for a new client, Liquibase, by working like GitOps for database-related matters, makes deployments and the creation of new schemas enormously easier for us.
The best features that Liquibase has are database engine abstraction, programmable code re-execution, granular deployments with contexts and labels, the automated rollback strategy and, above all, inspection and diff and baseline generation.
The rollback strategy allows us to roll back certain deployments that have gone to production with errors. In such a way that we always have a possible mechanism to roll that step back to the previous version for everything related to functions and procedures and table structure inside the database. What I like most about rollback is that we can define a rollback block directly in XML or YAML and Liquibase understands perfectly where it has to go back.
By minimizing errors, minimizing time, with an incredible cost saving, eliminating database incidents, having a diff inspector against our baseline to know which client schemas are outdated or not up to date, to know what differences there are between the different schemas, this has produced an immense cost saving for us. Before, it was very manual, very tedious work and very prone to errors. I have a metric, I have a KPI on errors produced in the database. These errors have decreased almost to zero since we have been using Liquibase.
What needs improvement?
The syntax, especially as it is agnostic, is not always 100% transparent. In heavy object management, there should be improvements, and when we have large-scale multitenant environments, the orchestration becomes a bit tedious. But basically, for my use case, it is a tool I recommend 100%.
For object management, the problem is the checksum, which has a very strict and sometimes rigid handling. Even if runOnChange is true, helping stored procedures when the code changes, any minor modification or formatting change should be a bit easier.
Liquibase flawlessly solves provisioning, maintains consistency between dozens of schemas, has database version controls integrated into Git, has enormous reliability in auditing. However, it lacks native multitenant orchestration, it has a lot of rigidity in checksum management with programmable code, and the use of native SQL within XML does not work entirely well. I give it eight out of ten because it is indispensable and unbeatable for guaranteeing consistency and automatic provisioning in our multitenant architecture. I only deduct a couple of points for the lack of native multitenant orchestration and the occasional rigidity of checksums when modifying MySQL functions.
For how long have I used the solution?
We have been using Liquibase for more than four years.
What do I think about the stability of the solution?
Liquibase is very stable.
What do I think about the scalability of the solution?
Liquibase adapts very well to our scaling needs. I would rate it a ten.
How are customer service and support?
The documentation is clear, concise, and I can find everything on their website.
Which solution did I use previously and why did I switch?
We previously used migrations within NodeJS, but when the product started to scale and we had more and more clients and more schemas, the solution did not seem feasible.
How was the initial setup?
Basically, what we launch is a pipeline where all the database changes are provided and Liquibase is responsible for coordinating and controlling all the schemas of all clients to apply the changes to all of them at once.
What about the implementation team?
We have an ISO 27001 certification and within the specifications of the standard, we have change management where there is a specialized team for database changes, basically in charge of coordinating all movement with Liquibase. Only they are the ones who have access to this tool and to put changes into production regarding databases.
What was our ROI?
The license versus the return on investment that we have had is very substantial.
What's my experience with pricing, setup cost, and licensing?
Liquibase costs us thirty-three dollars a month. Basically, in the past, before having Liquibase, finding any error in any client's database would mean hours and hours of a database expert, which would cost us much more than thirty dollars. Much, much more.
Which other solutions did I evaluate?
We evaluated other options. We evaluated, for example, Flyway, Redgate, and DBmaestro, but Liquibase convinced us because of the price and the direct functionality we were looking for regarding migrations.
What other advice do I have?
I should not hesitate to recommend Liquibase because if you have an environment like ours, where you run many databases, each one for each client, to maintain consistency with the version that is running, it is an essential tool. Liquibase is great software that makes life and maintenance of client databases easier. I give this product a rating of eight out of ten.
Which deployment model are you using for this solution?
Hybrid Cloud
If public cloud, private cloud, or hybrid cloud, which cloud provider do you use?
Microsoft Azure
Disclosure: My company does not have a business relationship with this vendor other than being a customer.