There are many stories about the benefits of moving to the cloud. The promises of migrating from data centers include reduced costs, flexibility, and scalability. Yet for many organizations, the reality of the public cloud includes racking up “$80,000 a day in unplanned charges.” The flexibility of tools and services within the cloud adds to the required skills of a team. The cloud offers scalability, but developers also need to manage that enterprise-scale and complexity. Cloud computing is not all that we expect when it comes to cost.
This piece will outline contributors to out-of-control cloud costs, and tips for developers with applications living in the cloud to manage them.
Contributor #1: Unused Resources
All environments are prone to unused resources. These resources include unattached storage volumes and obsolete snapshots, which get charged per GigaByte(GB) per month and idle load balancers and unused but running instances that get charged per hour.
Recommendation: Developers should carefully maintain their sandbox environments to ensure that compute instances that spun up are cleaned up or shut when they are no longer needed.
Contributor #2: Compute Resources
In container environments, Developers and administrators can use Kubernetes to manage and allocate compute resources to their Kubernetes resources, including pods, nodes, and namespaces. It is a fairly common practice to specify a resource limit on the amount of CPU(measured in cores) and memory(measured in bytes) an application can use within an ecosystem. For public cloud costs, however, this can lead to idle costs where applications are over-allocated and do not use all the resources that are reserved. Likewise, empty clusters, environments, and workspaces contribute to unallocated costs.
Recommendation: Developers should use tools to monitor the performance of their applications. Gathering information on computer, memory, network, and storage consumption can help you optimize resource utilization and allocation of resources within the cloud. Sharing these findings with your cloud administrator can allow you to reduce idle and unallocated costs.
Contributor #3: The Hidden Costs of Storage Services
It’s easy to understand that storage comes at a cost (per GB-month), but many developers forget that IO(input/output) operations on storage files cost money. Service providers charge per request/API call. Data transfers are also charged per GB when transferring data between different regions, Virtual Private Clouds (VPCs), or out of the cloud.
Recommendation: Developers should carefully consider the hidden costs of storage when architecting data transfer jobs or data-intensive applications.
These recommendations will help developers save on costs when working with cloud-native applications. At Harness, we recently launched a new product, Continuous Efficiency, that shifts cloud costs visibility down to developers, letting them see cloud cost by application, microservice, environment, deployment, cluster, namespace, workload, node, and pod. The goal of these tips and of Continuous Efficiency is to decrease wasted public cloud costs so that product and engineering teams can better invest their money into more important things.