Driving Down Costs for Native AWS Apps

Application Modernization
Cost Optimization

Save costs while simultaneously improving your application performance and developer velocity by modernizing applications on AWS

Cost is an important topic in today's economic climate. Companies large and small are looking for ways to cut costs in whatever way possible. Startups are trying to stretch their dollar farther to be more frugal.

The world is changing. Common cost-saving solutions from the past included things like reserved instances and right-sizing tools. While those types of examples can save you costs, they are narrow and singular in their focus.

As an alternative, what if I told you that you could save costs while simultaneously improving your application performance and developer velocity? In this post, I’ll cover a few topics that are not commonly mentioned in the cost savings conversation. They deserve, not just a mention, but to be at the top of the list when you look for real, long-term savings.

Cost savings as a metric is hard to measure with automation. That’s likely why people don’t discuss it. 

Technically, with automation, you’re spending more on tooling costs. The money you “save” generally comes in the form of developer velocity. 

Velocity is the rate at which your developers can implement new features, bug fixes, or general tasks in a scrum type environment. With automation, your developers become more efficient and produce more results in the same amount of time and money spent. In a 2022 GitLab quiz, more than 82% of respondents said automation plays a “vital” role in developing and deploying safer and faster releases. It isn’t an option anymore.

AWS comes with sets of user-friendly automation tools to get you started. The company offers a full suite of integrated DevOps products, starting with AWS CodeCommit, a Git-compatible source code repository. AWS CodePipeline can pull code from your code repository and send it to AWS CodeBuild, which allows you extreme flexibility across your full automation workflow, including build, test, 3rd party tools, and more. Finally, AWS CodeDeploy can help you deploy your packaged code into AWS services like Amazon EC2, Amazon ECS or AWS Lambda

Below are a couple of types of automation that can increase developer velocity and help drive value to customers without incurring significant additional spend.

Automated deployment of native AWS apps

Automated deployment is a method of deploying into an environment(s) (development, staging, QA, or even production) with minimal human interaction. The minimal human interaction increases developer velocity. It frees up the people who used to be in charge of deployments so they can focus on feature development or other high-value areas. 

Even with the tangible benefit and significant upside, “minimal human interaction” can be a scary proposition. The good news with automation is that this isn't all-or-nothing. 

Your team commonly deploys more to non-production environments than to prod. Automating these pre-prod environments can increase developer velocity while still allowing you control over production. Over time, as you improve your automation, you will build confidence in your pipeline and eventually leverage it for production deployment.

Automated Testing

After any deployment, automated or not, there is always some kind of testing to validate that the release works. However, manual testing can consume precious person-hours. By automating testing, you add several benefits to your current processes.

The first benefit is that you speed up feedback loops. With manual testing, you have to wait for a testing resource, wait on the tests, generate a report, and finally, give feedback. With automated testing, you have a proven tool specifically designed to do all of those steps immediately and deliver feedback in a fraction of the time.

The second benefit is overall improvement in code quality. When you automate tests, you also empower your developers to run tests locally. That allows them to test code prior to submitting it for code review. This means that you aren’t merging and deploying broken code.

The final benefit is developer velocity. Quick feedback cycles and the time saved in automating test execution give your developers more time to deliver value.

Serverless: Making native AWS apps truly native

Native AWS apps cost less to maintain. Not only do infrastructure costs tend to decrease, but the personnel costs to support it also go down. 

Another way to decrease costs even further on the infrastructure side is to leverage serverless. Serverless is a cloud concept where you abstract away the need to manage and maintain infrastructure 24x7 and only pay for compute cycles when you are running. 

There are serverless solutions for all three tiers of a standard 3-tier application. Let me touch on each below.

Data Tier

Creating a serverless data tier comes with all the cost benefits mentioned above. However, if you design your application with a serverless data tier in mind, you can save even more. 

Services like Amazon DynamoDB or Amazon Aurora Serverless allow you to take advantage of the same “pay per use” cost savings as your compute/application tier. Taking this a step further , you can design your application to limit calls to the database and to read unchanged data from a cache or local state management. That means that you aren't invoking your data tier as much. While this isn't possible with all workloads, it is definitely something to be mindful of.

