{"id":72937,"date":"2025-07-11T14:21:43","date_gmt":"2025-07-11T08:51:43","guid":{"rendered":"https:\/\/www.tothenew.com\/blog\/?p=72937"},"modified":"2025-07-18T01:22:50","modified_gmt":"2025-07-17T19:52:50","slug":"unseen-costs-visible-impact-how-proactive-alb-management-drives-cloud-efficiency","status":"publish","type":"post","link":"https:\/\/www.tothenew.com\/blog\/unseen-costs-visible-impact-how-proactive-alb-management-drives-cloud-efficiency\/","title":{"rendered":"Unseen Costs, Visible Impact: How Proactive ALB Management Drives Cloud Efficiency"},"content":{"rendered":"<h2><span style=\"text-decoration: underline;\">Introduction<\/span><\/h2>\n<p>Handling AWS costs is very important for cloud bill optimizations. One overlooked service that can significantly contribute to monthly expenses is<strong> Elastic Load Balancing<\/strong>. Our team, which works for a <strong>global advertising management platform client<\/strong>, a powerhouse in advertising and connected TVs, recently undertook a major step to optimize <strong>AWS ALB costs<\/strong>, mainly focusing on reducing unnecessary<strong> LCU (Load Balancer Capacity Unit)<\/strong> usage. By making some adjustments to the code configuration and optimising resource utilisation, we were able to save thousands of dollars.<\/p>\n<p>I&#8217;ll discuss the tactics we employed, the challenges we encountered, and how these configuration adjustments impacted our AWS bill in this short blog. Let\u2019s get started!<\/p>\n<h2><span style=\"text-decoration: underline;\">Understanding ALB Costs<\/span><\/h2>\n<p>Before considering savings cost, we should understand the cost. AWS ELB cost is calculated based on the <strong>LCU<\/strong>, which stands for <strong>Load Balancer Capacity Units<\/strong>, that is calculated using four dimensions:<\/p>\n<ul>\n<li><span style=\"text-decoration: underline;\"><strong>Active Connections:<\/strong><\/span> The number of ongoing TCP connections per minute. A new connection is a new TCP connection established from a client to the ALB and from the ALB to a target. This implies that a single incoming request to the ALB creates two new connections \u2013 one for the outgoing target connection and one for the incoming client connection, assuming there is no connection reuse.<\/li>\n<li><span style=\"text-decoration: underline;\"><strong>Processed Bytes<\/strong><\/span>: The volume of data processed in a given hour. How many bytes did the ALB process overall, including data sent to and received from the client? This includes all of the data we send back in the response as well as all of the data that enters the ALB for a request. This covers the request body, query parameters, headers, and more.<\/li>\n<li><span style=\"text-decoration: underline;\"><strong>New Connections<\/strong><\/span>: This is the number of TCP connections created per second. An active connection is a previously established and still open TCP connection either between a client and the ALB or between the ALB and a target. The connection remains open until either end of the connection chooses to close it, either because it hits an idle timeout or is explicitly closed.<\/li>\n<li><span style=\"text-decoration: underline;\"><strong>Rule Evaluations<\/strong><\/span>: Number of requests evaluated against routing rules per second.\n<p><div id=\"attachment_72938\" style=\"width: 1610px\" class=\"wp-caption aligncenter\"><img aria-describedby=\"caption-attachment-72938\" decoding=\"async\" loading=\"lazy\" class=\"wp-image-72938 size-full\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-3.png\" alt=\"Understanding ALB Costs\" width=\"1600\" height=\"595\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-3.png 1600w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-3-300x112.png 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-3-1024x381.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-3-768x286.png 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-3-1536x571.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-3-624x232.png 624w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/><p id=\"caption-attachment-72938\" class=\"wp-caption-text\">Understanding ALB Costs<\/p><\/div><\/li>\n<\/ul>\n<p>The highest of these utilised dimensions decides the total LCU usage and eventually determines the LB cost. In our case, <strong>processed bytes and new connections<\/strong> accounted for most of our expenses.<\/p>\n<h2><span style=\"text-decoration: underline;\"><strong>Analysing Our ALB Costs<\/strong><\/span><\/h2>\n<p>After examining our AWS CloudWatch Load Balancer metrics, we discovered that two high-traffic ALBs were the main cause of our monthly ALB expenses, which were averaging between <strong>$30,000 and $45,000<\/strong>.<\/p>\n<ul>\n<li>Public load balancers cost between <strong>$14,000 and $23,000<\/strong> a month.<\/li>\n<li>The private load balancer costs between <strong>$15,000 and $23,000<\/strong> per month.<\/li>\n<li>We examined CloudWatch metrics and discovered that the private ALB cost was mostly caused by numerous new connections.\n<p><div id=\"attachment_72939\" style=\"width: 1610px\" class=\"wp-caption aligncenter\"><img aria-describedby=\"caption-attachment-72939\" decoding=\"async\" loading=\"lazy\" class=\"wp-image-72939 size-full\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-4.png\" alt=\"Private Alb Connections\" width=\"1600\" height=\"622\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-4.png 1600w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-4-300x117.png 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-4-1024x398.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-4-768x299.png 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-4-1536x597.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-4-624x243.png 624w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/><p id=\"caption-attachment-72939\" class=\"wp-caption-text\">Private Alb Connections<\/p><\/div><\/li>\n<\/ul>\n<p>On the other hand, Processed Bytes was a major factor for the Public ALB cost.<\/p>\n<div id=\"attachment_72940\" style=\"width: 1610px\" class=\"wp-caption aligncenter\"><img aria-describedby=\"caption-attachment-72940\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-72940\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-5.png\" alt=\"Processed Bytes\" width=\"1600\" height=\"622\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-5.png 1600w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-5-300x117.png 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-5-1024x398.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-5-768x299.png 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-5-1536x597.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-5-624x243.png 624w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/><p id=\"caption-attachment-72940\" class=\"wp-caption-text\">Processed Bytes<\/p><\/div>\n<h2><span style=\"text-decoration: underline;\"><strong>Cost Optimization Strategies<\/strong><\/span><\/h2>\n<p>To handle these challenges, we followed the following strategies:<\/p>\n<ol>\n<li>\n<h3>Reusing Private ALB-to-Application Connections<\/h3>\n<p>Problem Statement: By default, our private applications were closing connections instead of reusing them, resulting in a high number of new connections on the private load balancer.<\/li>\n<\/ol>\n<h3>Solution:<\/h3>\n<ul>\n<li>For our private applications, we set &#8220;<em><strong>jetty.connection.keepalive = true<\/strong>&#8220;<\/em> to enable connection reuse.<\/li>\n<li>Our applications&#8217; ability to manage longer persistent connections has been tested, observed, and confirmed.<\/li>\n<li>To implement the changes, a canary release was carried out while metrics were tracked.<\/li>\n<li>For private ALB, new connections were cut by about 50%, which resulted in significant cost savings.<\/li>\n<li>An estimated <strong>$500 per day<\/strong> is saved as a result of the significant decrease in new connections and rise in active connections.<\/li>\n<li>Result: Significant reduction in new connections and increase in active connections, leading to an estimated $500\/day savings.\n<div id=\"attachment_72941\" style=\"width: 1430px\" class=\"wp-caption aligncenter\"><img aria-describedby=\"caption-attachment-72941\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-72941\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-6.png\" alt=\"New Connection Count\" width=\"1420\" height=\"441\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-6.png 1420w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-6-300x93.png 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-6-1024x318.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-6-768x239.png 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-6-624x194.png 624w\" sizes=\"(max-width: 1420px) 100vw, 1420px\" \/><p id=\"caption-attachment-72941\" class=\"wp-caption-text\">New Connection Count<\/p><\/div>\n<div id=\"attachment_72942\" style=\"width: 1439px\" class=\"wp-caption aligncenter\"><img aria-describedby=\"caption-attachment-72942\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-72942\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-7.png\" alt=\"Active Connection Count\" width=\"1429\" height=\"450\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-7.png 1429w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-7-300x94.png 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-7-1024x322.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-7-768x242.png 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-7-624x197.png 624w\" sizes=\"(max-width: 1429px) 100vw, 1429px\" \/><p id=\"caption-attachment-72942\" class=\"wp-caption-text\">Active Connection Count<\/p><\/div>\n<div id=\"attachment_72943\" style=\"width: 1430px\" class=\"wp-caption aligncenter\"><img aria-describedby=\"caption-attachment-72943\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-72943\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-8.png\" alt=\"LCU Usage\" width=\"1420\" height=\"447\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-8.png 1420w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-8-300x94.png 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-8-1024x322.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-8-768x242.png 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-8-624x196.png 624w\" sizes=\"(max-width: 1420px) 100vw, 1420px\" \/><p id=\"caption-attachment-72943\" class=\"wp-caption-text\">LCU Usage<\/p><\/div>\n<p><div id=\"attachment_72944\" style=\"width: 1205px\" class=\"wp-caption aligncenter\"><img aria-describedby=\"caption-attachment-72944\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-72944\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-9.png\" alt=\"Cost Savings\" width=\"1195\" height=\"457\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-9.png 1195w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-9-300x115.png 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-9-1024x392.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-9-768x294.png 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-9-624x239.png 624w\" sizes=\"(max-width: 1195px) 100vw, 1195px\" \/><p id=\"caption-attachment-72944\" class=\"wp-caption-text\">Cost Savings<\/p><\/div><\/li>\n<\/ul>\n<h3>\u00a02. GZip Compression To Reduce Load Balancer Processed Bytes<\/h3>\n<p>Problem Statement: Large amounts of response data were being transferred without compression, increasing the processed byte costs for the public ALB.<\/p>\n<h3><strong>Solution:<\/strong><\/h3>\n<ul>\n<li>Set &#8220;<em><strong>jetty.gzip.enabled=true&#8221;<\/strong><\/em>, which enables GZip compression for our Java-based applications.<\/li>\n<li>Tested and confirmed that compressed responses were sent to clients that supported GZip.<\/li>\n<li>Observed the impact on response times and the decline in outgoing data transfer.<\/li>\n<li>Result: We saw reduced outbound data transfer costs and fewer processed bytes after turning on this modification, which further decreased our ALB costs.<\/li>\n<li>Keeping an eye on and optimising ALB configuration<\/li>\n<li>To guarantee the best possible connection reuse, we examined CloudWatch ALB metrics.<\/li>\n<li>Monitored LCU usage patterns to verify ongoing cost savings.<\/li>\n<li>Response payloads are continuously optimised to reduce needless data transfer.<\/li>\n<li>Processed bytes reduced for public ALB thanks to GZip compression.\n<p><div id=\"attachment_72945\" style=\"width: 1610px\" class=\"wp-caption aligncenter\"><img aria-describedby=\"caption-attachment-72945\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-72945\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-10.png\" alt=\"Processed Bytes Public ALB\" width=\"1600\" height=\"598\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-10.png 1600w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-10-300x112.png 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-10-1024x383.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-10-768x287.png 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-10-1536x574.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2025\/06\/unnamed-10-624x233.png 624w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/><p id=\"caption-attachment-72945\" class=\"wp-caption-text\">Processed Bytes Public ALB<\/p><\/div><\/li>\n<li>This helped us reduce the public load balancer cost significantly.<\/li>\n<\/ul>\n<h2><span style=\"text-decoration: underline;\"><strong>Key Takeaways<\/strong><\/span><\/h2>\n<ul>\n<li>Regularly monitor CloudWatch metrics and review ALB configurations to find ALB cost drivers.<\/li>\n<li>Optimise connection reuse to reduce the no. of new connections, which will result in cost savings.<\/li>\n<li>Enable response compression to reduce processed bytes.<\/li>\n<\/ul>\n<p>These are simple yet very effective changes we made. We successfully reduced our ALB costs while maintaining availability, reliability, and performance. If your AWS bill is rapidly increasing due to ALB costs, consider these strategies to achieve similar cost reductions!<\/p>\n<h2><span style=\"text-decoration: underline;\"><strong>Have you optimised your ALB costs?<\/strong><\/span><\/h2>\n<p>AWS ALB is a powerful service, but without careful monitoring and optimization, it can become a silent budget buster. Fortunately, making small configuration adjustments, such as turning on GZip or reusing connections, can significantly cut expenses. AWS-certified architects and DevOps engineers are always on the lookout for ways to improve efficiency and cut costs when you work with a managed services provider like <a href=\"https:\/\/www.tothenew.com\/\"><strong>TO THE NEW<\/strong><\/a><strong>.<\/strong><\/p>\n<p>What comes next, then? Begin putting these procedures into effect right now, and keep an eye on how your AWS bills change. Have more advice to share?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Handling AWS costs is very important for cloud bill optimizations. One overlooked service that can significantly contribute to monthly expenses is Elastic Load Balancing. Our team, which works for a global advertising management platform client, a powerhouse in advertising and connected TVs, recently undertook a major step to optimize AWS ALB costs, mainly focusing [&hellip;]<\/p>\n","protected":false},"author":1601,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":119},"categories":[2348],"tags":[4333,248,7552,7431,1916,5547,7502,7322,7549,1266,7551,5209,1892,7548,7550],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/72937"}],"collection":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/users\/1601"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/comments?post=72937"}],"version-history":[{"count":4,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/72937\/revisions"}],"predecessor-version":[{"id":73238,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/72937\/revisions\/73238"}],"wp:attachment":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/media?parent=72937"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/categories?post=72937"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/tags?post=72937"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}