Cloud Computing Flashcards
योग: कर्मसु कौशलम्
Introduction to Cloud Computing
- The ACM Computing Curricula 2005 defines computing as any goal-oriented activity that requires or benefits from computers.
- This includes designing and building hardware and software systems, processing and managing information, conducting scientific studies, creating intelligent systems, using communication and entertainment media, and gathering information.
Cloud Computing Course Overview
- I. Introduction to Cloud Computing
- Overview of Computing
- Cloud Computing (NIST Model)
- Properties, Characteristics & Disadvantages
- Role of Open Standards
- II. Cloud Computing Architecture
- Cloud computing stack
- Service Models (XaaS)
- Infrastructure as a Service (IaaS)
- Platform as a Service (PaaS)
- Software as a Service (SaaS)
- Deployment Models
- III. Service Management in Cloud Computing
- Service Level Agreements (SLAs)
- Cloud Economics
- IV. Resource Management in Cloud Computing
- V. Data Management in Cloud Computing
- Looking at Data, Scalability & Cloud Services
- Database & Data Stores in Cloud
- Large Scale Data Processing
- VI. Cloud Security
- Infrastructure Security
- Data security and Storage
- Identity and Access Management
- Access Control, Trust, Reputation, Risk
- VII. Case Study on Open Source and Commercial Clouds, Cloud Simulator
- VIII. Research trend in Cloud Computing, Fog Computing
Trends in Computing
- Distributed Computing
- Grid Computing
- Cluster Computing
- Utility Computing
- Cloud Computing
Distributed Computing
- Distributed computing is a field of computing science that studies distributed systems and uses them to solve computational problems.
- A distributed system consists of several autonomous computational entities, each with its own local memory, communicating through message passing.
- Processors communicate through high-speed buses or telephone lines, each with its own local memory.
Example Distributed Systems
- Internet
- ATM (bank) machines
- Intranets/Workgroups
- The computing landscape will consist of ubiquitous network-connected devices.
Computers in a Distributed System
- Workstations: Computers used by end-users.
- Server Systems: Computers providing resources and services.
- Personal Assistance Devices: Handheld computers connected via wireless communication.
Common Properties of Distributed Computing
- Fault tolerance: The system continues to function even if some nodes fail, albeit with reduced performance. Status checks of each node are necessary.
- Partial role: Each computer has a limited view of the system and may know only a part of the input.
- Resource sharing: Users can share computing power and storage resources.
- Load Sharing: Distributing tasks to nodes helps balance the overall system load.
- Easy to expand: Adding nodes should be quick and seamless.
- Performance: Parallel computing is a subset of distributed computing.
Why Distributed Computing?
- Nature of application
- Performance
- Computing intensive: Tasks that consume a lot of time (e.g., Computation of Pi value using Monte Carlo simulation).
- Data intensive: Tasks dealing with large amounts of data (e.g., Facebook, LHC experimental data processing).
- Robustness: No Single Point Of Failure (SPOF); other nodes can execute tasks from failed nodes.
Distributed Applications
- Applications consist of processes distributed across a network working together to solve a common problem.
- Historically, client-server models were common with centralized resource management at the server.
- Peer-to-peer computing represents a movement towards more truly distributed applications.
Client-Server vs. Peer-to-Peer
- Client-Server: Clients invoke individual servers, central server
- Peer-to-Peer: A distributed application consists of peer processes sharing objects which connects peers to each other
Grid Computing
- Pcwebopedia.com: Grid computing harnesses unused processing cycles of all computers in a network to solve intensive problems.
- IBM: Grid computing virtualizes distributed computing and data resources, creating a single system image for seamless access.
- Sun Microsystems: Grid Computing is a computing infrastructure that provides dependable, consistent, pervasive and inexpensive access to computational capabilities.
Electrical Power Grid Analogy
- Electrical Power Grid: Users access electricity without needing to know how it is generated.
- Grid: Users access computing resources without needing to know their location or underlying technologies.
Grid Computing Characteristics
- Share more than information: Data, computing power, applications in dynamic environment, multi-institutional, virtual organizations.
- Efficient use of resources at many institutes. People from many institutions working to solve a common problem (virtual organisation).
- Join local communities.
- Interactions with the underneath layers must be transparent and seamless to the user.
Need for Grid Computing?
- Modern science/research relies on computations, data analysis, data visualization & collaborations.
- Computer Simulations & Modelling are more cost-effective than experimental methods.
- Scientific and Engineering problems are becoming more complex & users need more accurate, precise solutions quickly.
- Data Visualization is becoming very important.
- Exploiting under utilized resources.
Who Uses Grid Computing?
- Detection and Modeling
- Natural Disasters
- Crystallography
- Reactor Applications
- Physics Applications
- Weather Forecast
- Material Characterization
Types of Grids
- Computational Grid: Provides secure access to shared processing power for high throughput and computation-intensive applications.
- Data Grid: Supports data storage, discovery, handling, publication, and manipulation of large volumes of data in heterogeneous systems.
- Collaboration Grid: Facilitates advanced collaboration using the grid, allowing virtual enterprises to work on components of a CAD project without disclosing proprietary technologies.
- Network Grid: Provides fault-tolerant, high-performance communication services, with each node acting as a data router with caching.
- Utility Grid: Shares data, computation cycles, software, and other resources, providing software and special equipment as services.
Grid Components
- Users
- Large and dynamic population
- Different accounts at different sites
- Personal and confidential data
- Heterogeneous privileges (roles)
- Desire Single Sign-On
- Sites
- Grid
- Heterogeneous Resources
- Access Patterns
- Local policies
- Membership
- Groups
Cluster Computing
- A cluster is a type of parallel or distributed computer system consisting of interconnected stand-alone computers working together as a single integrated computing resource.
- Key components include multiple standalone computers (PCs, Workstations, or SMPs), operating systems, high-performance interconnects, middleware, parallel programming environments, and applications.
Cluster Computing?
- Clusters improve speed and/or reliability over a single computer while being more cost-effective.
- Network: Faster, closer connection than a typical network (LAN).
- Low latency communication protocols.
- Loosely coupled than SMP.
Types of Cluster
- High Availability or Failover Clusters
- Load Balancing Cluster
- Parallel/Distributed Processing Clusters
Cluster Components
- Cluster Nodes
- Cluster Network
- Network Characterization
Key Operational Benefits of Clustering
- System availability: Offers inherent high system availability due to the redundancy of hardware, operating systems, and applications.
- Hardware fault tolerance: Redundancy for most system components (e.g. disk-RAID), including both hardware and software.
- OS and application reliability: Run multiple copies of the OS and applications, and through this redundancy.
- Scalability: Adding servers to the cluster or by adding more clusters to the network as the need arises or CPU to SMP.
- High performance: (running cluster enabled programs)
Utility Computing
- Utility Computing is a service provisioning model where computing resources and infrastructure management are made available to the customer as needed, and charges them for specific usage rather than a flat rate.
- Advantages include low or no initial cost, with computational resources essentially rented.
- It is analogous to other services, such as electrical power, with pay-per-use approach.
- Involves virtualization so that the amount of storage or computing power available is considerably larger than that of a single time-sharing computer.
“Utility” Computing ?
a) Pay-for-use Pricing Business Model
b) Data Center Virtualization and Provisioning
c) Solves Resource Utilization Problem
d) Outsourcing
e) Web Services Delivery
f) Automation
Utility Computing Example
- On-Demand Cyber Infrastructure using Virtual Machines, Clusters, and Web Services.
Utility Solution
- Consumer vs Provider perspectives on pricing, security, resource utilization, service assurance (SLA), technology refresh, etc.
Utility Computing Payment Models
- Various charging models: flat rate, tiered, subscription, metered, pay as you go, standing charges, much like gas, electricity, telecommunications, water, television broadcasting.
- Different pricing models for different customers based on factors such as scale, commitment and payment frequency
Risks in a UC World
- Data Backup
- Data Security
- Partner Competency
- Defining SLA
- Getting value from charge back
Cloud Computing
- NIST defines Cloud computing as a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources that can be rapidly provisioned and released with minimal management effort or service provider interaction.
Essential Characteristics
- On-demand self-service: Provisioning computing capabilities unilaterally and automatically without human interaction.
- Broad network access: Capabilities available over the network through standard mechanisms, promoting use by heterogeneous client platforms.
- Resource pooling: Provider's computing resources are pooled to serve multiple consumers using a multi-tenant model, dynamically assigned and reassigned according to consumer demand.
Cloud Characteristics
- Measured Service: Automatic control and optimization of resource use with monitoring, control, and reporting for transparency.
- Rapid elasticity: Capabilities can be elastically provisioned and released to scale rapidly with demand. Provisioning often appears unlimited.
Common Characteristics
- Massive Scale
- Resilient Computing
- Homogeneity
- Geographic Distribution
- Virtualization
- Service Orientation
- Low Cost Software
- Advanced Security
Cloud Services Models
- Software as a Service (SaaS)
- Use the provider’s applications running on a cloud infrastructure, accessible from client devices through a thin client interface or program interface.
- The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, storage, or even individual application capabilities
- Example: Google Spread Sheet
- Cloud Infrastructure as a Service (IaaS)
- Provision processing, storage, networks, and other fundamental computing resources
- Consumer can deploy and run arbitrary software
- Example: Amazon Web Services and Flexi scale.
- Platform as a Service (PaaS)
- Deploy consumer-created or acquired applications using programming languages, libraries, services, and tools supported by the provider.
- Consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, or storage, but has control over the deployed applications
Cloud Services Models - Stack Overview
- SaaS: CRM, Email, virtual desktop, communication, games
- PaaS: Execution runtime, database, web server, development tools
- IaaS: Virtual machines, servers, storage, load balancers, network
Types of Cloud (Deployment Models)
- Private cloud: Operated solely for an organization (e.g., Window Server 'Hyper-V').
- Community cloud: Shared by several organizations supporting a specific goal.
- Public cloud: Available to the general public (e.g., Google Doc, Spreadsheet).
- Hybrid cloud: Composition of two or more clouds (private, community, or public) (e.g., Cloud Bursting).
Cloud and Virtualization
- Virtual Workspaces:
- An abstraction of an execution environment that can be made dynamically available to authorized clients by using well-defined protocols,
- Resource quota (e.g. CPU, memory share),
- Software configuration (e.g. OS).
- Implement on Virtual Machines (VMs):
- Abstraction of a physical host machine
- Hypervisor intercepts and emulates instructions from VMs, and allows management of VMs,
- VMWare, Xen, KVM etc.
- Provide infrastructure API:
- Plug-ins to hardware/support structures
Virtual Machines
- VM technology allows multiple virtual machines to run on a single physical machine.
- Para-virtualization (e.g. Xen) is very close to raw physical performance!
Virtualization in General
- Advantages of virtual machines:
- Run operating systems where the physical hardware is unavailable
- Easier to create new machines, backup machines, etc.
- Software testing using “clean” installs of operating systems and software
- Emulate more machines than are physically available
- Timeshare lightly loaded systems on one host
- Debug problems (suspend and resume the problem machine)
- Easy migration of virtual machines (shutdown needed or not)
- Run legacy systems
Cloud Sourcing
- Why is it becoming important ?
- Using high-scale/low-cost providers
- Any time/place access via web browser
- Rapid scalability; incremental cost and load sharing
- Can forget need to focus on local IT.
- Concerns:
- Performance, reliability, and SLAs
- Control of data, and service parameters
- Application features and choices
- Interaction between Cloud providers
- No standard API – mix of SOAP and REST!
- Privacy, security, compliance, trust…
Cloud Storage
- Web companies are now exploiting their data storage capacity by hiring it out to others
- Allows temporarily cached on desktop computers, mobile phones or other Internet-linked devices
- Examples: Amazon's Elastic Compute Cloud (EC2) and Simple Storage Solution (S3).
Advantages of Cloud Computing
- Lower computer costs:
- No need of a high-powered and high-priced computer to run cloud computing's web-based applications.
- Your desktop PC does not need the processing power or hard disk space demanded by traditional desktop software
- Improved performance:
- With few large programs hogging your computer's memory, you will see better performance from your PC.
- Computers in a cloud computing system boot and run faster because they have fewer programs and processes loaded into memory.
- Reduced software costs:
- Instead of purchasing expensive software applications, you can get most of what you need for free.
- most cloud computing applications today, such as the Google Docs suite better than paying for similar commercial software
Advantages of Cloud Computing
- Instant software updates
- When the application is web-based, updates happen automatically available the next time you log into the cloud.
- When you access a web-based application, you get the latest version without needing to pay for or download an upgrade.
- Improved document format compatibility.
- Less format incompatibilities when everyone is sharing documents and applications in the cloud.
- Unlimited storage capacity
- Your computer's current 1 Tera Bytes hard drive is small compared to the hundreds of Peta Bytes available in the cloud.
Advantages of Cloud Computing
- Increased data reliability
- A computer crashing in the cloud should not affect the storage of your data.
- If your personal computer crashes, all your data is still out there in the cloud, still accessible.
- Universal information access
- Documents are instantly available from wherever you are.
- Latest version availability
- The cloud always hosts the latest version of your documents as long as you are connected, you are not in danger of having an outdated version.
Advantages of Cloud Computing
- Easier group collaboration
- Sharing documents leads directly to better collaboration. multiple users can collaborate easily on documents and projects
- Device independence
- You are no longer tethered to a single computer or network.
- Changes to computers, applications and documents follow you through the cloud.
- Move to a portable device, and your applications and documents are still available.
Disadvantages of Cloud Computing
- Requires a constant internet connection
- Cloud computing is impossible if you cannot connect to the Internet.
- A dead Internet connection means no work and in areas where Internet connections are few or inherently unreliable, this could be a deal-breaker.
- Does not work well with low-speed connections
- Web-based applications require a lot of bandwidth to download, as do large documents.
Disadvantages of Cloud Computing
- Features might be limited
- Many web-based applications simply are not as full-featured as their desktop-based applications.
- Can be slow
- Web-based applications can sometimes be slower than accessing a similar software program on your desktop PC.
Disadvantages of Cloud Computing
- Stored data might not be secured
- How secure is the cloud?
- Can unauthorized users gain access to your confidential data ?
- Stored data can be lost!
- If your data goes missing, you have no physical or local backup relying on the cloud puts you at risk if the cloud lets you down.
Disadvantages of Cloud Computing
- HPC Systems
- Not clear that you can run compute-intensive HPC applications that use MPI/OpenMP!
- Scheduling is important with this type of application as you want all the VM to be co-located to minimize communication latency!
- General Concerns
- Each cloud systems uses different protocols and different APIs
- may not be possible to run applications between cloud based systems Amazon has created its own DB system (not SQL 92), and workflow system (many popular workflow systems out there)
Reasons for Cloud Adoption
- The main reason for interest in cloud computing is due to the fact that public clouds can significantly reduce IT costs.
- From and end user perspective cloud computing gives the illusion of potentially infinite capacity with ability to scale rapidly and pay only for the consumed resource.
- In contrast, provisioning for peak capacity is a necessity within private data centers, leading to a low average utilization of 5-20 percent.
IaaS Economics
Benefits for the End User (Public Cloud)
- High utilization
- High scalability
- No separate hardware procurement
- No separate power cost
- No separate IT infrastructure administration/maintenance required
- Public clouds offer user friendly SLA by offering high availability (~99%) and also provide compensation in case of SLA miss.
- Users can rent the cloud to develop and test prototypes before making major investments in technology
Benefits for the End User (cont.)
- In order to enhance portability from one public cloud to another, several organizations such as Cloud Computing Interoperability Forum and Open Cloud Consortium are coming up with standards for portability.
- For e.g. Amazon EC2 and Eucalyptus share the same API interface.
- Software startups benefit tremendously by renting computing and storage infrastructure on the cloud instead of buying them as they are uncertain about their own future.
Benefits for Small and Medium Businesses
- SMBs leveraging cloud services for voice communication, online backup/DB, IM, project management, file sharing, web conferencing, and email.
Benefits of Private Cloud
- Cost of 1 server with 12 cores and 12 GB RAM is far lower than the cost of 12 servers having 1 core and 1 GB RAM.
- Confidentiality of data is preserved
- Virtual machines are cheaper than actual machines
- Virtual machines are faster to provision than actual machines
Economics of PaaS vs IaaS
- Consider a web application that needs to be available 24X7, but where the transaction volume is unpredictable and can vary rapidly
- Using an IaaS cloud, a minimal number of servers would need to be provisioned at all times to ensure availability
- In contrast, merely deploying the application on PaaS cloud costs nothing. Depending upon the usage, costs are incurred.
- The PaaS cloud scales automatically to successfully handle increased requests to the web application.
PaaS benefits
- No need for the user to handle scaling and load balancing of requests among virtual machines
- PaaS clouds also provide web based Integrated Development Environment for development and deployment of application on the PaaS cloud.
- Easier to migrate code from development environment to the actual production environment.
- Hence developers can directly write applications on the cloud and don’t have to buy separate licenses of IDE.
SaaS benefits
- Users subscribe to web services and web applications instead of buying and licensing software instances.
- For e.g. Google Docs can be used for free, instead of buying document reading softwares such as Microsoft Word.
- Enterprises can use web based SaaS Content Relationship Management applications, instead of buying servers and installing CRM softwares and associated databases on them.
Benefits Perceived by the IT Industry
- Top benefits include easy/fast deployment, pay-as-you-go pricing, reduced in-house IT costs, and access to the latest functionality.
Factors Driving Investment in Cloud
- Reduced cost of infrastructure, flexibility (grow and reduce resources), scalability
Purpose of Cloud Computing in Organizations
- Providing an IT platform for business processes involving multiple organizations
- Backing up data
- Running CRM, ERP, or supply chain management applications
- Providing personal productivity and collaboration tools to employees
- Developing and testing software
- Storing and archiving large files (e.g., video or audio)
- Analyzing customer or operations data
- Running e-business or e-government web sites
- Analyzing data for research and development
- Meeting spikes in demand on our web site or internal systems
- Processing and storing applications or other forms
- Running data-intensive batch applications (e.g., data conversion, risk modeling, graphics rendering)
- Sharing information with the government or regulators
- Providing consumer entertainment, information and communication (e.g., music, video, photos, social networks)
Top Cloud Applications Driving Cloud Adaptation
- Mail and Messaging
- Archiving
- Backup
- Storage
- Security
- Virtual Servers
- CRM (Customer Relationship Management)
- Collaboration across enterprises
- Hosted PBX (Private Branch Exchange)
- Video Conferencing
Cloud Computing Architecture
- Business Goals
- TCO
- Market share
- Flexibility
- Stakeholder satisfaction
- Compliance
- Quality Attributes
- Availability
- Elasticity
- Interoperability
- Security
- Adaptability
- Performance
- Usability
- Maintainability
- Architectural Tactics
- Stateless Design
- Loose Coupling
- Caching
- Claim based authentication
- Scale-out
- Pipelining architecture
- Divide and Conquer
- Firewall traversal
- Partitioning
- Publish-Subscribe
- Strong encryption
- Multi-Tenancy
- Reliable messaging
- Asynchronous communication
Major Building Blocks
- Technical Architecture
- Structuring according to XaaS stack
- Adopting cloud computing paradigms
- Structuring cloud services and cloud components
- Showing relationships and external endpoints
- Middleware and communication
- Management and security
- Deployment Operation Architecture
- Geo-location check (Legal issues, export control)
- Operation and Monitoring
Cloud Computing Architecture - XaaS
- Management
- Client
- Infrastructure
- Application
- Service
- Cloud Runtime
- Storage
- Security
- SaaS, PaaS, IaaS
- Infrastructure
XaaS Stack Views
- Customer View
- User, Application -> SaaS
- Administrator -> PaaS
- Software Architect, Developer -> IaaS
- Provider View
- Example : Access Control, CRM
Elasticity Architecture
- Vertical Scale Up
- Add more resources to a single computation unit i.e. Buy a bigger box
- Move a workload to a computation unit with more resources
- Horizontal Scale Out
- Adding additional computation units and having them act in concert
- Splitting workload across multiple computation units
- Database partitioning
Service Models (XaaS)
- XaaS is a generalization for cloud-related services, standing for "anything as a service" or "everything as a service“
- Refers to services delivered over the Internet rather than provided locally or on-site
- XaaS is the essence of cloud computing.
Service Models (XaaS)
- Business Process-as-a-Service (BPaaS)
- Software-as-a-Service (SaaS)
- Platform-as-a-Service (PaaS)
- Infrastructure-as-a-Service (IaaS)
Service Models (XaaS) - Examples
- Most common examples of XaaS are SaaS, PaaS, IaaS
- Other examples of XaaS include Business Process as a Service (BPaaS), Storage as a service (another SaaS), Security as a service (SECaaS), Database as a service (DaaS), Monitoring/management as a service (MaaS), Communications, content and computing as a service (CaaS), Identity as a service (IDaaS), Backup as a service (BaaS), Desktop as a service (DaaS)
Requirements of CSP (Cloud Service Provider)
- Increase productivity
- Increase end user satisfaction
- Increase innovation
- Increase agility
Service Models (XaaS)
- Broad network access (cloud) + resource pooling (cloud) + business-driven infrastructure on-demand (SOI) + service-orientation (SOI) = XaaS
- Xaas fulfils all the 4 demands!
Classical Service Model
- All Layers (H/W, Operating System, Development Tools, Applications) Managed by the Users
- Initial IT budget and resources.
- Users bear the costs of the hardware, maintenance and technology.
- Systems are deployed as a vertical stack of “layers” which are tightly coupled
- Prevalent of manual operations for provisioning, management
- Result: Legacy IT
From Legacy IT to Evergreen IT
- Legacy IT -> Dedicated Infrastructure, Application, End user devices, Simplified IT Stack
- Evergreen IT -> Simplified IT Stack (all managed in the cloud)
Classic Model vs. XaaS Comparison
- Traditional:
- Licensed Software (e.g., Oracle, SAP, Microsoft)
- Hardware Product sale (e.g. PC, Server, Router) plus maintenance / support services (e.g., Cisco, Dell, HP)
- People-based Services (e.g., IBM Global Services, Accenture, Wipro)
- New/Emerging:
- SaaS: Software functionality delivered as utility services (e.g., Salesforce.com; Taleo; Workday; NetSuite)
- IaaS: Storage-on-demand, compute capacity (e.g., eVault; Amazon EC2; Dropbox)
- PaaS: Provide entire web services dev. environment/ platform (e.g., Force.com; Azure; Amazon Web Services)
Client Server Architecture
- Clients connect to the Server through the internet
Client Server Architecture
- Consists of one or more load balanced servers servicing requests sent by the clients
- Clients and servers exchange message in request-response fashion
- Client is often a thin client or a machine with low computational capabilities
- Server could be a load balanced cluster or a stand alone machine.
Three Tier Client-Server Architecture
- Presentation tier: User interface translates tasks and results to user-understandable formats.
- Logic tier: Coordinates the application, processes commands, makes logical decisions and evaluations, and performs calculations moving data between tiers.
- Data tier: Information is stored and retrieved from a database or file system, then passed back to the logic tier and eventually to the user.
Client Server vs. Cloud Model
- Client Server Model
- Simple service model where server services client requests
- May/may not be load balanced
- Scalable to some extent in a cluster environment.
- No concept of virtualization
- Cloud computing model
- Variety of complex service models, such as, IaaS, PaaS, SaaS can be provided
- Load balanced
- Theoretically infinitely scalable
- Virtualization is the core concept
Cloud Services
- Presentation Layer, Business Processes, Services, Service Components, Operational Systems, APIS for infrastructure (Compute, Network, Storage, Facilities)
- Business-Process-as-a-Service (BPaaS)
- Software-as-a-Service (SaaS)
- Platform-as-a-Service (PaaS)
- Infrastructure-as-a-Service (IaaS)
Cloud service models
- SaaS: Web Browser to Cloud Applications (Social networks, Office suites, CRM, Video processing)
- PaaS : Cloud Development Environment to Cloud Platform (Programming languages, Frameworks, Mashups editors, Structured data)
- IaaS: Virtual Infrastructure Manager to Cloud Infrastructure (Compute Servers, Data Storage, Firewall, Load Balancer)
Simplified Description of Cloud Service Models
- SaaS applications are designed for end users and are delivered over the web
- PaaS is the set of tools and services designed to make coding and deploying applications quickly and efficiently
- IaaS is the hardware and software that powers it all – servers, storage, network, operating systems
Transportation Analogy
- The roads are the infrastructure and the cars and trucks are the platform that sits on top of the infrastructure and transports the people and goods. These goods and people might be considered the software and information in the technical realm
Software as a Service
- SaaS is defined as software that is deployed over the internet. With SaaS, a provider licenses an application to customers either as a service on demand, through a subscription, in a “pay-as-you-go” model, or (increasingly) at no charge when there is opportunity to generate revenue from streams other than the user, such as from advertisement or user list sales.
SaaS characteristics
- Web access to commercial software
- Software is managed from central location
- Software is delivered in a ‘one to many’ model
- Users not required to handle software upgrades and patches
- Application Programming Interfaces (API) allow for integration between different pieces of software.
Applications where SaaS is used
- Applications where there is significant interplay between organization and outside world. E.g. email newsletter campaign software
- Applications that have need for web or mobile access. E.g. mobile sales management software
- Software that is only to be used for a short term need.
- Software where demand spikes significantly. E.g. Tax/Billing softwares.
- E.g. of SaaS: Sales Force Customer Relationship Management (CRM) software
Applications where SaaS may not be the best option
- Applications where extremely fast processing of real time data is needed.
- Applications where legislation or other regulation does not permit data being hosted externally.
- Applications where an existing on-premise solution fulfills all of the organization’s needs.
Platform as a Service
- PaaS can be defined as a computing platform that allows the creation of web applications quickly and easily and without the complexity of buying and maintaining the software and infrastructure underneath it
- PaaS is analogous to SaaS except that, rather than being software delivered over the web, it is a platform for the creation of software, delivered over the web.
Characteristics of PaaS
- Services to develop, test, deploy, host and maintain applications in the same integrated development environment. All the varying services needed to fulfill the application development process.
- Web based user interface creation tools help to create, modify, test and deploy different UI scenarios.
- Multi-tenant architecture where multiple concurrent users utilize the same development application.
- Built in scalability of deployed software including load balancing and failover.
- Integration with web services and databases via common standards.
- Support for development team collaboration – some PaaS solutions include project planning and communication tools.
- Tools to handle billing and subscription management
Scenarios where PaaS is used
- PaaS is especially useful in any situation where multiple developers will be working on a development project or where other external parties need to interact with the development process.
- PaaS is useful where developers wish to automate testing and deployment services
- The popularity of agile software development will also increase the uptake of PaaS as it eases the difficulties around rapid development and iteration of software.
- PaaS Examples: Microsoft Azure, Google App Engine
Scenarios where PaaS is not ideal
- Where the application needs to be highly portable in terms of where it is hosted.
- Where proprietary languages or approaches would impact on the development process
- Where a proprietary language would hinder later moves to another provider – concerns are raised about vendor lock in
- Where application performance requires customization of the underlying hardware and software
Infrastructure as a Service
- IaaS is a way of delivering Cloud Computing infrastructure – servers, storage, network and operating systems – as an on-demand service.
- Rather than purchasing servers, software, datacenter space or network equipment, clients instead buy those resources as