arrow_down arrow2 back chevron_down chevron_right cross Facebook linkedin menu minus plus search social toggle_sort
BLOG POST

Optimize costs, maximize value

6/27/2024
Category
Cloud Services
IT Cost Management
Author
Geoff Barnett Director of Google Cloud Services, Crayon
Share

In the second blog post of this series, Geoff Barnett, Director of Google Cloud Services at Crayon, explores strategies for integrating cost efficiency into cloud service design. By setting key performance indicators (KPIs) for development teams and using serverless architectures on platforms like Google Cloud, organizations can minimize idle resources and streamline workflows. 

If you haven't read the first blog post of this series check it out here.

Cost optimization is always a priority for those involved in procurement and finance, but for many organizations cost optimization is often something that is done after a workload is running. Cost optimizing what we built yesterday, can be more challenging than cost optimizing what we are going to build tomorrow.

The best way that we can ensure that cost optimization is a factor in the design of new services is to place a key performance indicator on the product development team. This KPI should measure the cost of providing a unit of the service. Whether the metric used to score that KPI is a cost per transaction, a cost per user, or the cost per volume of data, should vary by the type of workload in use.

Having a set of metrics that help inform about the efficiency of the workload, as one measure of performance for the product development team is one aspect that is described by the FinOps framework. The FinOps framework describes a methodology for placing visibility, ownership and responsibility for cost onto those within an organization that directly impact it.

From an architectural perspective we need to be very conscious of not over engineering against our requirements, but also we need to challenge whether those requirements are valid. An analogy that I like to use is that if you use a sledgehammer to crack a walnut, it will probably work, but you could also end up spending a lot of money on replacing your table.

Performance is most often the enemy of cost efficiency, so the first requirements that should be challenged are those relating to performance. Now, if it’s a high transaction system that is trading with the stock exchange, then processing those transactions extremely quickly could be very necessary, as money could be lost by the business if a transaction takes too long, but a lot of other use cases are not as performance sensitive.

If, for example, the system is a shopping cart for an online shopper, is a response back to the user in a fraction of a second necessary, when completing the transaction in five or ten seconds would still do the job? Will the user be unlikely to complete the transaction if it takes ten seconds instead of one second? As humans, we often forget that perfect is the enemy of good and we can spend vastly more money, getting a transaction down from seconds to fractions of a second, but receive no benefit from the extra cost expenditure.

So why does performance cost money?

Idleness. When we desire performance, we overprovision capacity.

When we need to do something, the fastest way to accomplish the task is to have the resource capacity needed to perform the task available, waiting and ready to immediately process it. If it is necessary to wait for resources to be provisioned first, then there will be a delay before the task can start and so the completion of the task will be delayed by the same amount of time.

When we design for cost efficiency, we try to reduce idleness, especially for compute resources, because these tend to be the most expensive to operate and therefore the most inefficient when they are running but doing nothing. To minimize idleness, we either want to only provision and consume resources when an event occurs that signifies that they are needed, or we try to queue them up and then process them as a batch later, either when the queue has a minimum number of items, or at a scheduled time.

All three of these are forms of Event Drive Architecture, and the technology that cloud providers offer to build these architectures is called Serverless. On Google Cloud Platform, the key technologies that form the core of a serverless application are Cloud Functions and Cloud Run for compute, Cloud Pub/Sub for queuing and notifications, Cloud Storage for file data and Cloud BigTable for table data, but it’s important to note that many other services within Google Cloud can trigger events that can start an event driven workflow, including logging or security events.

Why not learn more about building cloud native applications and building your first Serverless Application with Google Cloud. Access the following course using a free 30 day trial for Google Cloud Skills Boost: click here (Google account required to register)

For those looking to cost optimize Virtual Machines and Kubernetes based workloads on Google Cloud, why not start by using the new Recommendations Hub in Cloud console and for those that are looking for further advice on cost optimization for Google Cloud Platform, Google Workspace, Microsoft Azure, Microsoft 365, Amazon Web Services or your Enterprise Software, why not talk to us about Crayon’s FinOps, cloud economics, and software asset management services. 

 

 

Author
Geoff Barnett Director of Google Cloud Services, Crayon