Get startedGet started for free

Modern Software Architecture, Containerization, and Kubernetes

1. Modern Software Architecture, Containerization, and Kubernetes

Hi, and welcome to the course! I'm Frank, your instructor in this introductory course about Kubernetes. We will get started on this exciting journey through the world of container orchestration.

2. About Me

Before we dive into the subject, let me briefly introduce myself. I have many years of experience as a platform architect and have done a lot of projects in different industry sectors. I have been helping to implement software using Kubernetes since 2018, and I am typically involved in projects using the software stacks and cloud providers shown on the lower right. So, without further ado, let's get started.

3. Modern Software Architecture

To understand the value and positioning of Kubernetes in today's software landscape, let us briefly revisit how software is designed today. Historically, software was developed as monolithic applications. These are large, self-contained units, ready to operate independently from other systems. While this approach has its merits, it also presents significant challenges. Monolithic software can be difficult to maintain and update, leading to prolonged release cycles. In contrast, modern software development has shifted towards a more modular approach, utilizing what is known as microservices. These are smaller, independent components that make up an application. This architecture greatly simplifies maintenance and updates, resulting in shorter release cycles and the ability to deploy new features more rapidly. Additionally, this modular design is exceptionally well-suited for cloud computing environments.

4. Containerization and Kubernetes

Nowadays, modern applications consist of tens, hundreds, if not thousands of these building blocks. This introduces a crucial question: how do we deploy, maintain, and update them? The answer is, of course, via containers. Each component is deployed or "delivered" in its own container, which includes all the prerequisites needed to run that component. However, another challenge emerges: how do we manage all these containers, ensure they operate correctly, and keep their versions up to date? This is precisely the role Kubernetes plays.

5. Cloud Nativeness and Kubernetes

Kubernetes is what we call these days "cloud-native". Let us look into this in more detail. Cloud-native is a way to build, deploy, and manage software in cloud environments. Clouds provide infrastructure like virtual machines for computing, networks to connect these machines, and storage that all machines can access concurrently. All of this infrastructure can be scaled, which means that we can lease more or less of each component independently of each other. For example, if we currently use three virtual machines to run our application, we can add two more machines and use them immediately. We can also purchase more storage for our application without increasing the number of virtual machines. Now, a cloud-native application has been designed to use the scalable infrastructure efficiently. One way to achieve this is using containerization and Kubernetes. Kubernetes is cloud-native, which makes deploying and managing our application very simple. It also enables easy scaling of applications.

6. Kubernetes Distributions and Cloud Offerings

Kubernetes is an open source project invented by Google. Everyone can download and use it. However, installing a functional Kubernetes may not be easy, as it involves a lot of knowledge about distributed computing. While it is not easy to install, almost all cloud providers offer Kubernetes as a managed service, which we can use easily. By the way, Kubernetes is often abbreviated as "k8s".

7. Let's practice!

Now, with this short recap about how to design modern software, let's practice a bit.