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.

Cloud Computing Basic Working Diagram

  • 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.

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.

Cloud Computing Reference Model Layers

Cloud Computing Detailed Ecosystem and Service Categories

  • 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:

    • IaaS=Infrastructure (Virtual Machines, Storage, Network)\text{IaaS} = \text{Infrastructure (Virtual Machines, Storage, Network)}
    • PaaS=Platform for application development and runtimes\text{PaaS} = \text{Platform for application development and runtimes}
    • SaaS=Software applications ready for immediate end-use\text{SaaS} = \text{Software applications ready for immediate end-use}

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 4 GB4\,\text{GB} to 16 GB16\,\text{GB} 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.

Scalability Vertical vs Horizontal Scaling Diagram

  • 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:         Requirement Identification→Resource Request→Allocation/Provisioning→Configuration→Active Use→Monitoring→Release/Resize\text{Requirement Identification} \rightarrow \text{Resource Request} \rightarrow \text{Allocation/Provisioning} \rightarrow \text{Configuration} \rightarrow \text{Active Use} \rightarrow \text{Monitoring} \rightarrow \text{Release/Resize}

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 (Task A→Task B→Task C\text{Task A} \rightarrow \text{Task B} \rightarrow \text{Task C}).
    • Parallel Approach: Work is partitioned into subtasks executing at the exact same instant across distinct processors.

Parallel Processing Conceptual Pipeline

  • Divide-and-Conquer Methodology:

    • A primary task is partitioned into NN 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 10001000 data records:
    • Sequential Execution: A single CPU processes 10001000 records sequentially.
    • Parallel Execution: The dataset is split into 44 equal blocks of 250250 records. Cores C1,C2,C3,C4C_1, C_2, C_3, C_4 execute their respective 250250-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.

SISD Architecture Diagram

  • 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 Ci=Ai×BiC_i = A_i \times B_i 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).

SIMD Architecture Diagram

  • 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.

MISD Architecture Diagram

  • 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.

MIMD Architecture Diagram

  • 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

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.

Distributed Processing Network Architecture

  • 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.
  • 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.

Client Server Architectural Styles

  • 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.

Peer to Peer Architectural Topology

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).

Single Core to Multi Core Transition Diagram

Multicore Processor Internal Register and ALU Layout

Multicore Cache and Bus Interface Architecture

  • 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 →\rightarrow Task Decomposition →\rightarrow Task Scheduling →\rightarrow Multiprocessor Execution →\rightarrow Synchronization/Communication →\rightarrow 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.

Unit Review and Assignment Questions

  • Unit 1 Core Revision Summary Diagram:

Cloud Computing Unit 1 Visual Revision Poster

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