Software Containerization and Orchestration

Welcome to the world of containers!

Introduction

In modern software development, containers are just everywhere: they are in the continuous integration (CI) system, in the local development environment (devenv), in the production environment with microservices architecture, in the serverless environment, … Understanding the basics of containers becomes an essential skill for any role related to software development. No matter whether you are going to be developers, DevOps, data scientists, project managers, QA, or any other roles, the knowledge of containers can only help you to better fit into the role. It helps you to better understand the needs, better communicate with other professionals and accelerate the development process.

The course will be broken down into 3 parts: containerization, CI/CD, and orchestration. Containerization talks about what a container is and its core concepts. The CI/CD talks about how to build and deploy the container into production. In the end, the orchestration talks about how to operate containers using Kubernetes or similar technologies.

%%{
    init: {
        'logLevel': 'debug',
        'theme': 'base'
    }
}%%
timeline
    title Timeline
    section Containers
        §1 Containerization with Docker
            : Package Java application as a JAR
            : Create Docker image
            : Run Docker image
            : Storage in Docker
    section CI/CD
        §2 Continuous Integration
            : Run unit tests in GitHub Actions
            : Build Docker image in GitHub Actions
            : Publish Docker image to Docker Hub
        §3.1 Continuous Delivery
            : Deploy Docker image to Amazon Elastic Container Service (ECS) with GitHub Actions
    section Kubernetes
        §3.2 Introduction
            : Explore Kubernetes cluster with kubectl
            : Create a Pod for a frontend application
            : Create a Pod for a Java application
            : Operate a Pod with kubectl
        §4 Deployment and Networking
            : Create a ReplicaSet
            : Create a Deployment
            : Create a Service
            : Roll out a new version of the application
        §5 Configuration and Storage
            : Create a ConfigMap
            : Create a PersistentVolume
Chapter Date Slides Assignment
Chapter 1 21 Oct, 2024 slides assignment
Chapter 2 23 Oct, 2024 not available yet assignment
Chapter 3 28 Oct, 2024 not available yet assignment
Chapter 4 7 Nov, 2024 not available yet assignment
Chapter 5 20 Nov 2024 not available yet assignment

Other resources: