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.