-
Distributed Systems
- Difference distributed and non-distributed systems
- Reasons to use/implement distributed-systems
- Categories of heterogenity and resilience
- Role communication protocols, service registry, distributed configuration
- The fallacies of distributed computing
-
The NIST Cloud Definition (2011)
- Breakdown of the NIST’s five essential cloud characteristics, deployment models, and service models.
-
Cloud Service/Abstraction Models
- IaaS, PaaS, SaaS revisited, with modern examples.
- The evolution of abstraction models, including FaaS and Containers-as-a-Service (CaaS).
-
Introduction to CNCF
- Role of the Cloud Native Computing Foundation (CNCF) in the cloud ecosystem.
- CNCF Landscape: technologies, tools, and projects.
By the end of this lecture, students will be able to:
- Distinguish between distributed and non-distributed systems
- Explain the importance of heterogeneity and resilience as key drivers for distributed systems.
- Describe the NIST cloud definition and its significance in the modern cloud landscape.
- Identify the major cloud providers and tell about their evolution.
- Differentiate between cloud service models and discuss their evolution, including modern abstraction models like CaaS.
- What are the five essential characteristics of cloud computing according to NIST, and how do they apply to modern cloud services?
- Identify 3 main cloud providers and list their most important services
- What are the differences between IaaS, PaaS, and SaaS? Give examples of each in today's cloud ecosystem.
- What is the CNCF, and why is it important in the context of cloud-native technologies?
- Describe 3 of the fallacies of distributed computing
-
The NIST Cloud Definition (2011)
-
Overview of Major Cloud Providers
- Key players in the cloud space (AWS, Azure, Google Cloud, etc.).
- Comparing evolution.
-
Cloud Service/Abstraction Models
-
Introduction to CNCF
- Role of the Cloud Native Computing Foundation (CNCF) in the cloud ecosystem.
- CNCF Landscape: technologies, tools, and projects.
-
Popular CNCF Technologies
- Kubernetes: Container orchestration in cloud-native environments.
- eBPF: Extending kernel capabilities for monitoring and security.
- OpenTelemetry: Observability standards and practices in modern cloud systems.
- Overview of Cloud-Based IDEs
- Introduction to cloud-based integrated development environments (IDEs).
- GitHub Codespaces: Full development environments in the cloud.
- Google IDX: Automating and provisioning cloud-based workspaces for development.
- Benefits of cloud-based IDEs for distributed systems development.
By the end of this lecture, students will be able to:
- Explain the advantages of using cloud-based IDEs, such as GitHub Codespaces and IDX, for distributed system development.
- Demonstrate an understanding of how these tools enhance collaboration and scalability in cloud-native environments.
- Analyze GitHub Codespaces and IDX. What are the key features that make them suitable for developing distributed systems?
- What are the main benefits of using cloud-based IDEs compared to traditional, local development environments?
Great! Here's your lecture documentation in the usual structure:
This lecture focused on the theoretical foundations of cloud-native software design, revisiting core motivations for distributed systems. The discussion was structured around two main drivers:
- Heterogeneity: leveraging diverse platforms, operating systems, and languages in one system.
- Resilience: enabling scalability, fault-tolerance, load balancing, and modern deployment strategies like blue-green deployments.
Students also reviewed the technical requirements for distributed system architecture, including network communication, service discovery, distributed configuration, and observability. The main part of the lecture introduced the 12-Factor App methodology as a widely adopted guideline for building robust, maintainable, and portable distributed applications.
By the end of this lecture, students will be able to:
- Explain key motivations behind building distributed systems, focusing on heterogeneity and resilience.
- Identify the foundational technical needs of distributed architectures.
- Understand and describe the purpose and impact of the 12 factors in the 12-Factor App methodology.
- Apply the 12-Factor principles as guidelines for designing and building cloud-native applications.
- What are typical reasons for building distributed systems instead of monolithic applications?
- How do distributed systems enable heterogeneity in software development?
- What infrastructure and platform features are required to support distributed systems?
- Name and explain at least four principles from the 12-Factor App methodology and how they relate to distributed system needs.
- Why is configuration management especially important in a distributed environment?
- How do deployment practices like blue-green deployments contribute to system resilience?
-
Development in distributed teams withouth containers and the potential problems:
- Polyglot application landscapes are challenging as all work environments need to match all runtime requirements for all languages
- Transporting application from environment A to environment B introduces challenges and problems with mismatching runtimes
-
Containers
- Isolate Applications from each other
- Package Applications along with all Runtime requirements for easy execution and transportation between working environments
- Simplify configuration of working environments -> only container engine needed
- handling of all application containers through same mechanisms: docker build, docker run
-
Docker
- Docker ecosystem consists of the Docker Daemon, Docker CLI and Docker Hub
- Creation of Dockerfiles
- Building Images - Understanding the layer concept in container images
- Running Containers
- Running multiple container apps with Docker Compose
- What is Docker, and how does it differ from traditional virtual machines?
- Explain the concept of a Docker image and a Docker container. How are they related?
- What are the main components of a Dockerfile? Describe the purpose of each component.
- How does Docker ensure isolation and security between containers?
- What is a container registry, and how do you use Docker Hub to share or deploy images?
- Describe the process of building and running a containerized application using Docker, including common commands.
- In which way does Docker Compose use existing fuctionality and in which way does it extend it?.
- Get a Docker account
- Add Containerization to your Lab project