Last week I taught an Architecting on AWS course. During the course, we spend a fair amount of time talking about Compute (Elastic Compute Cloud) and Storage (Elastic Block Storage), which always leads to some great discussion around how to get started.
Before we do anything, we need to have some goals - what is it that we want to accomplish? I’d argue that regardless of what we’re attempting to achieve there are two key goals we need to keep in mind:
First (and most important) - customer experience. We want to build fantastic experiences for our customers. Any metric you define (technology or otherwise) should be related to this one core goal.
Second is availability - we can’t build great customer experiences if the solution isn’t available for our customers to use.
I often get asked about which metrics to use - this is something you need to decide, you know your customers (and your application) better than anyone. Keep it simple, define a few key metrics and get started. You’re going to be making adjustments as you learn more so identify a few key metrics and get started.
Metrics are just the first piece of the puzzle, but if you do not measure them against a benchmark, their value is limited. How do you get benchmarks? You load test. Test your solution using your favourite load testing application to develop your first benchmark.
After establishing benchmarks for your key metrics, you should refer back to them whenever you make a change to ensure the changes you’ve made improve the benchmarks. If it doesn’t enhance your benchmark, then roll back. Since you’re using Infrastructure-as-Code rollbacks should be easy - you are using Infrastructure-as-Code, right?
One last comment on benchmarks - they aren’t static. If you push a change in your environment you need to reset your benchmarks - don’t forget this.
Now that we have a set of defined metrics, and a tool to help us benchmark we can start making informed decisions on the best Compute and Storage components to use for our solution. If you make a mistake here, don’t worry, AWS is a software-based platform, which means we can adjust if we need to - it’s one of the most significant benefits of the platform.
What if you’re building something brand new and because of this you don’t have metrics to help you make fact-based decisions. My recommendation is to start with Burstable (T2) compute instances. T2 instances are affordable and provide customers with an extremely cost-effective way to get started on the AWS platform. Just make sure you’re monitoring your CPU Credits!
Like what you read? Why not subscribe to the weekly Orbit newsletter and get content before everyone else?