Network and Cloud Infrastructure - Cloud Computing, Parallel & Distributed Computing, Multicore Architecture
Fundamentals of Cloud Computing
Definition of Cloud Computing:
- Cloud computing is a model in which computing resources—including processing power, storage, databases, networking, and software—are delivered to users as a service through a network, typically the Internet.
- Instead of purchasing, housing, and maintaining physical infrastructure locally, organizations and individual users consume on-demand computing capabilities provided by cloud platforms.
Basic Working Model:
- The end-user accesses resources using client devices such as laptops, smartphones, or tablets via an Internet connection.
- The cloud infrastructure houses the underlying compute, storage, database, network, and application layers.

- Comparison: Traditional Computing vs. Cloud Computing:
- Infrastructure:
- Traditional: The organization owns, manages, and houses most or all physical hardware locally.
- Cloud: Resources are owned, maintained, and provided remotely by a third-party cloud provider.
- Scaling:
- Traditional: Demands lengthy hardware planning, procurement, installation, and setup procedures.
- Cloud: Computing capacity can be expanded or reduced on demand according to real-time workload requirements.
- Access:
- Traditional: Bound tightly to local physical infrastructure and local area networks.
- Cloud: Accessible universally over network connections via standard protocols and interfaces.
- Cost Model:
- Traditional: Demands significant initial Capital Expenditure (CapEx) for hardware and facilities.
- Cloud: Operates primarily as an Operational Expenditure (OpEx) service model where users pay for consumed services.
- Maintenance:
- Traditional: Internal IT staff handles physical hardware maintenance, repairs, hypervisors, and infrastructure upgrades.
- Cloud: The cloud vendor manages, repairs, and updates all underlying physical and virtual infrastructure.
- Infrastructure:
Cloud Computing Reference Model
- Layered Service Architecture:
- The cloud computing reference model categorizes services into distinct architectural layers, representing increasing levels of abstraction for the consumer.


Infrastructure as a Service (IaaS):
- Description: Delivers foundational computing infrastructure components, such as virtualized servers, bare-metal instances, raw storage, and virtual networking.
- User Responsibility: The client manages operating systems, middleware, runtime environments, application software, and data.
- Provider Responsibility: The provider manages physical hardware, datacenters, hypervisors, physical storage drives, and physical networking hardware.
- Examples: Amazon EC2, Amazon S3, Rightscale, vCloud.
Platform as a Service (PaaS):
- Description: Provides a complete deployment and development platform including operating systems, programming language execution environments, databases, and web servers.
- User Responsibility: Developers write, build, run, and manage application software and data.
- Provider Responsibility: The provider handles hardware, virtualization, operating system updates, database engine maintenance, and runtime scaling.
- Examples: Windows Azure, Apache Hadoop, Google App Engine, Aneka.
Software as a Service (SaaS):
- Description: Delivers fully operational, ready-to-use software applications hosted centrally over a network interface (such as Web 2.0 web browsers).
- User Responsibility: The end-user consumes application features and manages personal user configurations or data.
- Provider Responsibility: The vendor manages everything, including infrastructure, platform runtimes, source code, data backup, security patches, and app updates.
- Examples: Google Documents, Facebook, Flickr, Salesforce, Office 365, Gmail.
Reference Abstraction Memory Helper:
Core Characteristics and Benefits of Cloud Computing
Essential Characteristics:
- On-Demand Self-Service: Consumers can unilaterally provision computing capabilities (such as server execution time or network storage) automatically without requiring human interaction with each service provider.
- Broad Network Access: Capabilities are available over network infrastructure and accessed through standard mechanisms by heterogeneous client platforms (laptops, mobile phones, tablets, workstations).
- Resource Pooling: Provider resources are pooled to serve multiple consumers using a multi-tenant model, with physical and virtual resources dynamically assigned according to demand.
- Rapid Elasticity: Capabilities can be elastically provisioned and released—in some cases automatically—to scale rapidly outward and inward commensurate with demand.
- Measured Service: Resource utilization is automatically monitored, controlled, reported, and optimized using metering capabilities appropriate to the type of service (e.g., storage usage, processing hours, bandwidth, or active user accounts).
Strategic Benefits:
- Eliminates high upfront capital investments for physical hardware.
- Provides flexible, location-independent access to high-performance computing resources.
- Facilitates rapid scaling when workload volume changes.
- Enables rapid setup and fast deployment of software services.
- Grants access to enterprise-grade, shared datacenters and redundant networking.
- Supports distributed application workloads and fault-tolerant architecture.
Scalability, Elasticity, and Resource Provisioning
- Scalability:
- Definition: The structural capability of a system to handle increasing workload demands by expanding its resource capacity.
- Vertical Scaling (Scale Up): Involves increasing the hardware specifications of an existing single node (e.g., expanding server memory from to RAM or adding faster CPU cores).
- Horizontal Scaling (Scale Out): Involves adding more individual computing instances or servers to distribute execution load across multiple nodes.