The data tier has always been one that is filled with options, and today's serverless data tier is no different. There are both traditional relational and NoSQL serverless data tier options within AWS. 

DynamoDB is perfect for non-structured data. Its ability to scale to millions of requests per second gives organizations ultimate flexibility and scalability. However, if your application needs structured data, Aurora Serverless gives you the benefits of serverless and the familiarity of your favorite database flavor but with the speed of the cloud.

Application Tier

The application tier is one of the most common areas to look for cost savings through modernization. Especially as modern front ends start to come with state management, backend calls are decreasing. With serverless, decreasing those calls can actually save you money since you are paying per requests instead of fixed capacity like you do with traditional servers.

While the subject of this article is cost, serverless can also provide increased performance, scalability, and ease of deployments, including rollbacks. With serverless, you don’t have to manage infrastructure and the pains that come with it (patching, hardware updates, maintenance, etc). 

Additionally, you can utilize the features that come with serverless platforms to improve application resiliency with minimal or no additional work. When you buy into the serverless paradigm at AWS, all the work AWS does behind the scenes to keep things up to date and running faster benefit you with little to no additional effort.

Amazon provides several options to help you achieve these benefits. One of the most common is AWS Lambda. They also offer a container-based option, AWS Fargate, for languages or dependencies not easily deployed in AWS Lambda as it is today.

Front End Tier

A large majority of front ends deployed today are serving static, client-side content. This is content traditionally hosted on a web server and fronted by a content distribution network (CDN). 

The CDN already takes a large load off of the web server by serving cached content from the CDN. Serverless capitalizes further on the CDN by not having a server running all the time.

Amazon has several offerings to help. The first is Amazon CloudFront, their global CDN. The second common pattern here is to use an S3 bucket to host that static content and not having to pay for any compute at all. This is by far the cheapest option. Your other options follow similar patterns as your application tier and give you the compute power for your front end if needed.

Conclusion: Deploying native AWS apps faster

These are just a few ways that you can save costs while also increasing developer velocity. Getting more out of what you have is sometimes more important than shaving a few dollars away with reserved instances. It allows you to provide more value to your customers.

Caylent can help you achieve some of these goals. At Caylent, we start with an assessment to get a deep level understanding of your application(s), your processes, and your users and the best way we can help you. We then collaborate on a plan to help you build and/or modify your existing environment for maximum velocity and cost savings.

Application Modernization
Cost Optimization
Clayton Davis

Clayton Davis

Clayton Davis is the Director of the Cloud Native Applications practice at Caylent. His passion is partnering with potential clients and helping them realize how cloud-native technologies can help their businesses deliver more value to their customers. His background spans the landscape of AWS and IT, having spent most of the last decade consulting clients across a plethora of industries. His technical background includes application development, large scale migrations, DevOps, networking and technical product management. Clayton currently lives in Milwaukee, WI and as such enjoys craft beer, cheese, and sausage.

View Clayton's articles

Learn more about the services mentioned

Caylent Services

Application Modernization

Innovate at the speed of light with modern applications powered by modular architectures running on purpose-built AWS services.

Caylent Services

Infrastructure & DevOps Modernization

Quickly establish an AWS presence that meets technical security framework guidance by establishing automated guardrails that ensure your environments remain compliant.

Caylent Catalysts™

Serverless Data Lake

Rapidly implement a foundational low-code data lake with Caylent's data engineering experts who will also enable your teams for no-code exploratory data analysis.

Caylent Services

Data Modernization & Analytics

From implementing data lakes and migrating off commercial databases to optimizing data flows between systems, turn your data into insights with AWS cloud native data services.

Accelerate your cloud native journey

Leveraging our deep experience and patterns

Get in touch

Related Blog Posts

Multi-Region Disaster Recovery for QLDB

Learn how to implement disaster recovery capabilities for your Amazon Quantum Ledger Data Base to improve the availability of your applications across different regions or accounts

Application Modernization
Cloud Technology

Application Modernization Checklist

Carefully strategize your application modernization when going cloud native on AWS, with a checklist of considerations and best practices.

Application Modernization

SaaSification on AWS

Learn how SaaSification on AWS can improve the availability and scalability of your applications, helping you reliably meet growing customer demand.

Application Modernization