Practical and Professional Devops with AWS and Docker
The Zero-to-Production Blueprint for Real World Infrastructures and Development StacksEnroll in Program
Learn everything you need to build a complete, production-ready pipeline and infrastructure on AWS with Docker.
Finish with a resuable Blueprint for all future professional projects.
Development Environment For Teams with Docker
Portable, reusable, and no collision with locally installed versions!
Continuous Deployment Pipeline
Update our code -> push to Github -> have it deploy across our infrastructure.
Service Oriented Architecture
Keeping our services (apps) separated for scalable deploys and sane development. Starring Node and React (although any application stack can be used!).
Fault Tolerant, Load Balanced and AutoScaling Infrastructure on AWS
Everyone says "you won't need it yet," but you want it. And know you'll need it.
3.5+ Hours of CloudFormation!
We explore the infamous "infrastructure as code" service by building a production template from scratch.
Twitch Inspired Presentation
We'll work along side each other and complete everything together!
Instructor Discussion & Support. Access to All Updates. Membership to the Exclusive DevOperatives Group.
"The course is absurdly good, props to you sir. I consume a decent amount of resources and this course definitely stands out. I'm using pieces of this course to study for an up coming interview for an SRE (Site Reliability Engineer) - provisioning job. Keep the goodness coming!"
- Sterling Houghton, Applications Engineer (Nike)
"The moment I saw your course I knew it was going to be a big help. I'm a developer who wears many hats, and especially over the past year or more I've been getting into DevOps and managing my AWS environment. I've consumed several other AWS resources/courses, but they are usually tailored to a single AWS service at a time. I appreciate you taking the time to put some opinions together to bring several AWS services together. It's easy to follow along."
- Alexander Bihary, Senior Software Engineer (Webcollage)
"I have enjoyed the course very much so far and look forward to continuing it. I am teaching a web module to our final years, so I will be using a lot of knowledge gained from your course for that. I find your style and pace clear and easy to follow."
- Dr. Torbjorn Dahl, Associate Head for Computing, School of Computing, Electronics and Mathematics (University of Plymouth, UK)
"I have spent a good portion of my time in as a windows infrastructure engineer/admin role. I realized that if I don't move over or incorporate cloud computing in to my knowledge base... I'd soon be saying "Would you like some fries with that order" :-)"
"I received the 3 associate AWS certification in less then 3 months and realized I was more lost then before. I followed your Tech Guides and Thoughts blog for few months prior and when you announced the new course, based on the front page description awsdevops.io I knew that this would be a my new portfolio of knowledge."
"At this time I am 55% done with the course and the knowledge gained exceeds all the past cloud/devops education I've compiled. Don't get me wrong the certifications definitely helped with all the basics - so that I could begin devouring your material. Without the basics it would have a been a bit more challenging but still 100% doable."
"I am not a developer and following your course and building an application from scratch allowed me to understand the internal intricacies of not only the development process but also making sure that the application is cloud ready."
"I am looking forward to continuing the current course and to anything that your experience will transform in to a knowledge rich course."
"Thank you for an incredible opportunity to watch over your shoulder and an overall a for a fantastic experience."
- Felix Bakhman, Infrastructure Engineer
"The course is a savior. Learning new technologies is like learning calculus when everything's in French. When you find guidance in English, it's golden."
"I really like the way you link to the docs. You present the material to a good level of depth, but there are times, as a student, you need to dig deeper. Having links to relevant documentation really helps. Especially when you're learning Docker, CircleCi and ECS all at the same time, under deadline."
- Andrew Meyer, Senior DevOps Engineer (Pray.com)
The Entire Course Cirriculum - IN DEPTH:
Sections 1, 2, and 3
- Introduction of the course from a high level
- Prerequisites and knowledge level suggestions
- Set up of our local machine for development
- Creating and secure set up of our AWS Account
- Configuration of the AWS CLI
Section 4 - VPCs and Security
- High level Overview of AWS Virtual Private Clouds (VPCs)
- In-depth conceptual exploration of AWS VPCs
- Overview of basic networking concepts required by VPCs
- A Production Approach to VPC creation and Subnetting
- Set up of a full, production-grade VPC
- Creation of a Bastion Server for future secure logins
- Overview of AWS Identity and Access Management
Section 5 - Creating the Development Environment and API
- Intro to the Docker based development environment
- Creating Docker Images used for local development
- Leveraging Docker Compose for full-stack development with separated services
- Creation of a basic authenticated and authorized API with Node.js
- Walkthrough and Mindset of Test Driven Development with Node.js
- Set up of all modern testing and coverage tools for Node.js
- Version controlling the Code AND the Docker Images
Section 5.5 - AWS EC2 Container Service (ECS) Overview
- For those in my ECS Course, this is the same thing - so you can skip it :)
- Overview of Docker in context of AWS
- AWS ECS from a 50000 ft view
- Conceptual Deep Dive of the major ECS components (Clusters, Services, Tasks, Task Definitions)
- Understanding the supporting components of ECS (Application Load Balancers, Launch Configs, AutoScaling Groups)
Section 6 - Creating AWS Resources for the API
- Prepping the application from Section 5 for deploy
- Setting up the IAM resources and Security Groups
- Launching an AWS Relational Database Service (RDS) instance
- Creating the Elastic Application Load Balancer
- Making the ECS Cluster and Container Instances with a Launch Configuration and AutoScaling Group
Section 7 - First Time API Launch into AWS
- Building a production Docker image for our Section 5 application and pushing it up
- Setting up an ECS Task Definition for our production Docker Image
- Launching an ECS Service for our Seciton 5 application's production Docker Image
Section 8 - Continuous Deployment and Integration of API Service
- First time set up and explanation of continuous deployment
- Setting up an account on CircleCI
- Creating an independent user and deploy scripts for CircleCI
- Creating a script to update the ECS Task Definition and Service
- Writing a build script to deploy updates directly to ECS
- Note: CircleCI is free, and fits the need of setting up a first time CI/CD pipeline. We use AWS CodePipeline and CodeBuild in Section 13.
Section 9 - AutoScaling our API Service and Infrastructure
- In-depth overview on AutoScaling both ECS Services and EC2 Instances
- Setting up AutoScaling for our ECS Services
- Setting up AutoScaling for our Launch Configuration and AutoScaling Group (EC2 Instances)
Section 10 - First Infrastructure and API Launch Overview
- Recap of everything we built in Part 1
- Summary of what you can do with it right now
Section 11 - Setting up the Web Application
- Overview of deploying an existing application
- Setting up the React Project
- Creating a Test Environment with all the modern tools for React
- Snapshot testing with Jest and React
- Unit Testing with Jest, Enzyme and React
- Building an NGINX based React Docker Image for deploy
Section 12 - Building the Full Infrastructure with CloudFormation
- Overview of CloudFormation
- Exploration of the CloudFormation Basics and Essentials
- Writing all of our IAM roles and resources
- Working with Custom Parameters and Intrinsic Functions
- Creating Security Groups in CloudFormation
- Configuring an Application Load Balancer
- Creating a Launch Configuration and Autoscaling Group
- Creating an ECS Service and Task Definition
- Setting up AutoScaling for ECS Services
- Setting up AutoScaling for Launch Configuration and AutoScaling Group
- ... all of the above in context of CloudFormation
Section 13 - Continuous Deployment with AWS CodePipeline and CodeBuild
- That's right, we set up another CI/CD pipeline, but this time fully in AWS
- Setting up all IAM resources for CodePipeline and CodeBuild
- Building a custom CodeBuild Docker image
- Pushing up and Protecting our custom CodeBuild Docker image
- Creating build files and scripts for our Section 11 application
- Creating the CodePipeline and CodeBuild and testing it out!
- Section 14 - Setting up SSL on our Application Load Balancers with Route53 and AWS Certificate Manager
- Section 15 - Deploying Varying Services to One ECS Cluster with Different Host Names
- Section 16 - Running commands simultaneously on all EC2 Instances with EC2 Systems Manager
Along side all of the practical implementation, we'll also deeply explore the topics conceptually and technically. What's the point of having a list of steps you don't understand? That you can't extend to your needs?
The goal here is to give you a full blueprint that you can use for your own purposes. So that you can stop piecing together Frankenstein stacks by piecing together parts of one tutorial and parts of another. And then having all of it just barely work.
Oh, and one more thing. I promise we'll never say "You wouldn't do this in production."
Check out the 4 minute overview video for an intro to the course!
Cloud Architect, Software Engineer, DevOps Lover, AWS Solutions Architect, Former TechStars HackStar, and Headmaster at Awsdevops.io!
I run a blog full of free tech guides on all things development, devops and cloud computing called Tech Guides and Thoughts.
Get started now!
If the course isn't expanding your cloud knowledge, contact us within the first 30 days and you'll get a full refund.
Frequently Asked Questions
Getting into Devops, let alone creating an entire infrastructure and development pipeline... is painful.
There's many reasons for this:
a) The feedback loop is insanely long.
If you want to make a change or conduct an experiment, there is no localhost. You have to do it on whichever cloud provider you're using. Testing a configuration or deploy would require setting up some makeshift infrastructure (or even worse, using an existing one) and then launching the changes. This can take minutes to hours to see if your changes are valid and working.
Now "minutes to hours" may not sound like a lot. But once you've done 50 to 100 experiments with this type of feedback time... Those experiments can stack up to days, weeks, or months.
b) Learning costs are high.
In order to really get an understanding of an entire infrastructure, you need to ... build it. For Cloud infrastructure that means doing so with whatever cloud provider you plan on using. And this can cost money.
So in addition to paying for learning materials and paying with your time, you also pay just to host/compute what you're attempting to learn.
c) Learning materials are in silos, out-dated, or teach the wrong thing.
Because there's SO much to a full development pipeline and infrastructure, it's far easier for content providers to just write about one piece of it... and pretend like the rest of it doesn't exist. This has it's place in allowing for focus on just one area of knowledge, but it's not very helpful when you actually need to build something.
Let's not forget about how fast tech changes. Cloud, Devops and the like are no exception to the changing times. This causes existing information to depreciate in usefulness and accuracy very quickly - unless it's actively maintained.
Finally, there's also a ton of WRONG information out there. Because these topics are so complex, a lot of "Hey, this worked for me!" articles, forum posts, and tutorials pop up. And it amazes me how often these are just the result of the writer being so ecstatic that it's finally working that they don't care HOW or WHY it works. This leads to information that only works for their given situation or worse - insecure, unreliable configurations.
d) Certifications help get interviews, but teach little about day-to-day, real-world work.
Therefore educational materials related to acquiring certifications only loosely help with understanding real-world work. Instead they primarily focus on... passing tests. Tests filled with edge-cases, uncommon scenarios, and trick questions. Tests that care little about implementation.
These types of materials will leave you feeling like you know a lot - but I doubt your goal is to become the AWS Trivial Pursuit champion. It's likely to build a production grade infrastructure.
And in fact, employers, co-workers, etc are going to be far more impressed by you creating a production grade, secure infrastructure vs. a poorly designed PDF with your name stamped on it.
I'm bringing up these barriers because I went through ALL of them
When I went to build my first production infrastructure...
- I was AWS certified
- I'd gone through over 10+ full video courses (ugh)
- I'd been reading AWS Docs 1 hour a day for months (to the point where it was part of my daily routine)
I was paranoid and still had no clue where to start.
I was really great at AWS Trivial Pursuit. I could (and still can) answer tons of questions about the most obscure topics in AWS and Docker.
But put together a production grade stack. Ha.
So I set out on a long journey of building and experimenting. For professional reasons. For science! For my own pride (after all I had 100s of hours poured into this)!
My goal was something that would last. Something that would scale. And something that I could confidently and proudly use on any project or product.
"Darkness took me, and I strayed out of thought and time, and I wandered far on roads that I will not tell..."
...mainly AWS docs and experiments that took hours per iteration.
And out of this long adventure I crafted this blueprint.
It's something I use on all of my professional projects. Something that I will continue to use. Something that's general enough to fit any application.
And it's something that you can USE, UNDERSTAND, and EXTEND for your own needs.
This course distills what I've learned over the years into a full blueprint. My hopes are that you can learn in hours what took me ... well, a very long time. That you'll take this, extend it, and put it to great use.
-J Cole Morrison