Elasticity:
- Definition: The ability of a cloud environment to dynamically adjust provisioned resources up or down in direct response to real-time workload fluctuations.
- Key Distinction: Scalability represents the system's capacity to accommodate growth, whereas elasticity highlights automated dynamic provisioning according to rising or falling demand cycles.
- Practical Illustration: An online college admission portal dynamically provisions additional compute instances to process spike traffic on admission deadline days, then de-provisions unused capacity after the application window closes.
Resource Provisioning:
- Definition: The end-to-end lifecycle process of allocating, configuring, and managing physical and virtual computing resources (CPU, RAM, storage, network interfaces, virtual machines, and containers) required by an application.
- Lifecycle Sequence:
Principles of Parallel Processing
- Fundamental Concept:
- Parallel processing decomposes a large computational problem into independent subtasks executed simultaneously across multiple processing units to minimize runtime.
- Sequential Approach: Tasks execute serially ().
- Parallel Approach: Work is partitioned into subtasks executing at the exact same instant across distinct processors.

Divide-and-Conquer Methodology:
- A primary task is partitioned into subtasks using divide-and-conquer logic.
- Each subtask runs on an independent Central Processing Unit (CPU).
- Programming multi-core or multi-processor hardware using this model is defined as parallel programming.
Processing Breakdown Example:
- When processing data records:
- Sequential Execution: A single CPU processes records sequentially.
- Parallel Execution: The dataset is split into equal blocks of records. Cores execute their respective -record chunk concurrently, and the final results are aggregated.
Hardware Architectures and Flynn's Taxonomy
Flynn's Classification System:
- Classifies computer hardware based on the number of concurrent instruction streams and data streams handled simultaneously by the architecture.
Single-Instruction, Single-Data (SISD):
- Definition: A uniprocessor system executing a single instruction stream that operates on a single data stream sequentially.
- Characteristics: Instructions and data reside in primary memory; execution speed is bounded by internal data transfer bandwidth limits. Popularly termed sequential computers.
- Representative Systems: Traditional single-core IBM PCs, Macintosh computers, and early workstations.

- Single-Instruction, Multiple-Data (SIMD):
- Definition: A multiprocessor system executing a single unified instruction stream simultaneously across multiple processing elements (PEs), where each PE operates on a distinct data stream.
- Characteristics: Well-suited for vector and matrix computations in scientific computing. For example, a single statement like is broadcast to all PEs, processing vector subsets in parallel.
- Representative Systems: Cray vector supercomputers, Thinking Machines CM (Connection Machine), and modern Graphics Processing Units (GPUs).

- Multiple-Instruction, Single-Data (MISD):
- Definition: A multiprocessor architecture where different processing elements execute distinct instruction streams simultaneously while operating on the exact same data stream.
- Characteristics: Rarely used in commercial general-purpose systems; mostly restricted to specialized fault-tolerant or pipelined processing systems.

- Multiple-Instruction, Multiple-Data (MIMD):
- Definition: A multiprocessor hardware configuration where distinct processing elements execute different instruction streams on separate, independent data streams concurrently and asynchronously.
- Characteristics: Highly flexible and adaptable to almost any computing workload. Categorized into shared-memory MIMD and distributed-memory MIMD based on memory architecture.
- Representative Systems: Modern multi-core processors, multi-socket enterprise servers, and compute clusters.

- Flynn's Taxonomy Comparison Table:
- SISD:
- Meaning: Single Instruction, Single Data
- Basic Idea: One instruction operates on one data stream
- Example: Traditional single-processing pipeline
- SIMD:
- Meaning: Single Instruction, Multiple Data
- Basic Idea: One instruction operates on multiple data items simultaneously
- Example: Vector/matrix operations, GPU computing
- MISD:
- Meaning: Multiple Instruction, Single Data
- Basic Idea: Multiple instructions operate on a single shared data stream
- Example: Redundant processing, fault-tolerant flight systems
- MIMD:
- Meaning: Multiple Instruction, Multiple Data
- Basic Idea: Different processors/cores execute different instructions on different data
- Example: Multi-core CPUs, multi-processor enterprise clusters
- SISD:
Distributed Processing and System Architectures
- Distributed Processing Concept:
- Distributed processing employs multiple independent, network-connected computers or execution nodes working cooperatively to process a shared workload or deliver software services.
- Communication and coordination across nodes occur explicitly over network interconnects.

Comparison: Parallel Processing vs. Distributed Processing:
- Main Idea:
- Parallel: Simultaneous task execution utilizing multiple hardware cores/processors inside a unified system.
- Distributed: Workload processing distributed across distinct, networked computers or server nodes.
- Communication:
- Parallel: Internal communication via high-speed system buses or shared main memory.
- Distributed: Communication relies centrally on network protocols (e.g., TCP/IP, message passing).
- Location:
- Parallel: Usually confined within a single computer system or silicon chassis.
- Distributed: Typically spread across separate physical computer hardware, racks, or datacenters.
- Example:
- Parallel: Multi-core CPU dividing mathematical steps of an equation.
- Distributed: Multiple web servers and database instances handling distinct web application tasks.
- Main Idea:
Client-Server Architectural Style:
- Client applications request services, while dedicated server applications fulfill requests and return computational output or data.
- Two-Tier Architecture: Direct communication between client and server.
- Three-Tier Architecture: Introduces an intermediary application server tier between the user client and back-end database.
- N-Tier Architecture: Distributes presentation, application logic, processing, and database layers across multiple independent server instances.

