Cloud Infrastructure: Virtualization and Storage Models

Virtualization Levels and Hardware Implementation

4. List and briefly describe the levels of virtualization. Describe in detail how virtualization works at the hardware / OS level. Virtualization can be implemented at different levels, depending on what part of the system is abstracted. The lecture classifies virtualization levels as: application level, library/user-level API, operating system level, hardware abstraction (HAL) level, and instruction set architecture (ISA) level. Each level virtualizes a different layer: from single applications (e.g., JVM/.NET) to full systems and even CPU instruction emulation.

The two most important for cloud computing are hardware-level virtualization and OS-level virtualization.

In hardware-level virtualization, the key component is the hypervisor, which runs on top of physical hardware and allows multiple virtual machines (VMs) to run at the same time. Each VM includes its own guest operating system and applications, so it behaves like a complete independent computer. The hypervisor allocates physical resources (CPU, RAM, disk, devices) among the VMs and isolates them from each other. This allows consolidation: instead of having many separate physical servers, one physical host can run many virtual servers efficiently. Hypervisors can be Type 1, running directly on the hardware, or Type 2, running on top of a host operating system.

In OS-level virtualization, there is no separate guest OS per instance. Instead, virtualization happens at the kernel level, and the system creates isolated environments such as containers. In this model, multiple applications run in separate containers but share the same host kernel. This approach is lightweight and fast compared to full VMs, but it requires compatibility with the host OS kernel. This is why container technology (like Linux Containers / Docker) is very important in modern cloud systems.

Optimizing Resource Management: CPU, RAM, and Storage

5. Present ways of optimizing resource management by the virtualizer using the example of CPU / RAM / Storage.

A hypervisor (virtualizer) improves resource management by efficiently sharing the physical resources among multiple virtual machines.

  • CPU Management: Virtual machines use vCPUs (virtual processors). The hypervisor schedules the execution of VM tasks on the physical CPU cores. An important constraint is that if a VM is configured with multiple vCPUs, the hypervisor must provide the same number of physical cores at the same time for correct execution. Many hypervisors also support SMT technologies. A key optimization point is deciding between single vs. multiple vCPUs, because too many vCPUs can reduce efficiency if the workload does not require parallelism.
  • RAM Management: The hypervisor can allocate memory dynamically and apply techniques like memory sharing, where identical memory pages used across multiple VMs are shared to reduce total usage. This is especially useful because many guest systems repeat the same memory patterns. For user/application-specific data, the system can use a copy-on-write mechanism. Another technique is memory overcommitment, meaning the hypervisor can allocate more total virtual memory than physically available because many VMs are idle. Ratios like 1.5:1 to 2:1 are common. The hypervisor can also use memory ballooning, forcing the guest OS to reduce its memory usage when needed.
  • Storage Management: The hypervisor manages I/O operations through emulation layers and applies techniques such as disk mirroring and striping (RAID) to improve reliability or performance. It can also use deduplication, removing duplicated data blocks to save space (often 30% to 90%). Another key concept is thick vs. thin provisioning: thick provisioning reserves the full disk size immediately, while thin provisioning allocates space on demand and can even allocate more than physically available.

Virtualization in Cloud Computing: AWS Examples

6. How is virtualization used in cloud computing? Discuss using the example of famous AWS services. Virtualization is one of the main technologies that enables cloud computing because it allows providers to transform physical servers into pools of flexible resources that can be allocated on demand. Virtualization is the underlying technology, while cloud computing is the broader methodology that pools and automates these resources.

In cloud computing, virtualization makes it possible to run many virtual machines or containers on the same physical infrastructure, providing better resource utilization and scalability. Cloud environments usually follow a template-based configuration, support multitenancy, and feature resources with short lifespans.

A clear example of virtualization in AWS is Amazon EC2, where users rent virtual machines (instances). EC2 is based on hardware virtualization because each customer gets isolated VMs that behave like separate servers. Another important example is container-based virtualization (OS-level virtualization), which is commonly used to deploy lightweight and scalable applications via services like Amazon ECS or EKS.

Cloud Data Storage: Block, Object, and File Types

7. What are the possible types of data storage? Describe, with an example, block / object / file storage. Show us the example of well-known cloud storage.

In cloud computing, there are three main storage types:

  • File Storage: Organizes data in a hierarchical structure using files and folders. It is suitable for sharing files between users and supports concurrency. However, it is difficult to scale. Example: AWS Storage Gateway (File Gateway), which connects on-premises systems to Amazon S3 via NFS/SMB.
  • Block Storage: Divides data into blocks and stores them separately. It is used for dynamic data, transactions, and databases due to high performance. Example: AWS EBS (Elastic Block Store).
  • Object Storage: Stores data as objects with metadata, accessible through APIs (REST). It is highly scalable and ideal for static data. Objects are immutable (updates create new versions). Example: Amazon S3 and Azure Blob Storage.

Migrating On-Premises Storage to the Cloud

8. Discuss the advantages and disadvantages of migrating on-premises to cloud storage using the example of block / object / file storage.

Migrating to cloud storage improves redundancy, durability, scalability, and accessibility while using a pay-as-you-go model. However, it introduces specific challenges:

  • File Storage: Improves remote accessibility but can suffer from network latency and is generally difficult to scale.
  • Block Storage: Ideal for transactional applications and easy to migrate, but can be more expensive and offers limited metadata.
  • Object Storage: Highly attractive for backups and static data due to scalability, but requires adapting application architecture to use APIs instead of traditional file access.

Integrating Storage with Cloud Services

