In this course you will learn how to deploy scalable applications using DevOps techniques. Why DevOps? It is one of the most sought after skills in the IT industry. The average salary in the US is $105,000 per year (source: Glassdoor), up to an average of $146,000 in San Fransisco (source: Indeed).
The course is aimed at software engineers, database and system administrators that want to deliver software that is scalable, reliable, available, manageable and still cost effective. Other IT professionals can also take this course, but might have to do some extra research to understand some of the concepts.
You will learn how to improve your applications and databases by applying techniques to scale your software. I will explain how to scale your application using proven automation, configuration management, provisioning and deployment tools. I also cover newer tools like Docker, Kubernetes and Deis.
The course is very practical. There are 3 use cases I will be explaining in detail. All the code is available for you to reuse on Github. If you get stuck with the technology while trying, there is support available. I will answer your messages on the message boards and we have a Facebook group where you can post questions.
Course Introduction
The course introduction
Procedure document with information to my git repositories
Introduction
What is scalability and how do you scale? What are some examples of scalable apps.
A scalable architecture: availability, performance, reliability, scalability, manageability, and cost. This lecture also includes an example web app architecture.
This lecture explains what distributed databases are, and the difference with traditional ACID compliant databases.
Part 2 of distributed databases. This lecture explains what distributed databases are, and the difference with traditional ACID compliant databases.
The differences between On-Premise and the Cloud. Also covers Private Cloud
The differences between Infrastructure as a service and Platform as a service
Use Case 1: Vagrant-Cassandra-DigitalOcean
Introduction to Cassandra, a free and open source distributed database designed to handle large amounts of data, and still using commodity hardware.
Deploy straight on the public cloud (DigitalOcean) using vagrant. You get $10 free credit to try out Vagrant-DigitalOcean
You can launch a Cassandra Cluster on DigitalOcean with Vagrant just by having a Vagrantfile and by typing vagrant up.
You can launch a Cassandra Cluster on DigitalOcean with Vagrant just by having a Vagrantfile and by typing vagrant up. This demo shows how to launch it.
Cqlsh is used to query Cassandra. In this lecture I'm showing you how Cassandra works
Before you can really use Cassandra, you need to know about Replication Factor and Consistency Level
Where to find more Cassandra Resources if you want to know more about Cassandra
Use Case 2: Amazon AWS with Elastic Beanstalk and Terraform
Introduction to use case 2: to create a production ready application on AWS that can scale. Using terraform to have the AWS infrastructure as code
First, you need to know about VPCs (Virtual Private Networks). This will give you your own isolated network on AWS to deploy your instances and databases in
In this lecture I'm showing you how to create these VPCs using Terraform
In this lecture I'm showing you how to create these VPCs using Terraform
In this lecture I'm showing you how to create these VPCs using Terraform
Now that we have our VPC, we can set up the database and application layer. For the database layer I'm going to use AWS RDS (Relational Database Service) and for the Application Layer Elastic Beanstalk. This is going to allow us to easily set up scalable infrastructure.
A demo showing you how to set-up the database and application layer using Terraform.
A demo showing you how to set-up the database and application layer using Terraform (part 2).
Now that the database and application layer is set-up, an application can be deployed on it. This can be done easily with the eb CLI tool (Elastic Beanstalk Command Line Utility)
PHP is not your thing? Design your own stack using Docker images. You can create Docker images and push them to AWS ECR, Amazon's Docker Repository Service. Elastic Beanstalk can then pull the images and install them to run your application on.
A demo showing how to run php7 on Elastic Beanstalk using Docker and Amazon ECR
Use Case 3: Dokku & Deis on Kubernetes
Introduction to running your own Platform as a Service, on your hardware, or using IaaS
This lecture explains Dokku, a simple piece of software that turns your server into a single-instance PaaS
Let's deploy a simple application with MongoDB on DigitalOcean using Dokku. Provisioning on DigitalOcean will be done using Terraform.
Let's deploy a simple application with MongoDB on DigitalOcean using Dokku. Provisioning on DigitalOcean will be done using Terraform.
What if you want to scale your application that you deployed on Dokku? An introduction to Deis, which is the cluster version of Dokku
Deis runs on Kubernetes, so let's explore Kubernetes first.
Kubernetes uses etcd. In this lecture I explain you what etcd is.
For overlay networking, we're going to use Flannel.
To install Kubernetes on Digital Ocean (or on-premise), I'm going to use Ansible
This demo shows you how to install kubernetes on Digital Ocean using Ansible and Terraform to provision the droplets
Once we have Kubernetes, you can easily put Deis Workflow on top of it. Then you can git push your app to Deis
Labs
A very practical challenge to bring your DevOps skills into practice!
Thank You
Finished! Thank you for following this course!
Bonus lecture! Coupon codes for my other courses