AWS Velocity Series: Summary
Do you want to be faster by using AWS? I see many AWS customers struggling with high expectations and some even slow down. That’s why I wrote the AWS Velocity Series. Let me sum up what matters most when optimizing for speed.
1. Select your runtime environment
There are many options when it comes to running an application on AWS. EC2 based, containerized, or Serverless. Choosing the best option for your specific use case is important. Learn more in part 4 of the AWS Velocity Series: Running your application.
If you start from scratch, I recommend that you create a Serverless app. Details in part 7 of the AWS Velocity Series: Serverless app.
If you have an existing application, I recommend that you Dockerize the application and run it on ECS. Details in part 6 of the AWS Velocity Series: Containerized ECS based app.
If you can not Dockerize the application, run it in EC2. Details in part 5 of the AWS Velocity Series: EC2 based app infrastructure.
2. Design your software assembly line
The assembly line describes the work that is necessary from idea to production. If your assembly line allows manual errors, overwhelms critical resources, or does not continuously improve, you will never be fast. AWS will not be your savior. You have to save yourself. Design your software assembly and then iterate and improve it. A software assembly line could look like this:
- In a software project, you decide how to spend your resources. You can not work on everything at the same time.
- You write code and tests, adjust configuration, add images, …
- Every change is versioned in a repository.
- The source code is built and packaged. Tests are executed, and static source code checkers analyze the source code.
- The packaged software is deployed to AWS into a production-like environment.
- Acceptance tests run against the production-like environment to ensure that your system still behaves as expected.
- Now, you are ready to deploy to production.
- All steps need to be monitored to know if something goes wrong and to decide based on data.
Learn more in part 1 of the AWS Velocity Series: Set the assembly line up
3. Managed services first
Imagine your team is responsible for developing a web-based application that your business clients can use to forecast sales numbers.
The team’s next story is titled “full-text search”. The following tasks belong to the story:
- Install Elasticsearch on 5 nodes
- Backup Elasticsearch
- Monitor Elasticsearch
- Alerting for Elasticsearch
- Load data from DynamoDB to Elasticsearch initially
- Stream data from DynamoDB to Elasticsearch
- Add API endpoint to create search queries
- Add search field to web app
Six tasks are pretty generic:
- Install Elasticsearch on 5 nodes
- Backup Elasticsearch
- Monitor Elasticsearch
- Alerting for Elasticsearch
- Load data from DynamoDB to Elasticsearch initially
- Stream data from DynamoDB to Elasticsearch
If you think that you are solving issues others also have, it’s time to check the AWS services offerings.
You will find that AWS offers a fully managed Elastisearch Service. This means no need to install, backup, or monitor Elasticsearch. You only need to set some thresholds for alerting.
You also find that DynamoDB offers a feature called Streams which can make your life easier to stream data from DynamoDB into other systems. Within a few minutes of research, you completed 4.5 out of 6 tasks by using a managed service. That was fast.
AWS Velocity
AWS provides you many tools and services to improve your speed. You have to select and orchestrate them to support your goal. Start by looking at your software assembly line. Automate as much as possible and continue to invest in improvements. Get rid of as many tasks as possible by using managed services. And choose the runtime environment with the same mindset: limit your responsibilities to have time to differentiate your offering from your competitors.
Series
- Set the assembly line up
- Local development environment
- CI/CD Pipeline as Code
- Running your application
- EC2 based app
a. Infrastructure
b. CI/CD Pipeline - Containerized ECS based app
a. Infrastructure
b. CI/CD Pipeline - Serverless app
- Summary (you are here)
You can find the source code on GitHub.