- Peer-to-Peer (P2P) Architectural Style:
- A decentralized architecture where nodes (peers) act as both clients and service providers.
- Eliminates the requirement for a central server bottleneck by sharing resources across participating peers directly.

Multicore Architecture and Cloud Integration
- Multicore Architecture Essentials:
- A multi-core processor integrates two or more complete, independent execution cores inside a single integrated circuit package.
- Each core contains its own execution registers and Arithmetic Logic Unit (ALU), while sharing bus interfaces, system interconnects, and higher-level cache hierarchies (e.g., L2/L3 caches).



- Role of Multicore Systems in Cloud Computing:
- Cloud platform datacenters rely extensively on multi-core servers to optimize virtual machine density and process parallel client requests.
- Concurrent Request Handling: Web servers execute multiple incoming user HTTP requests on separate cores simultaneously.
- Database Throughput: Database systems leverage distinct processing threads mapped to multi-core processors for concurrent query execution.
- Resource Virtualization: Hypervisors allocate physical core resources dynamically to virtual machines and container runtimes.
Interaction Frameworks between Parallel Hardware and Software
Software-Hardware Interaction Principle:
- Physical hardware multi-core availability does not automatically increase execution speed. Software must explicitly decompose computational work and synchronize execution across available processors.
- Execution Chain: Application Problem Task Decomposition Task Scheduling Multiprocessor Execution Synchronization/Communication Result Merging.
Parallel Software Responsibilities:
- Decomposition: Breaking complex tasks into discrete computational sub-units.
- Task Allocation: Assigning decomposed units to processing elements.
- Communication: Exchanging state and intermediate results between tasks.
- Synchronization: Controlling task execution timing to prevent race conditions.
- Result Collection: Reassembling individual subtask outputs into a cohesive final output.
Interaction Models:
- Shared-Memory Interaction: Multiple cores read and write to a unified shared memory space (e.g., multi-core workstations).
- Distributed-Memory Interaction: Processors maintain isolated local memory spaces and communicate exclusively by passing network messages (e.g., computer clusters).
- GPU-Based Interaction: Massive parallel compute threads run concurrently on dedicated GPU cores for uniform data operations.
Key Parallel Programming Frameworks:
- OpenMP: API specification supporting shared-memory multi-threaded parallel programming on multi-core CPUs.
- MPI (Message Passing Interface): Portable, standardized message-passing system for distributed-memory nodes.
- CUDA: Proprietary parallel computing platform and model developed by NVIDIA for computing on NVIDIA GPUs.
- OpenCL: Open framework for writing programs that execute across heterogeneous platforms (CPUs, GPUs, DSPs, FPGAs).
Real-World Scenarios and Practical Applications
- Scenario to Cloud Concept Mapping:
- Online Examination System:
- Concept: Multi-core / Multi-server Cloud Processing.
- Application: Cloud infrastructure handles high concurrent student logins; web and processing requests execute simultaneously across multi-core server nodes.
- Video Streaming Platforms:
- Concept: Distributed Processing & Elastic Scaling.
- Application: Geographically distributed edge nodes serve global users; storage and bandwidth scale automatically with viewer traffic.
- College ERP System:
- Concept: Reference Model (IaaS / PaaS / SaaS).
- Application: Deploys student administrative modules, database tiers, and record storage layered on cloud service platforms.
- University Admission Portal:
- Concept: Rapid Elasticity & Auto-scaling.
- Application: Dynamically provisions additional server instances to prevent portal downtime during application deadline traffic spikes.
- Scientific Computation:
- Concept: Parallel Processing (SIMD / MIMD).
- Application: Large mathematical tasks are decomposed and processed simultaneously using GPU arrays and multi-node clusters.
- Online Examination System:
Unit Review and Assignment Questions
- Unit 1 Core Revision Summary Diagram:

- Practice Assignment Questions:
- Define cloud computing and explain the cloud computing reference model. Differentiate IaaS, PaaS, and SaaS.
- Explain the major characteristics of cloud computing.
- Explain scalability and differentiate vertical and horizontal scaling.
- What is elasticity? How is it different from scalability?
- Explain resource provisioning in cloud computing.
- What is parallel processing? Explain with an example.
- Explain SISD, SIMD, and MIMD with suitable diagrams.
- Define distributed processing. How is it different from parallel processing?
- Explain client-server and peer-to-peer architectural styles.
- What is multicore architecture? Explain its role in cloud computing.