One of the compelling reasons of using PaaS services in the Public Cloud, is the ease of management- and lowering the complexity of use. Such as with the use of Database Services, where you no longer need to manage a complex cluster of machines that are responsible for running one of the most heavy workloads – databases.
Therefore, many want to use managed PaaS services for hosting their database workloads to remove much of that complexity.
There are a lot of different options from the different vendors, depending oh what kind of database engine that you need to host your workload. Here we have services such as –
- Amazon Aurora and Amazon RDS
- Microsoft Azure SQL and Managed Instance (also Flexible server for PostgreSQL and MySQL)
- Google Cloud SQL (With support for MySQL, PostgreSQL, and Microsoft SQL)
- Oracle Cloud Infrastructure and Oracle Database Services
In addition – Microsoft and Oracle announced a partnership this summer, which was aimed to make it easier to provide access to Oracle databases running in Oracle Cloud and integrate with Microsoft Azure. This approach uses a interconnect features to connect the two platforms as seen in the screenshot below.
While this makes it easier to deploy it still means that you have now resources in two cloud platforms and with additional latency as well. If using features like ExpressRoute FastPath you can get the latency down to 2 – 3 MS at the most.
So, what are the other challenges with moving database workloads to a public cloud?
Getting enough performance! (+ with the lowest possible cost)
Most database PaaS services from the cloud vendors are often coming at a fixed sizes (in terms of compute) from the different vendors and often database IOPS are also something that either scales with the storage of the database or as an additional SKU. For instance if we have a large MySQL database and if we wanted to have up to 50,000 IOPS for my database workloads on Microsoft Azure I would need to have atleast a E48ds_v5 Flexible server from the MySQL PaaS service in Azure (Azure Database for MySQL – Flexible Server service tiers | Microsoft Learn)
Which would be close $6,600 each month running in Microsoft Azure.
Now a while back I stumbled over a company called Tessell which piqued my interest based upon the claims that they stated on their website such as providing a higher IOPS at a lower cost. Also being able to provide MySQL, PostgreSQL, SQL Server and Oracle based workloads on Microsoft Azure and AWS. So you can see them as an alternative to the native PaaS services from the cloud providers.
Therefore I decided try out their service and see how it was built to provide this type of performance. Tessell is a cloud service consisting of two layers. Control plane where the management capablities and provisioning service is hosted, and the data plane where the database is located. This is depending on what kind of public cloud service you are using.
This below shows the web UI and how to provision a database engine.
In regards to the dataplane, I have to be honest that I noticed that Tessell has been able to build something pretty impressive, since they have built a way to provide persistent databases on top of non-persistent high-speed storage.
This means that for high-end workloads, they are using dedicated hosts within the public cloud (AWS and Azure) with local NVMe based storage – Using ephemeral disks that provides the lowest possible latency and also higher performance. The downside to using ephemeral disks is if you do not have a way to provide high-availability and if the server goes down, the data is gone.
This is where Tessell also provides a high-availability feature called Availability Machine that maintains data protection of the database workload. That allows the service to use ephemeral storage and still provide high-availability. We also have the option to do a stadby database using a Multi Availability Zone deployment.
Availability Engine within Tessell
In addition the service can be either provided directly from within our own enviroment or delivered as part of a Tessell based enviroment. In we use our own enviroment, Tessell will have built-in mechanisms to maintain and update the database service which will be running on virtual infrastructure (or dedicated depending on size)
One-Click provisioning Engine in Tessell for Microsoft Azure based deployment
The service provides a one-click provisioning engine in addition to ready Terraform code and syntax that can be used as well to easier deployment.
If we looked at the same example with the MySQL workload (running flexible server in Azure) from Tessell perspective on what it would cost for the same performance.
The same service would cost would be closer to 3000$ (compared to 6500$ using MySQL Flexible Server) per month with a much higher storage performance as well.
Hopefully this gave you some insight into Tessell and some of their capabilities, it is going to be interesting to see how they evolve from here, given that they focus on maybe the most important piece within all organizations – Data.