Don't worry! Deploy! Metis has your database covered.
Tags: sql, database, observability
Published: 2024-06-13 08:00:00

As developers, we all strive to write the best code that performs great when deployed. It is true when we’re writing our application code, and the same applies when it comes to our databases! Wouldn’t it be great if you could feel confident when changing your code? Would you like to deploy with no stress? Would you like to get automated confirmation that your changes to the database or business logic will not take your production database down? Read on to learn how to have all of that.

## Developers’ Challenges With Changes Around Databases

As developers in today's world, we need to deploy the code many times a day. We work in fast-paced environments and need to work on many tasks at once. Our applications work in tens of clusters and connect to hundreds of databases. We work on multi-tenant platforms and often have to adjust solutions for specific requirements. No surprise that many things may go wrong and it’s challenging to manage the complexity.

One thing that can make our lives much easier when it comes to the services we are building is **continuous database reliability**. We would like to know that **our design will work well in production** and scale properly to meet the demands of customers. Load tests for example are becoming scarce since it is very difficult to build them properly and maintain them. Also, even if a load test does exist we can’t wait for the load tests to complete to know that things will scale because load tests are very late in the pipeline and take too much time to complete we must shorten the inner loop. Our tools must **support us in checking the queries and schema changes**.

Most industry solutions don’t give us that. Our unit tests do not verify the performance. They only focus on the correctness of the queries and can tell us if we read and write the data correctly. They won’t tell us if we’re fast enough. They won’t spot slow joins, N+1 queries, or lack of indexes. Similarly, we have many tools for deploying schema changes, but these tools don’t check if the schema changes will be completed fast enough, whether we are going to lose data as a result of the changes or help us understand the changes we make in the schema and how our new schema will look like. They won’t alert us if our schema modifications will cause table rewrites and will run for hours.

Metis protects developers and engineering teams from these problems. Using Metis, we can be informed about the correctness of our designs and can get our queries and schema migrations verified even before we commit changes to the repository. Read on to see what Metis brings.

## Metis Has Got Your Databases Covered

Among many features, Metis provides database guardrails. It can integrate with your programming flow and your CI/CD pipelines to automatically check queries, schema migrations, and how you interact with databases. Let’s see how IDE and CI/CD integrations give you the confidence that your changes are safe for production.

Once you integrate with Metis, you get **automated checks of all our queries**. For instance, you run your unit tests that read from the database, and Metis checks if the queries will scale well in production. You don’t even need to commit your code to the repository.

![](https://lh7-us.googleusercontent.com/Wdts_nj_M74WmDwQ4xvR5nyVoPSoVCg4NF-IDDtbAfwdnS2y9Lpd8f8TJ4dTYoMh8NAhk6f8P8X_FCuPyNQjjkkM7VSjwMaARbDxFX096D4lfv1oM_YRqtdUNRhqqQdrhAp_9Xmrhmws1NSD-AisWXQ)

Metis captures your queries, analyzes their execution plans, and shows you what to fix. It can project your query onto your production database to tell you that even though the query works great in your local database, it won’t work fast enough in production. **All of that is just in time when you write your code**.

Metis can analyze your schema changes. Metis analyzes the code modifying your databases and **checks if the migrations will execute fast enough** or if there are any risks.

![](https://lh7-us.googleusercontent.com/MfDGo_CAVX1hA-F0O4fCQpBeDeqebfzch1uc4d_TqFLeFl-TQf1nhNaZPqWf7eA0-kZjnJPg3qs4tM2CqP2QQLMQ7VD7c4A5DVt8WIOKwuivmHw-Zi3sgg83voTmIOsChyGAu65aIzrSPXf67WTdaw0)

Metis gives you confidence that your changes are safe to be deployed.

**Metis integrates with your CI/CD pipelines**. You can use it with your favorite tools like GitHub Actions and get both performance and schema migrations checked automatically.

![](https://lh7-us.googleusercontent.com/Jnn55_P_AmDaV_Zah-tj1fGBxu-Kxbkj3Ytqqx4xyEsbV8V4odtywD0wTrRQJCFUnDSkg058bxCDExNdLKc9walD24w9zFobvyccNi5atIMenWg5urb2p4uflgSNctL1-52AFlp_P7uCpCUDcxs9uqs)

**Metis runs automatically in your pipelines**. This is like CI/CD for your databases.

Metis can assert your design is correct. You don’t need to wait until the load tests are complete. You get insights just when you’re implementing your changes.

## Don’t Worry! Deploy!

Developers face many challenges. There are no tools in the market that can verify that the queries will be fast enough in production or that schema migration will not cause the table rewrite. Metis does all of that. **Metis asserts your design is correct, checks your queries and schema migrations automatically, and gives you the confidence you need to modify the code and deploy it to production**. Use Metis and build proper database reliability with database guardrails as part of your GitOps workflow.