📚 Part 1:
Introduction into DevOps, Continuous Delivery, Infrastructure-as-Code, GitOps
❓ Quiz 1: principles
📚 Part 2:
Why containers? Universal distribution mechanism.
Anatomy of a container: processes, network, file system, permissions, health checks
Windows containers vs Linux containers
🛠 Exercise 1: building container image and running containers
We take an existing .NET and/or Java web application, package it as a container image and run container locally.
Students will also try/get hints on how to debug the application running inside a container, start more that one instance of applications, share files between the host and container.
For those who are less experienced, we only discuss the very basics. For more experienced folks, trainer will add extra tasks for them to play with.
❓ Quiz 2: containers
📚 Part 3:
Container meshes. Overview of Docker Compose.
🛠 Exercise 2: container meshes
Create a container mesh with an application built in previous exercise + HA database server, caching layer server and a software load balancer.
Students will learn how to set up container network, manage container volumes, configure port openings, setup health checks.
Overall, the goal is to show how to replicate complex deployment setup with Docker and Docker Compose.
❓ Quiz 3: container meshes
📚 Part 4:
Introduction to modern delivery pipelines. Containers everywhere!
🛠 Exercise 3: container delivery
Create a continuous delivery pipeline in GitLab CI and/or Azure DevOps Pipelines that will: build a Docker image, run unit tests, run integration tests, publish image into Docker registry.
Code for unit and integration tests will be provided. The goal is to focus on implementing the pipeline logic and to show that pipeline stages are, in fact, also running as Docker containers.
More experienced people will have a chance to implement extra steps in the pipeline like static code analysis and performance tests.
❓ Quiz 4: pipelines
📚 Part 5:
Cloud as a platform. Introduction to the basics of Azure/AWS cloud resources.
Compute models. 5 ways to deploy containers into the cloud.
🛠 Exercise 4: deploy to a container service
Extend delivery pipeline to deploy to AWS ECS and/or Azure Container Service and verify deployment.
Students will receive pipeline skeleton. Trainer will also give a quick introduction to AWS CLI/Azure CLI as well as provide cheat sheets to help with the exercise.
Experienced folks will try to codify cloud resource management (policies, buckets, databases, load balancers) with the help of Azure Stack/AWS Cloudformation using my templates.
❓ Quiz 5: cloud
📚 Part 6:
Managing complex deployments. Introduction to Kubernetes. Kubernetes primitives: node, pod, service, persistent volume.
🛠 Exercise 5: deploy to an orchestrator
Change delivery pipeline to deploy to AWS EKS and/or Azure Kubernetes Service and verify deployment.
Students will receive a template and a cheat sheet to convert their deployment scripts from existing code into Kubernetes YAML descriptor.
We will discuss when plain cloud resources are better than Kubernetes deployment as well as when Kubernetes could be a good idea.
❓ Quiz 6: Kubernetes
📚 Part 7:
Simplifying the stack. Introduction to Serverless. Function-as-a-Service.
🛠 Exercise 6: deploy as a function
Package part of the application as a separate container. Change the pipeline to deploy it to AWS Lambda and/or Azure Functions.
We will discuss the benefits and billing model behind this approach. Experienced folks may experiment with converting more application parts into the serverless model.
❓ Quiz 7: serverless
Q/A + conclusion