245 lines
6.6 KiB
Markdown
245 lines
6.6 KiB
Markdown
# 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
|