95646 - Virtualized Systems

Course Unit Page


This teaching activity contributes to the achievement of the Sustainable Development Goals of the UN 2030 Agenda.

Quality education Decent work and economic growth Industry, innovation and infrastructure

Academic Year 2021/2022

Learning outcomes

At the end of the course, the student knows the bash scripting language, the basic principles of virtualization, the concept of container, the Infrastructure as Code model and the basic language and tools to develop a virtualized system.

Course contents

The course provides the knowledge of the basic principles of virtualization and the abilities to apply the Infrastructure as Code model.

  • Bash scripting.
  • Recall of local system management.
  • Overview on communication security aspects for information systems, server farms and network. Protocols and utilities (ssh, tls/ssl, dtls). Basic Linux tools (iptables/netfilter). NAT and protocols for NAT overcoming (STUN,TURN,ICE). Protocols and tools for proxying, socks.
  • Virtualization principle, platform for virtualization, container, application areas of virtualization.
  • Cloud systems: cloud service types such as SaaS, PaaS, IaaS. 
  • Overview on cloud platform for on-premise cloud (OpenStack, Proxmox).
  • A simple example of Infrastructure as Code model: creating a Linux virtual machine by code (Vagrant, cloud init).
  • Micro-services Architectures: language-independent, component-based, software architectures. Message Bus (at a kernel level, local system or cloud scope). Most prominent examples of Micro-services Architectures in a local context and cloud context. SaaS, PaaS and IaaS cloud services.

  • A prominent example of container-level virtualization: Docker. The docker API. Virtual networks between docker containers. Building a container image automatically using Dockerfile; Introduction to Docker Compose; Docker Swarm - how to run multi-container applications in host clusters using a native docker tool.

  • Kubernetes: orchestration of virtual machines, services and containers. On premise orchestration products on cluster or on single node (minikube).

  • Infrastructure as Code model: Languages and systems for orchestrazione (Terraform, Juju, ...).

  • Introduction to Serverless systems and Function-as-a-Service (FaaS) model: Microsoft Azure Functions, AWS Lambda, Google Cloud Functions.
  • Notes on IDentity Management (IDM), IDM platforms and protocols based on Windows o.s. (Active Directory, LDAP) and based on Linux o.s. (Kerberos, openLDAP) .
  • Development of distributed applications: continuous development.


Slides and notes provided through course web site (see 'Links to further information' after the beginning of course)

Teaching methods

Classroom lectures and exercises, and laboratory activities.

The theoretical knowledges are presented during the traditional lectures. A lot of practical exercises are developed in the lectures so as to introduce the laboratory activities, in which the students, under the supervision of the professor, check their knowledges, propose and solve their doubts and improve their skill.

Extensions of the lab activities are regularly suggested, and the solutions published, so as to allow individual studies and autonomous lab activities.

Some laboratory activities simulate the execution of the theoretical/practical exam so as to familiarize the students with the course assessment methods.

In consideration of the type of activity and the teaching methods adopted, the attendance of this training activity requires the preventive participation of all students in the training modules 1 and 2 on safety in the study places, in e-learning mode [https://elearning-sicurezza.unibo.it/ ].

Assessment methods

The examination consists of a verification of knowledge of the theoretical and practical aspects of the discipline, carried out by a written test;

The theoretical/practical test is carried out as a 2-hours written exam that includes open questions and simple exercises on software programming and configuration. The theoretical/practical test may involve any subject presented during the course.

If the theoretical/practical verification is passed, the overall grade is verbalized after 2 weeks. The student therefore has two weeks to refuse the overall grade.

PLEASE NOTE: as long as the covid-19 emergency lasts, the examination tests will be carried out online, with the students at home and working on their pc. In such a case, the theoretical/practical verification will last after one hour only.

Teaching tools

Lessons: projection of slideshows and practical demonstrations of the concepts, algorithms, techniques, API and tools proposed in the lessons. The practical demonstration uses scripts and files that are preventively provided by means of the web page of the course. Hence, the students can follow and replicate the demonstrations on their laptop using the wifi connections available in the classroom. In this way, the students can personally verify the progress of the operations, can identify any doubts and can ask the teacher for solutions, so as to solicit the interaction between the students and the lecturer during lessons.

Practical laboratory activities: the teacher will guide the students to learn API, tools, troubleshooting strategies, and to solve problems regarding almost every subject of the course. A personal virtualized environment is available, where students can work with administrative privileges, allowing to simulate realistic system administrator operational procedures.

Links to further information


Office hours

See the website of Vittorio Ghini