9. Discuss an example of using block / object / file storage with other cloud services.

In real cloud architectures, storage is combined with other services:

  • Block Storage: Typically attached to virtual machines (EC2) for applications needing low-latency storage, such as databases.
  • Object Storage: Used with applications that generate large static data (images, logs). It often integrates with lifecycle management to move older data to colder storage classes.
  • File Storage: Often used in hybrid cloud scenarios. For example, AWS Storage Gateway allows on-premises clients to access cloud storage using standard protocols like NFS.

Cloud Native Approach vs. Traditional Architecture

10. Cloud Native approach. Describe what it is and how it differs from the traditional approach.

The Cloud Native approach involves designing applications specifically for cloud environments to take advantage of scalability and resilience. It assumes the cloud is a distributed system where failures can happen. A key concept is the Twelve-Factor App, which defines best practices like stateless processes and treating logs as event streams.

In the traditional approach, applications are deployed on servers that behave like “pets”: unique machines that are carefully maintained. In contrast, cloud-native instances behave like “cattle”: they are replaceable, short-lived, and easily recreated. Cloud-native systems scale horizontally using containers and orchestration platforms like Kubernetes to meet strict availability requirements (SLA).

Microservices Architecture: Benefits and Challenges

11. List and describe with examples the advantages and challenges of using a microservices architecture in an application.

A microservices architecture builds an application as a set of small, independent services that communicate via APIs.

  • Advantages: Manufacturing agility (faster feature launches), fault isolation (one service failure doesn’t crash the whole app), and independent scalability.
  • Challenges: Increased complexity in distributed systems, the need for reliable network communication, and difficulties in maintaining data consistency across separate databases.

Example: An e-commerce system split into “Users”, “Orders”, and “Payments” services.

AWS Lambda and Serverless Computing

12. What is AWS Lambda Service? How to use it? What are fees charged for? Discuss with an example.

AWS Lambda is a serverless compute service (FaaS) that allows developers to run code without managing servers. A function executes in response to a trigger, such as an HTTP request or a file upload.

To use it, you write a function (e.g., in Python), deploy it, and configure a trigger. Unlike containers, Lambda functions usually perform a single action and then shut down. Fees are based on the number of requests and the execution time. Example: Automatically resizing an image immediately after it is uploaded to an S3 bucket.

Containerization vs. Virtual Machines

13. What is containerization? What is the relationship between a container and a virtual machine? Present the similarities and differences.

Containerization is a lightweight virtualization approach where applications are packaged with their libraries. Docker uses OS-level virtualization to share the host kernel, making containers more efficient than VMs.

  • Similarities: Both provide isolation, improve portability, and allow multiple workloads on one host.
  • Differences: VMs include a full guest OS and run on a hypervisor, providing stronger isolation. Containers share the host OS kernel, making them faster to start and less resource-intensive.

Docker Fundamentals: Layers, Images, and Containers

14. Discuss the basic components of containerization: layer, image, and container. How to build them? Present the similarities and differences.

  • Layer: A step in the construction of an image representing a filesystem change. Layers are reusable and improve build efficiency.
  • Image: A static, read-only template created using a Dockerfile. It contains the application and all dependencies.
  • Container: A running instance of an image. It is a lightweight wrapper around a process.

The build process involves writing a Dockerfile, building the image, and then running that image to initiate a container.

AWS Elastic Beanstalk: PaaS vs. EC2 IaaS

15. Elastic Beanstalk as a service in the PaaS model. How to deploy an application in this service? What is the difference with EC2?

AWS Elastic Beanstalk is a Platform as a Service (PaaS). To deploy, a user simply uploads their code (e.g., a ZIP file) and selects the platform (Java, Node.js, etc.). The service automatically handles provisioning, load balancing, and scaling.

The difference with Amazon EC2 (IaaS) is the level of control. EC2 requires the user to manage the OS, security patches, and software installation. Elastic Beanstalk abstracts this infrastructure management, allowing developers to focus solely on code.

Common Cloud Service Models: IaaS, PaaS, and SaaS

1. Describe the most common cloud models. Indicate their advantages and disadvantages. Compare IaaS / PaaS / SaaS models.

  • IaaS (Infrastructure as a Service): Provides VMs and networking. Pros: High flexibility. Cons: High management burden.
  • PaaS (Platform as a Service): Provides a deployment platform. Pros: Faster development. Cons: Less control and vendor lock-in.
  • SaaS (Software as a Service): Delivers complete apps via the web. Pros: Simple to use. Cons: Limited customization.

Cloud Deployment Models: Public, Private, and Hybrid

2. Discuss possible types of cloud computing implementation: private, hybrid, public. Suggest an example of the use of a hybrid cloud.

  • Public Cloud: Shared resources provided by third parties (e.g., AWS).
  • Private Cloud: Dedicated infrastructure for one organization.
  • Hybrid Cloud: Combines both. Example: A bank keeping sensitive data in a private cloud while using the public cloud to handle high web traffic during peak hours.

Configuring AWS EC2 and Elastic Beanstalk

3. EC2 and Elastic Beanstalk. What are these services? An example of what cloud model is each of them? What do you need to provide to configure each of them?

Amazon EC2 is an IaaS model. To configure it, you must provide an AMI (OS image), choose an instance type (CPU/RAM), set up networking (VPC), and configure security groups and SSH keys.

AWS Elastic Beanstalk is a PaaS model. To configure it, you primarily provide the application code and select the runtime environment. It automates the underlying EC2 setup, making it a simpler solution for rapid deployment.