Tag: Cloud Computing

  • The DBAccountant

    One of the things that I’ve found with cloud computing services is that the people involved with managing these resources sometimes get asked to become financial accountants.

    I saw an interesting post from SQL Rod asking about this new task as something all of us might need to consider a part of our job in the modern world. He asks if we are Techouncants or Accountechs? This isn’t in the sense of being the Financial DBA trying to manage costs in the cloud, though that is part of his post. It’s more about making smart financial decisions. Certainly, as more workloads move to the cloud, and they are for many of us, we likely need to keep an eye on costs, usage, and tuning.

    However, there are other choices. When I had to spec servers, we wanted to get something with room to grow, but not the top-of-the-line most expensive option. I wanted something engineered well for the next few years, and certainly not under-engineered. Usually because adding resources was hard in those days.

    Virtualization has made things easier, but often there are still some limits. Still, the goal is matching resources to workload with room to burst if needed. At the same time, are there other choices we can make? Rod asks about choosing the appropriate edition, the HA/DR strategy, tooling, and more. Can we be efficient with our use of money, time, and results, trying to neither overengineer nor under-engineer?

    The whole post has a lot of “it depends” in it, as the decisions on what you should choose are something you have to think about and arrive at a decision that balances costs with other factors. It can be clearer often to choose one thing over another, but it’s not always crystal clear which choice is better. I like his hardware analogy in the post. I’m not a fan of just throwing hardware at a situation, but in some cases, that’s the best solution.

    The cloud makes it easier to see where costs are. As a Redgate customer put it recently, “tuning queries becomes more important in the cloud as we can see exactly what each one costs.” That can be true for your SQL Server VMs, but it’s often not seen as important when the costs are a one-time spend for your hardware. However, Jeff Moden might argue that you should be tuning queries even without chargebacks or a cloud bill. It will save time for your users, which is always valuable. I agree, since I think we have no shortage of work and time is our most valuable resource. Save it when you can for the most people.

    That often means a big part of being a DBAccountant is being able to show, lead, or somehow get others to write better code early. Ensure everyone (or automated tests) knows how to view execution plans, learns to use them, and tries to write more efficient code the first time.

    Steve Jones

    Listen to the podcast at Libsyn, Spotify, or iTunes.

  • The Cloud Database Cost Analysis

    There is a skill that I think DBAs and sysadmins will need to develop: cloud cost analysis. I’ve thought this was important for quite a few years, and I’ve been (unsuccessfully) lobbying for cost information to be gathered and analyzed in Redgate Monitor. Hopefully, this work will get done soon, as I see more companies asking their technical people to provide analysis and justification of the resources being billed for in the cloud.

    Basecamp analyzed its costs in 2023 and decided it could save money by leaving the cloud. I’ve seen other companies decide they were saving money in the cloud. Many, however, are likely unsure of the total return they get compared to the costs of cloud computing. I have seen some posts (like this one) that try to help you get a handle on your costs, but there is often a lot of complexity in cloud costs when multiple departments have different accounts (AWS) or subscriptions (Azure) with a provider.

    In many ways, I think the large cloud vendors haven’t really considered how to support large enterprises that need a lot of resources, a lot of different administrators, and a wide variety of ways to both secure those resources as well as aggregate billing. I know we have an Azure account I didn’t create, where I have very limited rights to do things, but I can access some resources. However, my group has an AWS account that appears to be sending us billing statements instead of our corporate finance group.

    What can be even more difficult to understand is that applications using the cloud might want a complete picture of billing, but various different technical groups might be responsible for the different parts of the system. Data services could be managed separately from web servers or application servers, with different groups creating, configuring, and destroying them as the needs change. Billing, however, be something accountants would want to separate by function/area/application, not group. Knowing all data services for all databases cost $xx/month is different than knowing the retail website (containing web servers, databases, and networking charges) costs $yy/month.

    This is far different from the days when one group was responsible for most of our computing resources. Often we had a group of IT staffers who managed hardware, ordered it, and could link costs of different machines to a specific application or department. Now we often don’t have a central group who is even aware of all the resources that the company has provisioned.

    I suspect this will mean that many more technical people will not only be asked to account for the cloud resources being used, but also split out those costs in different ways, allowing people in finance departments to aggregate the different costs from the various technical groups. I don’t know who will actually track network resources, but I suspect applications will often have this data included with the servers or services that access public networks.

    Controlling costs and carefully removing unnecessary or unused resources is going to be a continual problem in the cloud. I suspect that quite a few data professionals are going to be integral to helping manage this, especially for dev/test systems that are easily forgotten about over time.

    Steve Jones

    Listen to the podcast at Libsyn, Spotify, or iTunes.

  • Auto Renew Subscriptions

    This week I saw an announcement from Azure that you can set up auto-renew subscriptions for your reservations for your resources. This allows you to set up auto-renew for reservations to prevent them from not renewing and being charged at the pay-as-you-go rates. This reminds me of the old Columbia House deals, which I had for both cassettes and CDs. For some time these were good deals for me, but over time, I’d lose track of the subscription, forget to return things, and end up purchasing items I didn’t want.

    An auto-renewal is likely both a good idea and a bad one, as I suspect that many organizations lose track of their renewal dates when they have an estate of any size. Administrators or finance people will come and go, and they might not know the history of why we reserved something, like a VM, and could forget to renew these. Often we are still using resources, so renewals make sense.

    However, we also stop using resources or don’t use them at the same capacity levels, so perhaps we want to not renew. The docs for this feature note that the renewal creates a new reservation, and this setting can be changed at any time. However, some of the other docs aren’t clear to me. The descriptions read as though someone has an idea about how this works, and they don’t quite clearly detail the workings of the system for readers that are not familiar with this feature.

    As an example, the docs say if you enable renewal more than 30 days before expiration, then  you get an email explaining renewal costs. However, with automatic renewal, do you get the email? When are costs disclosed or detailed? Maybe more importantly, the doc notes the price may change between when you lock the renewal price and when the renew time occurs. Does this mean you pay the higher price? Are you notified each year?

    Maybe more importantly, if we create resources at different times, can we somehow get renewals dates to align? Whether this comes to finance people or IT people, at some point with a big cloud presence, you might have renewals coming every month or week. Who would be able to track this stuff appropriately if it’s a constant item to check? I can see plenty of people starting to ignore these notices if they come too often. There are other issues as well, such as a SKU being different (or deprecated) over time. Will someone figure out how to upgrade to a newer SKU? If so, will they remember to set auto-renewal? Does this transition to the new SKU?

    The documentation is woefully incomplete, though I’d be happy to submit PRs for edits. I just don’t know what the answers are, and I suspect that whoever built this feature might not have thought through all the scenarios. Certainly the individual writing the documentation didn’t.

    The cloud is complex, and billing is complex. Tracking and managing this is going to be partially a technical role, and I suspect many of us won’t know what the implications are for the choices we make. I also suspect we’ll get notifications for resources that we have no knowledge of and will need to research more about the item. We’ll become more of a financial DBA over time, which may or may not be the job we want.

    Steve Jones

  • Continuity Across Restarts

    There are a lot of database platforms, and each tries to convince you theirs is better. As Brent points out in that link, sometimes they just skip comparing themselves to other platforms because it makes them look better. They only look at the platforms they compete well against.

    For most of us, we often just need basic CRUD operations. I know that most RDBMS platforms would work for us, and sometimes NoSQL ones work as well, though I think that NoSQL isn’t necessarily better for many applications (maybe most). You may feel differently, but that’s my view. While I use SQL Server, I think the majority of systems I’ve managed or built could easily run on MySQL, PostgreSQL, or many other platforms.

    In any case, we want to store some data, get it back, maybe change it, and sometimes delete it. I think that last operation is fairly rare as most of us use soft deletes and because of this, our databases continue to grow like crazy. There was an interesting post from Brent on MySQL in AWS Aurora, where the buffer pool cache can survive a restart of the database engine. This is for the cloud version from AWS, not MySQL in general, but that’s fairly cool to me.

    And scary.

    If you read more, there are some limitations, and the value of this, to me, is limited. However, it’s a neat idea, since I could see some sort of restart of the database from a patch for the engine or even a configuration change. For MySQL, clients can’t connect while the buffer pool is initialized, which isn’t something that we deal with in SQL Server, but I can see this being useful. Or perhaps this helps if an Aurora node goes down and the next one picks up the database engine with a full buffer pool? Not sure if that actually happens from the docs, but if they kept the buffer pool separate enough or up to date on a second node, that would be great.

    In the real world, I wonder to what extent we find an empty buffer pool at startup to be a problem. Sure the first few queries are slow, but most of the workload isn’t the first few queries. It’s all the clients that come in the next 5, 10, 20 minutes.

    As Brent notes, this might not be something we want in SQL Server, but it is good to see cloud-enabled platforms trying something new. Some of those will turn out to not work very well, but for those that do, I bet we see other platforms start to adopt some of the ideas from new technology.

    Steve Jones

    Listen to the podcast at Libsyn, Spotify, or iTunes.