🆕 Video Course Out Now: Rapid Docker on AWS

AWS Velocity Series: Summary

Michael Wittig – 02 May 2017

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.

Select your runtime environment

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:

AWS Velocity: Software assembly line

  1. In a software project, you decide how to spend your resources. You can not work on everything at the same time.
  2. You write code and tests, adjust configuration, add images, …
  3. Every change is versioned in a repository.
  4. The source code is built and packaged. Tests are executed, and static source code checkers analyze the source code.
  5. The packaged software is deployed to AWS into a production-like environment.
  6. Acceptance tests run against the production-like environment to ensure that your system still behaves as expected.
  7. Now, you are ready to deploy to production.
  8. 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

Cover of Amazon Web Services in Action

Level up, strengthen your AWS skills.

Our book Amazon Web Services in Action is a comprehensive introduction to computing, storing, and networking in the AWS cloud. You'll find clear, relevant coverage of all the essential AWS services, emphasizing best practices for security, high availability, and scalability. Get the first chapter for free!

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

AWS Velocity Cover

  1. Set the assembly line up
  2. Local development environment
  3. CI/CD Pipeline as Code
  4. Running your application
  5. EC2 based app
    a. Infrastructure
    b. CI/CD Pipeline
  6. Containerized ECS based app
    a. Infrastructure
    b. CI/CD Pipeline
  7. Serverless app
  8. Summary (you are here)

You can find the source code on GitHub.

Michael Wittig

Michael Wittig

I’m an independent consultant, technical writer, and programming founder. All these activities have to do with AWS. I’m writing this blog and all other projects together with my brother Andreas.

In 2009, we joined the same company as software developers. Three years later, we were looking for a way to deploy our software—an online banking platform—in an agile way. We got excited about the possibilities in the cloud and the DevOps movement. It’s no wonder we ended up migrating the whole infrastructure of Tullius Walden Bank to AWS. This was a first in the finance industry, at least in Germany! Since 2015, we have accelerated the cloud journeys of startups, mid-sized companies, and enterprises. We have penned books like Amazon Web Services in Action and Rapid Docker on AWS, we regularly update our blog, and we are contributing to the Open Source community. Besides running a 2-headed consultancy, we are entrepreneurs building Software-as-a-Service products.

We are available for projects.

You can contact me via Email, Twitter, and LinkedIn.

Briefcase icon
Hire me