# Introduction to cloud programming ## Client server architecture - Definition: Clients make request to server for a resource, and the server running server software make the resource available, though a response. - It is based on **Request/Response** mechanism. - Client: Request resources - Server: Provide resource ## Distributed System - Definition: Consists of hardware, software, and data components located at networked computers, which communicate and coordinate their actions using **protocols** and **passing messages**. - Distributed Computing: specialized field in cs, dedicated to the study of distributed systems. - **Advantages**: - **Modularity** - **Speed** up computation and data processing - Ease of tracking **failure** ### Characteristics - Concurrency: multiple components working on different parts of the same task at the same time - No global clock for time system, use ntp to solve the problem. - Autonomous computational entities: failure is **independent**, and is loosely coupled - Communicate by passing messages ### Parallel computing vs. Distributed computing - Parallel computing: many executions are carried out at the same time. - Done by dividing large problem into smaller parts that are carried out by different components at the same time - Use **shared** memory, and exchanges information between processors. - To speed up computation or execution - Differences: - Parallel computing: - Sharing: system whose processors use **shared memory** to run processes - Strongly coupled and has resource contention - Distributed computing: - Sharing:have their own individual memory but communicate by passing **messages** among the nodes and processors. - Loosely coupled, and distributed ### Examples - Internet - Intranets - Domain name service - Grid computing - Peer to peer (p2p) computing - Cloud computing ### Architectures #### Client-server - 2-tier architecture - Server and clients: one server and many clients - Server has storage, database and run the application - 3-tier architecture - The three tiers: - Presentation layer: User interface, runs **web server** - Business logic or application layer: functions are implemented, runs **dynamic content processing and generation** software - Data layer: data management, runs **database management system**(DBMS) - Thin and flat client - Thin: client is only the **presentation**, all processing and data storage are provided by server - Heavy lifting is done on server and network - Fat: processing is delegated to the client, foe example **application processing** - Process may be done **both** at client and server - **Balanced** distribution of processing ### Peer to peer systems - Definition: consists of nodes of computers that perform **both** client and server functionalities and capabilities - **Client** oriented: Peer machines are client computers that is connected to internet - Peer machines **autonomously** join or leave network, no master-slave relationship: **no** **central** coordination, and **no** **global** view ### Flynn's taxonomy - Definition: 4 classifications for computer architectures - SISD: Single Instruction Single Data Stream - Serial computer, no parallelism - SIMD: Single Instruction Multiple Data Streams - Some parallelism - MISD: Multiple Instruction Single Data Stream - Not popular in practice - MIMD: Multiple Instruction Multiple Data Streams - True palallel computation, most widely used - Multiple independent processors executing different instructions on different data streams - Majority of distributed system use MIMD - Basis of supercomputer architectures ## Cloud Computing ### History of Cloud computing - Started as a concept of "Utility Computing", which you can use as public utility. - Grid Computing: - Started the concept, in 1995 to mimic the electricity grid that provides electric as a utility on demand basis - Large scale distributed systems: - Collection of resources from distributed locations - General purpose middleware - Interacts with heterogeneous systems - The above gave birth to cloud computing ### Definition - A computing infrastructure, that consists of shared pool of **virtualized** hardware, software and data that are **provided** as a **services**, which scales on the demand - A form of **distributed** computing, that enables computational resources to be provided as a service - Infrastructure as software ### Features: - Enabled by **internet** - Use middle-ware to connect systems - Utility based: - Don't own or maintain the resources, but subscribe - Usage on **demand** - Elastic, can scale up and down - **Service Oriented Architecture** - Cheaper and save time ### Architecture - Front end - Cloud based delivery - Back end ## Cloud Deployment Models ### Public Cloud - Advantages: - Flexible - Reliable - Highly **scalable** - Low cost - Place independence - Disadvantages: - Less secures - Not **customizable** ### Private cloud - Advantages: - Highly **private** and **secured** - More **control** - Disadvantages: - Poor scalability - Scaled within hosted resources - Costly: - secured - More features - Inflexible pricing - Restriction, hard to expose globally ## Cloud Service Models - Common: - SaaS: Software as a service: least control - PaaS: Platform as a service - IaaS: Infrastructure as a service: most control - Incommon: - DBaaS: database - Naas: network - SECaaS: Security - DaaS: Desktop ## Technologies for cloud computing - Internet - web service - Virtualization technologies - Data center - Networking - Security - Physical hardware ## Services: - Amazon web services: AWS - Microsoft Azure - Google Cloud - Alibaba Cloud - Tencent Cloud - Baidu Cloud - IBM Cloud - Oracle Cloud - https://salesforce.com ## Applications and Job opportunities ### Jobs - Big Data and Data analytics - E-Commerce - Computationally and data intensive applications - AI - IoT - Software Development ### AWS Certification Exam - Professional: 2 years - Associate: 1 year - Foundational 6 month - Speciality: Technical experience ### MS Exam - Expert - Associate - Fundamental - Speciality ### Google Cloud Certification Exams - Data Engineer - CLoud Architect - Cloud Developer - CLoud devops Engineer - Cloud Security Engineer - Collaboration engineer - Cloud network engineer - Cloud engineer - G suite - Hybrid multi-cloud