Syllabus
Advanced concepts in cloud computing: Serverless computing, Function-as-a-Service, serverless computing architecture, public cloud (e.g.AWSLambda) and open-source (e.g.OpenFaaS) serverless platforms, Internet of Things (IoT), applications, cloud-centric IoT and layers, edge and fog computing, DevOps, infrastructure-as-code, quantum cloud computing
Topic-wise textbooks/references
Advanced concepts in cloud computing:
5.1. Serverless computing (Function-as-a-Service= FaaS) -TB1-13.4
* serverless computing architecture
* public cloud (e.g.AWSLambda)
* open-source (e.g.OpenFaaS) serverless platforms,
5.2. Internet of Things (IoT)- TB1-11.1
5.3. Applications –TB1-11.2
5.4. cloud-centric IoT- TB1-11.3
* layers
5.5. Edge and Fog computing – TB1-11.5
5.6. DevOps –TB1-14.5.3
5.7. infrastructure-as-code –TB1-14.5.4
5.8. quantum cloud computing- TB1-14.6
The keyword 'serverless' is confusing because it does not mean that essentially a server is not required; it means that developers need not manage the servers.
The serverless platform takes care of provisioning resources as per the dynamic workload; serverless overlaps with PaaS and SaaS offerings in its meaning; the serverless platform handles resource management tasks such as instance selection, auto-scaling, deployment, and fault tolerance, allowing developers to focus entirely on writing business logic code.
Serverless computing is a new paradigm in Cloud Computing for deploying and scaling applications at a functional level; FaaS enables developers to focus on business logic instead of dealing with scaling, configuring, and managing applications; the provider executes a piece of code (called a function) by dynamically allocating resources, provisioning stateless containers that terminate after execution.
In FaaS systems, functions are executed on event trigger and billed only when the function is executed; developers or end users are billed only for the execution of functions, unlike the virtual machine billing model where users pay for idle CPU and memory; serverless functions can be triggered by events such as data operations, HTTP requests, querying services, update events in business processes, and monitoring services.
The Serverless Computing Architecture (Fig-5.1.1- Serverless Computing Architecture) represents the serverless platform as an event processing system; events from HTTP Requests, Message Queues, Object Storage Notifications, and Other Event Sources pass through an API Gateway or Event Sources into Event Queues; a Dispatcher then schedules the requests to associated Function Workers that execute the code; the dispatcher can auto-scale the workers based on demand.
Fig-5.1.1- Serverless Computing Architecture
The market size of serverless applications is expected to grow at a CAGR of 21.71% and reach $36.84 billion by 2028; the evolution of serverless proliferated into two main paradigms: Serverless Runtimes and Serverless Databases; the first industry-driven serverless platform was released by AWS in 2014 as Lambda, motivated by the Open Lambda Project; in 2016, Microsoft Azure Functions, Google Cloud Functions, and IBM OpenWhisk entered the marketplace
Advantages of serverless computing:
o process agility (faster development)
o less operational cost
o faster setup
o easier operational management
o automatic scaling
o pay-per-use billing eliminating idle resource costs
o reduced complexity in infrastructure management
Public Cloud Serverless Platforms
About: It is a fully managed execution model provided by major cloud vendors (such as AWS, Google Cloud, and Azure) where the provider dynamically manages the allocation, provisioning, and maintenance of servers. It empowers developers to deploy business logic without managing underlying infrastructure; it offers built-in high availability and deep, native integrations with the provider's proprietary ecosystem (like cloud storage, databases, and message queues); and it supports seamless, automatic scaling from zero to thousands of concurrent executions using a pay-as-you-go billing model based on exact compute time used.
AWS Lambda: event-driven, supports Java/Go/PowerShell/Node.js/C#/Python/Ruby; 1 million free invocations/month, $0.20 per million after; 400,000 GB-Sec free compute time
Azure Functions: Functions (supports C#/JavaScript/F#/Java/PowerShell/Python; 1 million free invocations/month, $0.20 per million after; 400K GB-Sec limit
Google Cloud Functions: event-driven, priced in GB-Seconds and GHz-Seconds; 2 million free invocations; max 4GB memory, 1000 concurrent requests, 540-second timeout
IBM Cloud Functions: based on Apache OpenWhisk; supports microservices, cognitive data processing, serverless function composition
Cloudflare Workers
Iron.io
Open-Source Serverless Platforms
About: It is a framework for developing serverless functions using Docker containers that empowers developers to craft functions encapsulating business logic; it can be deployed across Kubernetes, Docker Swarm, on-premises, Cloud, or edge/IoT environments; it supports auto-scaling based on RPS, concurrency, and CPU usage using YAML-based templates.
OpenFaaS: OpenFaaS Gateway (core component receiving HTTP requests and managing synchronous/asynchronous invocations), NATS Streaming (for asynchronous queuing), Prometheus (monitoring infrastructure metrics - function invocation rate, execution durations - for auto-scaling), Alert Manager (evaluates scaling expressions and communicates with gateway to increase/decrease replicas), and Resource Provider (managing Kubernetes or Docker Swarm clusters).
Fig-5.1.2- OpenFaaS Interfaces or Components
OpenFaaS offers three distinct editions: Community Edition- for hobbyists, personal use, limited capabilities
Standard Edition-tailored for production workloads
Enterprise Edition-comprehensive functionality
OpenWhisk: is an open-source serverless computing platform designed to dynamically execute functions in response to incoming events at any scale; it uses Docker containers as foundational technology and supports Go, Java, .NET, PHP, Python, Ruby, Rust, Scala, and Swift; its programming environment (Fig-5.1.3- OpenWhisk Programming Environment) consists of: Feeds (event source channels), Triggers (named channels for events), Rules (associating triggers with actions), and Actions (business logic code) that produce a JSON Response; IBM's serverless offerings are predominantly built on OpenWhisk architecture.
Fig-5.1.3- OpenWhisk Programming Environment
Fission
IronFunctions
OpenLambda
Kubeless
Knative
Definition of IoT: Coined by Kevin Ashton, the Internet of Things (IoT) is a comprehensive environment that interconnects physical objects equipped with sensing and processing capabilities to the internet, enabling seamless communication "Anytime, Anyplace, with Anything and Anyone."
"Thing": In the IoT context, a "Thing" is any physical object-like an RFID-tagged package, a biochipped animal, or a smart car-equipped with unique identifiers, sensors, and actuators that allow it to communicate over the internet without human intervention.
Scale and Importance: IoT is rapidly expanding-with predictions of over 500 billion connected devices by 2030 and a multi-trillion dollar market cap-driving the development of crucial real-time applications across smart cities, transportation, and healthcare.
Historical Origin: The conceptual foundation of IoT was laid in 1982 when Carnegie Mellon University connected a modified Coca-Cola vending machine to the ARPANET to report its inventory and beverage temperatures, creating the first internet-connected appliance.
Cloud vs. Edge Computing: While most IoT applications rely on cloud computing to store data and generate control signals, the latency and privacy limitations of this cloud-centric approach have led to the adoption of edge and fog computing for real-time needs.
Sensors and Actuators: IoT systems rely on sensors to measure physical phenomena and detect environmental changes, while actuators physically respond to that data by controlling mechanisms like doors, motors, or smart lamps.
Prototyping Hardware: Microcontrollers such as the Raspberry Pi (a single-board computer) and Arduino (programmable boards) enable the rapid prototyping of IoT applications by seamlessly integrating these sensors and actuators.
Gateway Layer: The Gateway Layer handles sensor data acquisition using physical network protocols (like Wi-Fi, Bluetooth, ZigBee, and LoRaWAN), while relying on application-level protocols (like HTTP and MQTT) to make that data accessible to external entities.
Cloud Layer: The Cloud Layer is responsible for storing and processing the zettabytes of data generated by these devices, utilizing big data analytics tools like Apache Hadoop and machine learning algorithms to interpret the information.
Smartphones as Gateways: Equipped with powerful CPUs, embedded sensors, and 4G/5G connectivity, smartphones can act as highly effective IoT gateway devices by either delegating tasks to cloud providers or offloading resource-intensive operations to cloud servers.
A wide range of IoT applications are being used in different domains such as smart home, smart city, smart healthcare, smart workplace, smart agriculture, and various ubiquitous computing areas, as shown in (Fig. 5.3.1-Internet of Things Applications in Different Domains); IoT applications span all these domains by connecting physical things to cloud services that process sensor data and send control signals back to actuators.
Fig. 5.3.1-Internet of Things Applications in Different Domains
Smart Home: IoT enables home automation, ambient assisted living, video surveillance, and real-time monitoring; connected appliances such as air conditioners, refrigerators, and microwave act as things; with home automation, IoT monitors and controls lighting, climate, entertainment systems, and appliances; in ambient assisted living, elderly people and people with disabilities can be monitored continuously for medical emergencies such as falls or seizures; real-time monitoring includes home security such as access control and video surveillance.
Smart City: IoT case studies in smart city focus on connected utilities (meters that automatically collect water, electricity, and gas usage for auto-billing), smart traffic control systems (real-time monitoring of traffic and auto-changing of traffic lights for better management, safety, and reliability), smart public transportation, electronic toll collection systems, and smart parking; smart traffic systems can communicate with smart vehicles, ultimately leading toward autonomous vehicles.
Smart Healthcare - Internet of Medical Things (IoMT): IoMT is aimed at realizing digitized healthcare systems by connecting medical resources and healthcare services; IoMT devices enable remote health monitoring using devices such as heart rate and blood pressure monitors, electronic wristbands, and smart beds monitoring patient sleep patterns; the data can be analyzed on the cloud and devices can be integrated with emergency notification systems; these home-hospital systems were shown to be effective in monitoring COVID-19 patients during the pandemic.
Smart Factory and Industrial IoT (IIoT): IIoT deals with safety in human-robot shared workspace, connected production line, connected warehouse, connected shipment, and logistics; smart factories use sensors such as Frequency-Modulated Continuous Wave (FMCW) radars for environment sensing and distance measurement; human position detection is crucial for workers' safety; connected production lines enable smart manufacturing through swift response to product demands and supplies, and predictive production.
Smart Agriculture: IoT things deployed for collecting sensor data on temperature, humidity, soil moisture, rainfall, pest infestation, and soil content can be used to automate irrigation management and farming techniques; for example, farmers can monitor soil moisture and temperature in deciding when to apply more fertilizers and for precision irrigation; drones can monitor pest infestation based on captured videos and spray pesticides on demand; further IoT applications deal with connected animals, plants, agriculture equipment, packing, and shipping.
Environmental Protection: IoT applications in this domain deal with sensors for monitoring air or water quality, atmospheric or soil conditions; for example, buoys equipped with sensors are deployed at the Great Barrier Reef in Australia to collect biological, physical, and chemical data and join it with maritime traffic to provide suggestions to minimize and prevent coral reef damage; similar IoT applications are possible for earthquake or tsunami early-warning systems; IoT is also demonstrated for monitoring wildlife movements and habitats.
Smartphone-Based IoT Applications: Today's advanced smartphones have inbuilt sensors such as accelerometer and gyroscope; these sensors can analyze user activities such as walking, running, sitting, and reading; combined with smartphone-connected electronic wristbands measuring heart rate and oxygen saturation levels, they can be used in designing and developing different IoT-based fitness and healthcare applications.
IoT Platforms: In large-scale IoT environments, managing a huge number of devices and automating their configurations is challenging; several IoT platforms have been developed providing solutions for device discovery, managing connectivity and configuration, software patch updates, and data management for billions of devices; IoT platforms mainly provide middleware and infrastructure that enables end-users to interact with smart objects seamlessly.
The Cloud Layer in IoT predominantly uses message brokers and big data frameworks; for analyzing collected IoT data, different statistical analysis tools, MapReduce-based distributed data processing (Apache Hadoop, Aneka MapReduce, Apache Spark), and streaming solutions (Apache Kafka buffer feeding Apache Storm and Apache Spark streaming) are employed; machine learning tasks such as collision prediction in connected vehicles or medical emergency prediction in remote patient monitoring can be performed on sensor data; once emergencies are predicted, control signals are sent back to actuators via gateway devices.
IoT applications predominantly follow the Cloud-centric IoT (CIoT) model, where sensor data is collected from things and sent to the cloud where it is processed, and control signals are sent back to the devices; for example, in a smart environment, a device deployed in a seminar room can measure temperature, CO₂, and humidity levels, whose values are sent to the cloud where a customized algorithm decides when to open the door or window for fresh air.
The Layers of Cloud-Centric IoT (CIoT) in (Fig. 5.4.1 - Layers of Cloud-Centric Internet of Things) consist of three layers:
(1) Sensing and Smart Devices Layer - deals with the things;
(2) Connectivity/Gateway Layer - deals with sensor data acquisition and provisioning; and
(3) Cloud Layer - deals with storing and processing the acquired data in generating respective domain-specific control signals.
Fig. 5.4.1 - Layers of Cloud-Centric Internet of Things
Sensing and Smart Devices Layer: This layer primarily consists of IoT devices with sensing and actuating capabilities;
o IoT devices are physical objects such as electronic wristbands, smart fridge, and smart car with sensing, processing, and actuating capabilities; a sensor identifies/measures a physical phenomenon by producing an output signal; actuators control physical objects;
o microcontrollers such as Raspberry Pi and Arduino support rapid prototyping of IoT applications. Raspberry Pi is a series of single-board computers powered by a Broadcom SoC with an integrated ARM-compatible CPU and GPU; it has GPIO capabilities for directly integrating sensors; it connects to Arduino boards using USB or Wi-Fi; Raspberry Pi is targeted for environment monitoring and robotics applications; Arduino boards have digital and analog I/O pins that interface with various shields (expansion boards) and circuits; Arduino has a built-in ADC chip for converting analog-to-digital; both are programmed using C and C++.
Gateway/Connectivity Layer: The connectivity layer primarily deals with sensor data acquisition and provisioning; gateway devices collect the data from different sensors and make it accessible to the external entities; in most CIoT applications, data collected at the gateway devices is sent to the cloud for further processing; gateway devices are also responsible for communicating control signals received from the cloud layer to the respective IoT devices with actuation capabilities.
o Communication Protocols in the Gateway Layer include: ZigBee (most popular low power, low cost, wireless mesh networking standard in IoT, connects to the Internet using Ethernet or Wi-Fi gateway), Z-Wave (facilitates device-to-device D2D communication in smart home applications), 6LoWPAN (IPv6 over Low-power Wireless Personal Area Networks for IP-based communication in low-powered devices), NFC and RFID (short distances, few centimeters to a few meters), LPWAN/LoRaWAN and Sigfox (long distances 2-50 km, low-powered, low-cost, low-bit rate, two-way secure communication).
o Mobiles as Gateway Devices: Smartphones can act as gateway devices in realizing interesting IoT scenarios because they have good CPU and memory capabilities, embedded hardware (camera, Wi-Fi), in-built sensors (GPS, accelerometer, gyroscope), and access to user preferences; mobile communication technologies 4G and 5G enable wireless communication between smartphones and cloud; two binding models exist: Task delegation (SOA model invoking services from multiple cloud providers) and Mobile code offloading (resource-intensive operations offloaded to cloud-based surrogate machines).
Cloud Layer: The cloud layer deals with storage and processing of sensor data acquired from gateway devices; with billions of connected devices, data would be in the order of zettabytes (10²¹); application-level data exchange protocols from gateways to cloud include HTTP, MQTT (Message Queuing Telemetry Transport), XMPP (Extensible Messaging and Presence Protocol), CoAP (Constrained Application Protocol), and AMQP (Advanced Message Queuing Protocol); the cloud can also use pull-based mechanisms for extracting sensor data directly from gateway devices.
Big Data Analytics in the Cloud Layer: The results of IoT data analysis can be displayed as consolidated graphs; MapReduce-based distributed data processing is common using Apache Hadoop, Aneka MapReduce, and in-memory alternatives such as Apache Spark; for big streaming data, message queues such as Apache Kafka buffer and feed data into stream processing systems such as Apache Storm and Apache Spark streaming; sensor data analytics can also involve ML tasks such as collision prediction in connected vehicles or medical emergency prediction in remote patient monitoring
CIoT Limitations and Need for Edge/Fog: While CIoT architecture facilitates developing a wide range of applications, it has certain limitations - in the last two decades the number of connected devices increased significantly and the amount of data increased exponentially to zettabytes; a self-driving vehicle generates gigabytes of data per second (route, speed, car-operating condition, traffic situation, real-time video streaming, weather etc.); with CIoT, all data must be sent to the cloud creating heavy network load and high latency; connected vehicles require responses of a few milliseconds making CIoT impractical; certain scenarios (healthcare) do not allow data to move to the cloud due to privacy regulations.
Edge and Fog Computing have come into picture to address the limitations of CIoT; Fog computing, coined by CISCO, primarily projects the idea of pushing the computation to as low as possible in the CIoT hierarchy so that the latency and privacy requirements of IoT applications can be satisfied; Edge Computing refers to performing data analytics on the edge nodes (the IoT devices themselves) using their local processing capability.
(a) The Hierarchical Fog Computing Architecture (Fig. 5.5.1 - Hierarchical Fog Computing Architecture) shows edge nodes (sensors, actuators, mobile phones, smart vehicles), gateway devices (access points, mobile phones, UAVs), fog nodes (Cisco Iox, switches, cloudlets, CPE -both proximal and geo-distributed), core network, and a centralized data center/cloud; together these form a hierarchy that processes data at different levels to reduce latency and bandwidth consumption.
Fig. 5.5.1 - Hierarchical Fog Computing Architecture
· Edge Nodes: They are called edge nodes as they are at the edge of the network/internet; the things of IoT fall into this category; edge nodes can be without processing capability (e.g., a gift box with RFID) or can have some processing capability (e.g., a connected vehicle with an on-board computer for processing sensor data); processing at edge nodes gave rise to the edge computing concept; however, the processing that can be performed on edge nodes is generally limited.
· Gateway Devices: Gateway devices are responsible for collecting sensor data and making it accessible to external entities; they are also responsible for delivering control signals back to the edge nodes; usually, gateway nodes have better storage and processing capabilities than edge nodes; for example, a Roadside Unit (RSU) at traffic signals can collect surveillance videos and information from connected vehicles, which can be utilized in realizing smart traffic management scenarios.
· Fog Nodes: Fog nodes are any proximal computational resources that can be utilized for data storage and processing in IoT applications; fog devices can be network switches, routers, gateway devices, customer premise equipment (CPE) such as desktops/laptops, and even private clouds in proximity; fog nodes can facilitate intelligent transportation through smart connected vehicles and smart traffic lights that can detect pedestrians/cyclists on the road and measure vehicle speed; fog nodes can also be mobile (UAVs and smartphones as part of the fog network).
· Cloud Data Center: Fog computing as a concept includes all the proximal processing at the edge devices, gateway nodes, and other fog nodes, only excluding the processing at the centralized cloud; fog computing is not a replacement for the cloud but assists the cloud in realizing certain niche requirements of IoT applications; some tasks such as large-scale data analytics for planning smart event management require gathering data from multiple sources and huge computational resources available only at centralized data centers.
(b) Aneka based Fog and Cloud Computing Architecture: Aneka, a platform for building scalable cloud and enterprise applications using Task, Thread, and MapReduce programming APIs. It highlights how Aneka's lightweight architecture allows it to be used in edge and fog computing, bringing data processing closer to IoT sensors and resource pools.
· The Aneka Fog Computing Architecture (Fig. 5.5.2 - Aneka Fog Computing Architecture) consists of three layers:
o Edge Computing Layer (data acquisition from sensors - video cameras, temperature, oximeter, CO₂ sensor, moisture sensor; perform preliminary data operations like compression and aggregation; send aggregated data to Aneka master node in Fog layer via MQTT or HTTP)
o Fog Computing Layer (collect data processing requests via MQTT/HTTP; Aneka Master distributes processing requests over worker nodes; uses Aneka SDK and APIs - Thread, Task, MapReduce)
o Cloud Computing Layer (Aneka Cloud nodes on LAN-connected desktops; mostly for storing processed data and actuating business processes).
Fig. 5.5.2 - Aneka Fog Computing Architecture
· Typical Use Cases of Aneka Fog Clouds: soil monitoring system, CO₂ monitoring in large buildings during COVID situation, object detection in video streaming applications (checking for worn mask or not in airports), safety observation and alerting in industrial environments using object detection, predictive maintenance of industrial applications, predictive maintenance of networking devices, and ECG data analysis in healthcare applications.
· EdgeLens Framework: EdgeLens (Fig.5.5.3 - Experimental Setup of EdgeLens Using Aneka) is a deep learning-based object detection framework designed for deployment in fog-cloud environments; the framework adapts to specific requirements of applications or users, offering modes of service that prioritize high accuracy or low latency;
Fig.5.5.3 - Experimental Setup of EdgeLens Using Aneka
the framework tested software performance in terms of accuracy, response time, jitter, network bandwidth, and power consumption; the user's mobile phone acts as an edge gateway capturing images, Aneka Master resides at fog node in Melbourne Australia, and Aneka Workers reside on Azure cloud in Victoria (Australia) and Virginia (US) - sample output shown in (Fig-5.5.4- Sample Input and Output Showing in the End User Mobile Phone).
Fig-5.5.4- Sample Input and Output Showing in the End User Mobile Phone
Advantages of Edge and Fog Computing over pure CIoT:
o Low Latency - processing near the data source reduces response time to milliseconds needed by real-time applications;
o Bandwidth Reduction - only relevant data is sent to the cloud instead of raw sensor data;
o Privacy and Security - sensitive data (healthcare) can be processed locally without leaving the country borders;
o Reliability - works even without continuous network connectivity;
o Scalability - offloads cloud processing by distributing computation across fog and edge nodes;
o Context Awareness - decisions can be made locally based on real-time local context.
* DevOps = Development (Dev) and Operations (Ops)
* CI/CD = Continuous Improvement and Continuous Development
* CI/CD is the backbone of DevOps
* DevOps is the best method used in automating the process(es) in Software Engineering
* DevOps is an evolution of the agile software development model
· The DevOps Pipeline consists of eight phases shown in (Fig-5.6.1 - Phases of a DevOps Pipeline):
(1) Plan - requirements or feedback from previous iterations gathered from customers/stakeholders, used to build a product roadmap divided into smaller tasks;
(2) Code - development of the source code;
(3) Build - once code is committed to shared repository, automated process builds the codebase and runs unit tests, end-to-end, and integration tests notifying the developer of issues;
(4) Test - successful build is deployed automatically to a staging environment using IaC to simulate final deployment and perform manual/automated tests.
Fig-5.6.1 - Phases of a DevOps Pipeline
(5) Release - point at which a build, after thorough testing, is ready for deployment into production; organizations can control when and how builds are released (manual approval, regular release schedule, or milestone);
(6) Deploy - build is released into production; IaC used to build test environment can also be configured to prepare the production environment; new and existing production environments run simultaneously with new requests routed to new environment, eventually replacing existing one
(7) Operate - operations team ensures everything runs smoothly, environment automatically scales up and down based on configuration, and feedback from customers is acquired;
(8) Monitor - periodically collects data and performs analytics on customer behavior, performance, and errors, completing the loop.
Continuous Integration (CI) and Continuous Delivery (CD) are DevOps tactics that make use of multiple automated tools to realize agile software development; with CI, developers make incremental code changes regularly and reliably - CI triggers automated build and test phases, which ensure reliable merging of code changes into the repository; the code is then quickly delivered and effortlessly deployed on the production environment as a part of the CD process, again using automated tools and processes such as IaC.
DevOps emerged because agile methodology, while a good model for software development, still left scope for configuration mismatch between test and production environments; the agile model proposes that development and testing take place in the developer's computer with continuous customer involvement, but when performed in the developer's premises, there can be configuration mismatch between test and production environments resulting in deployment issues; DevOps teams avoid this by working in silos no longer and using shared environments managed by IaC.
key benefits of DevOps: faster time-to-market through CI/CD automation, improved collaboration between development and operations teams, consistent and repeatable deployment processes through IaC, early detection of bugs through continuous testing, rapid customer feedback through monitoring, improved reliability and scalability through automated operations management, and reduced manual errors in infrastructure provisioning and configuration.
Infrastructure-as-Code (IaC) is a crucial part of realizing DevOps practices and CI/CD; traditionally, developers manually provision and manage servers, operating systems, storage nodes, and supplementary infrastructure components every time they develop or deploy a release; with cloud computing, the number of infrastructure components in an application has grown significantly and infrastructure management has moved from physical hardware in private data centers to virtual machines and containers in remote cloud data centers, making manual deployment very complex.
IaC proposes infrastructure provisioning and management through code instead of through manual processes; templates are prepared with configuration parameters for the required infrastructure specifications; these templates make it simpler to edit and distribute configurations and ensure that identical environment is provisioned every time; orchestrators utilize the templates in realizing the expected deployment setup with both hardware and software specifications.
The templates in IaC are managed through the same version control that the other source code of the application utilizes; templates can be modularized, and thus IaC also implies that the deployment process can be divided into modular components which through automation can then be combined in different ways; IaC enables Infrastructure to be treated like software - it can be versioned, tested, reviewed, and collaborated on just like application code.
o Chef is a popular configuration management tool written in Ruby and Erlang; with Chef, system configuration is defined using a domain-specific language (DSL) using pure-Ruby language; the configurations are called 'recipes' which can be used for configuring and maintaining local servers as well as integrating with cloud-based platforms such as Amazon EC2, Microsoft Azure, Google Cloud Platform, and OpenStack, by automatically provisioning and configuring new machines; recipes also describe how Chef manages server applications and software such as Apache HTTP Server and MySQL database.
o Puppet is another software configuration management tool that uses its own declarative language to accomplish stages of the IT infrastructure lifecycle; it supports provisioning, configuring, and managing infrastructure in data centers and cloud infrastructures, as well as installing and managing operating system and application components; system resources and their state can be described using Ruby DSL or Puppet's declarative language in files called 'Puppet manifests'; Puppet follows Model Driven Architecture (MDA), a software design approach for development of software systems.
o Ansible is a software suite with tools supporting software provisioning, configuration management, and application deployment, enabling IaC; Ansible is designed to configure both Unix-like systems and Microsoft Windows; unlike Puppet or Chef, Ansible is agentless and uses temporary remote connections to the machines via SSH or Windows Remote Management (WinRM) for configuration management; system configuration is defined using its own declarative language in simple plain text files using YAML format; the complete system configuration is called Ansible's inventory which includes modules specific to each machine.
o Terraform is an IaC tool from HashiCorp that supports several cloud infrastructure providers such as Amazon Web Services, Microsoft Azure, IBM Cloud, Google Cloud Platform, and OpenStack; users define the data center infrastructure using HashiCorp Configuration Language (HCL), a declarative configuration language, or optionally by using JSON; Terraform manages external cloud resources - both public and private - with 'providers'; HashiCorp maintains several official providers, and custom providers can also be integrated for providing declarative configuration to describe the desired final state of the cloud application.
Proprietary IaC Solutions: In addition to open-source tools, public cloud providers also provide several proprietary IaC solutions such as Amazon Web Services (AWS) CloudFormation, Google Cloud Platform (GCP) Cloud Deployment Manager, and Microsoft Azure Resource Manager; these native IaC tools are tightly integrated with their respective cloud platforms but may introduce vendor lock-in since the templates are cloud-provider-specific.
Key advantages of IaC:
o Consistency - identical environments are provisioned every time, eliminating manual configuration errors;
o Speed - infrastructure can be provisioned in minutes rather than hours or days;
o Version Control - infrastructure changes can be tracked, reviewed, and rolled back just like code;
o Reusability - modular templates can be reused across different projects and environments;
o Documentation - the IaC templates themselves serve as documentation of the infrastructure;
o Cost Efficiency - automated provisioning reduces the need for dedicated system administration expertise
o Scalability - infrastructure can be scaled up or down easily by modifying templates.
(a) Quantum computing is a new computing paradigm involving multiple fields such as computer science, physics, and mathematics which leverages quantum mechanics theory to solve complex problems faster than classical computers; it can solve complex problems in machine learning (ML), optimization problems in finance, chemical systems, drug discovery, and simulation of physical systems faster than classical supercomputers; researchers discovered that quantum computing can solve problems faster than classical computers in recent decades.
· The fundamental reason for faster computation with quantum computing is the use of qubit (quantum bit) - a basic unit of computation that holds more than one distinct state (both 0 and 1) as shown in (Fig-5.8.1- Notion of Bit vs. Qubit); a qubit is a unit of information encoded in quantum particles; the processing of qubits by control devices at the core of a quantum computer determines the speed of the processor; quantum computers are encompassed with subatomic particles like electrons and photons as a basic unit of computation.
Fig-5.8.1- Notion of Bit vs. Qubit
Fig-5.8.2- Notion of Superposition and Entanglement
Quantum computers use three principles of quantum mechanics - Superposition, Entanglement, and Decoherence - shown in (Fig-5.8.2- Notion of Superposition and Entanglement):
o Superposition means two or more quantum states are added and the corresponding result is another valid quantum state; a qubit is represented as α|1> + β|0> where α, β are mixing coefficients - this allows quantum computers to process millions of operations simultaneously;
o Entanglement is linking of multiple qubits where one determines what happens to others, performing calculations nearly instantly;
o Decoherence is the loss of quantum state in the qubit (qubit decay) due to radiation or temperature changes - reducing decoherence is the key challenge in designing quantum computers.
The key components of a quantum computer consist of quantum hardware with three entities: quantum data plane, control and measurement plane, and control processor plane with host processor;
quantum software is used for quantum algorithms using quantum circuits; historical milestones:
o 1981 - Feynman urged designing quantum computers;
o 1992 - Deutsch-Jozsa deterministic algorithm;
o 1994 - Shor's algorithm (factor large integers);
o 1996 - Grover's algorithm (substantially reduces search time).
o 1998 - first demonstration using 2-qubit NMR quantum computer;
o 2000 - IBM proposed minimal requirements;
o 2011 - D-Wave launched first commercial quantum computer;
o 2016 - IBM Quantum lab enabled cloud-based services;
o 2017 - Qiskit software released; algorithm milestones:
(b) Quantum Cloud Computing enables quantum services to be leased for organizations, companies, academia, and other users as cloud services; quantum cloud essentially employs quantum principles in a distributed computing environment; physical quantum computers are complex - according to IBM, a typical quantum computer could be the approximate size of a car along with cooling systems to cool the superconducting processor; therefore, it is ideal to lease quantum resources from cloud service providers and execute quantum algorithms for various applications.
IBM Quantum Cloud Services: IBM started offering quantum cloud services in 2016 and offers the utility scale of greater than 100 qubit quantum system over the cloud along with scalable and feasible quantum software; IBM quantum platform offers quantum systems at several geographical locations including Mumbai, Brisbane, Kyiv, with 127 qubits; use of quantum cloud services is based on pay-as-you-go mode, premium plan, or free for trying out; developers can build quantum circuits and operators using Qiskit, and run and deploy them on quantum systems using Qiskit runtime; services include advanced runtime compilation, error suppression, and error mitigation.
AWS Quantum Cloud Services: AWS started offering quantum services in 2020 with Amazon Braket, where developers and researchers can explore potential applications of quantum systems; Amazon Braket provides a development environment to design quantum algorithms using circuits and test them on simulated quantum systems and further run them on real quantum hardware; Amazon offers services at US-East (N. Virginia), US-West (Oregon), and US-West (N. California) AWS regions; pricing of AWS quantum services uses quantum processing units (QPU) with two versions: per-shot fee and per-task fee (e.g., IonQ quantum hardware with Harmony QPU family has $0.030000 per task and $0.01000 per shot price).
Azure Quantum Cloud Services: Azure Quantum is the cloud quantum computing service offered in the Azure cloud; Azure provides a Copilot chatbot for writing quantum algorithm code; Azure Quantum Workspace is an ecosystem of quantum services for running optimization applications; Azure also provides hybrid quantum computing where developers utilize classical and quantum architecture to solve problems, mixing classical and quantum instructions; Azure Quantum has SDKs such as Q#, Qiskit, and Cirq; developers write code once and run it on multiple quantum hardware architectures; it is also free and accessible through Jupyter notebooks with various simulators and emulators.
Important Questions (2Marks):
1. What is serverless computing? Compare open-source and public cloud serverless computing.
2. Define IoT. List any five domains of IoT applications.
3. What is CIoT? Compare CIoT, Edge and Fog IoT based cloud computing techniques.
4. Compare Hierarchical Fog computing and Aneka based Fog/Cloud computing.
5. Why is DevOps an important methodology in cloud/software computing/engineering? (definition, concept of agility, CI/CD relation)
6. What is IaC? Explain its significance.
Infrastructure as Code (IaC) is a fundamental way of applying DevOps principles to cloud computing
7. In reference to Quantum Computing, explain the below terms/notations:
(a) Qubit, |1⟩ and |0⟩
(b) Superposition
(c) Entanglement
(d) Decoherence
Important Questions (Essay): (1, 3, 6, 7, 8)
1. Explain “Serverless Computing”. Discuss about any two computing service providers for each mentioned below:
(a) public-serverless computing
(b) open-source serverless computing
2. Define IoT. Discuss various domains of IoT applications.
3. Explain clearly the three layers of Cloud-Centric-IoT.
4. Explain about Hierarchical Fog/Cloud Computing architecture.
5. Explain Aneka based Fog /Cloud computing architecture.
6. Explain the eight-phases of DevOps.
7. Define IaC and explain its significance in modern DevOps practices.
8. Give inference to Quantum based Cloud Computing of below service providers:
(a) IBM
(b) AWS
(c) Azure
Mastering Cloud Computing-Powering AI, Big Data and IoT Applications - 2e- Rajkumar Buyya, Christian Vecchiola, Thamarai Selvi, Sivananda Poojara, Satish N. Srirama