6.6 KiB
6.6 KiB
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
- Parallel computing:
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)
- The three tiers:
- 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
- Thin: client is only the presentation, all processing and data storage
are provided by server
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
- Poor scalability
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