Unit CLOUD COMPUTING

Course
Programming and management of computer systems
Study-unit Code
A003655
Curriculum
In all curricula
Teacher
Marco Marinello
Teachers
  • Marco Marinello
Hours
  • 42 ore - Marco Marinello
CFU
6
Course Regulation
Coorte 2023
Offered
2024/25
Learning activities
Caratterizzante
Area
Tecnologie informatiche e dell'informazione
Sector
INF/01
Type of study-unit
Obbligatorio (Required)
Type of learning activities
Attività formativa monodisciplinare
Language of instruction
Italian
Contents
1. Course Overview

General introduction to the course structure

References and required materials

Exam format and grading policy

Course organization and dependencies

2. Foundations of Cloud Computing

Evolution of computing: from mainframes to utility computing

Definition and key characteristics of cloud computing

Types of cloud computing: private, public, hybrid

Major cloud providers (AWS, Azure, GCP, etc.)

Cloud service models:

IaaS (Infrastructure as a Service)

PaaS (Platform as a Service)

SaaS (Software as a Service)

Dedicated vs. shared resources

3. Virtualization in Cloud Computing

Application scenarios and terminology

Benefits of virtualization

Implementation levels of virtualization

Hypervisor types (Type 1 vs. Type 2)

Performance implications

Privilege levels and hardware-assisted CPU virtualization

4. Cloud Computing Challenges and Solutions

Unsuitable applications for cloud computing

Static provisioning vs. dynamic scaling

Workload fluctuations and auto-scaling

Elasticity and load balancing

Microservice architecture

Service Level Agreements (SLAs)

Risks of data centers and mitigation strategies

Cloud certifications and compliance

Legal implications of cloud computing

5. Virtual Machine Management and Infrastructure as Code (IaC)

Data acquisition techniques

VM boot process and configuration

Methods for delivering VM configurations (e.g., cloud-init)

RFC 1497 DHCP options

Network isolation techniques (static vs. dynamic ARP)

Security concerns: Man-in-the-Middle (MITM) attacks

Hypervisor-based networking

CGNAT and far gateways

VM interaction tools

VM templates and personalization

Introduction to Infrastructure as Code (IaC) and Ansible

6. Configuration Management with Ansible

Ansible facts gathering

File and configuration management (lineinfile, ini modules)

Status tracking (ok, changed)

Regular expressions in automation

Variable-based templating

Control structures: loops, includes, blocks

Result registration and debconf preseeding

Error handling and failure management

7. Advanced Virtualization Techniques

Paravirtualization: concepts, rationale, pros & cons

Integration with KVM and VirtIO

Proxmox Virtual Environment features

Live migration and Storage Area Networks (SANs)

VM disk storage options

ZFS: vdevs, arrays, parity, pools, and snapshots

Memory management: ballooning

8. Containerization Technologies

Features and implementation of isolation (cgroups, namespaces)

Definition and architecture of containers

Differences between VMs and containers

Privileged vs. unprivileged containers

Linux capabilities

Common containerization software (LXC, containerd, Docker, Podman)

Container images, layers, and storage

Stateless vs. stateful containers

9. High Availability and Disaster Recovery

Definitions: High Availability (HA), Business Continuity (BC), Disaster Recovery (DR)

Key metrics: MTBF (Mean Time Between Failures), MTTR (Mean Time To Repair)

Single Points of Failure (SPOF)

Redundancy models:

Active/Active, Active/Passive, Active/Backup

N+1 and 2N+1 redundancy

Automatic failover mechanisms

DNS multi-A record setups

Load Balancers:

L3 vs. L7 load balancers

Health checks and heartbeats

10. Networking and Container Orchestration

Types of network drivers and their features

Student presentations on:

HAProxy load balancing algorithms

Graphical software for container management

Docker’s built-in DNS server

11. Docker Compose and Service Orchestration

Introduction to Docker Compose

Top-level elements:

Services, networks, configs, secrets

Key parameters and configurations

Practical examples and deployment workflows
Reference texts
Dan Marinescu, "Cloud Computing: Theory and Practice, 3rd Edition", Morgan Kaufmann, 2022.
Sean P. Kane and Karl Matthias, "Docker: Up & Running: Shipping Reliable Containers in Production", O'Reilly, 2023.
Serena Sensini, "Docker: Sviluppare e rilasciare software tramite container", Apogeo, 2020.
Educational objectives
Explain the evolution of computing from mainframes to cloud computing.
Define cloud computing and distinguish between private, public, and hybrid clouds.
Compare IaaS, PaaS, and SaaS, identifying their use cases and trade-offs.
Evaluate the advantages and limitations of dedicated vs. shared cloud resources.
Describe virtualization’s role in cloud computing and differentiate between hypervisor types.
Analyze hardware-assisted virtualization and privilege escalation challenges.
Identify workloads unsuitable for the cloud and justify alternative solutions.
Implement auto-scaling, elasticity, and load balancing in cloud architectures.
Assess Service Level Agreements (SLAs) and risk mitigation strategies for data centers.
Discuss legal, compliance, and certification challenges in cloud computing.
Configure virtual machines using tools like cloud-init.
Apply network isolation techniques and recognize security threats (e.g., MITM attacks).
Automate infrastructure deployment using Ansible (playbooks, modules, templating).
Troubleshoot configuration errors and validate system states with Ansible.
Contrast paravirtualization with full virtualization, focusing on KVM/VirtIO.
Manage VM storage solutions (SANs, ZFS, snapshots) and optimize performance.
Execute live VM migration and explain memory ballooning techniques.
Compare containers vs. VMs, emphasizing isolation (cgroups, namespaces).
Deploy containers using Docker/Podman and manage images, layers, and storage.
Differentiate privileged/unprivileged containers and their security implications.
Design high-availability systems using redundancy models (active/active, N+1).
Understand MTBF and MTTR to evaluate system reliability.
Configure load balancers (L3/L7) and DNS failover for fault tolerance.
Orchestrate multi-service applications using Docker Compose (services, networks, secrets).
Research and present on cloud/container tools (e.g., HAProxy, GUI managers).
Critique real-world cloud deployments based on cost, scalability, and security.
Prerequisites
Knowledge derived from the operating systems course: operating system and kernel operation and related calls.
Knowledge derived from the computer networks course: addressing, NAT, ARP, distributed networks, VLANs, gateways, ISO/OSI model, ports.
Basic knowledge of programming.
Teaching methods
Frontal lecture; flipped classroom; debate.
Learning verification modality
Written (via LibreEOL) and oral examination. Both components must be sufficient (18/30) for the exam to be passed.
Share on/Follow us on