0% found this document useful (0 votes)
113 views24 pages

Cloud-Based Software

The document discusses cloud-based software, highlighting its reliance on virtual servers that can be rented and accessed remotely. It emphasizes the benefits of scalability, elasticity, and resilience in cloud systems compared to dedicated servers, as well as the advantages of using containers and Docker for software deployment. Additionally, it outlines the different service models in cloud computing, including IaaS, PaaS, and SaaS, along with their respective benefits and challenges.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
113 views24 pages

Cloud-Based Software

The document discusses cloud-based software, highlighting its reliance on virtual servers that can be rented and accessed remotely. It emphasizes the benefits of scalability, elasticity, and resilience in cloud systems compared to dedicated servers, as well as the advantages of using containers and Docker for software deployment. Additionally, it outlines the different service models in cloud computing, including IaaS, PaaS, and SaaS, along with their respective benefits and challenges.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Cloud-based software

© Ian Sommerville 2018


The cloud
• The cloud is made up of very large number of remote servers that are offered
for rent by companies that own these servers.

• Cloud-based servers are ‘virtual servers’, which means that


they are implemented in software rather than hardware.
• You can rent as many servers as you need, run your software on these servers
and make them available to your customers.

• Your
customers can access these servers from their own
computers or other networked devices such as a tablet or a
TV.
• Cloud
servers can be started up and shut down as demand
changes.
• You may rent a server and install your own software, or you may pay for access
to software products that are available on the cloud.

© Ian Sommerville 2018


Scaleability, elasticity and resilience

Scalability, elasticity, and resilience are the fundamental differences between


cloud-based systems and those hosted on dedicated servers.

Cloud-based Software © Ian Sommerville 2018: 3


Scaleability, elasticity and resilience
• Scaleability reflects the ability of your software to cope with increasing numbers of users.

• As the load on your software increases, your software automatically adapts so that the
system performance and response time is maintained.

• Systems can be scaled by adding new servers or by migrating to a more powerful server.

• If a more powerful server is used, this is called scaling up.

• If new servers of the same type are added, this is called scaling out.
• Elasticity is related to scaleability but also allows for scaling-down as well as scaling-up.

• That is, you can monitor the demand on your application and add or remove servers
dynamically as the number of users change.
• Resilience means that you can design your software architecture to tolerate server failures.

• You can make several copies of your software concurrently available. If one of these fails,
the others continue to provide a service.

Cloud-based Software © Ian Sommerville 2018: 4


Benefits of using the cloud for software development

• Cost
You avoid the initial capital costs of hardware procurement

• Startup time
You don’t have to wait for hardware to be delivered before you can start
work. Using the cloud, you can have servers up and running in a few
minutes.

• Server choice
If you find that the servers you are renting are not powerful enough, you
can upgrade to more powerful systems. You can add servers for short-
term requirements, such as load testing.

• Distributed development
If you have a distributed development team working from different
locations, all team members have the same development environment
and can seamlessly share all information.

Cloud-based Software © Ian Sommerville 2018:


Virtual cloud servers

• A virtual server runs on an underlying physical computer and is made up of an


operating system plus a set of software packages that provide the server
functionality required.
• A virtual server is a stand-alone system that can run on any hardware in the
cloud.
• This ‘run anywhere’ characteristic is possible because the virtual server has no external
dependencies.

• Virtual machines (VMs), running on physical server hardware, can be used to


implement virtual servers.
• A hypervisor provides hardware emulation that simulates the operation of the underlying
hardware.

• If you use a virtual machine to implement virtual servers, you have exactly the
same hardware platform as a physical server.

Cloud-based Software © Ian Sommerville 2018: 6


Implementing a virtual server as a virtual machine

Cloud-based Software © Ian Sommerville 2018: 7


Container-based virtualization

• If you are running a cloud-based system with many instances of applications or services, these all
use the same operating system, you can use a simpler virtualization technology called
‘containers’.

• Using containers accelerates the process of deploying virtual servers on the cloud.

• Containers are usually megabytes in size whereas VMs are gigabytes.


• Containers can be started and shut down in a few seconds rather than the
few minutes required for a VM.
• Containers are an operating system virtualization technology that allows independent servers to
share a single operating system.

• They are particularly useful for providing isolated application services


where each user sees their own version of an application.

Cloud-based Software © Ian Sommerville 2018: 8


Using containers to provide isolated services

Cloud-based Software © Ian Sommerville 2018: 9


Docker

• Containers were developed by Google around 2007 but containers became a mainstream
technology around 2015.

• An open-source project called Docker provided a standard means of container management that
is fast and easy to use.

• Docker is a container management system that allows users to define the software to be included
in a container as a Docker image.

• It also includes a run-time system that can create and manage containers using these Docker
images.
10

Cloud-based Software © Ian Sommerville 2018:


The Docker container system

Cloud-based Software © Ian Sommerville 2018: 11


The elements of the Docker container system

• Docker daemon
This is a process that runs on a host server and is used to setup, start,
stop, and monitor containers, as well as building and managing local
images.

• Docker client
This software is used by developers and system managers to define and
control containers

• Dockerfiles
Dockerfiles define runnable applications (images) as a series of setup
commands that specify the software to be included in a container. Each
container must be defined by an associated Dockerfile.

• Image
A Dockerfile is interpreted to create a Docker image, which is a set of
directories with the specified software and data installed in the right
places. Images are set up to be runnable Docker applications.

Cloud-based Software © Ian Sommerville 2018:


The elements of the Docker container system

• Docker hub
This is a registry of images that has been created. These may be reused
to setup containers or as a starting point for defining new images.

• Containers
Containers are executing images. An image is loaded into a container
and the application defined bby the image starts execution. Containers
may be moved from server to server without modification and replicated
across many servers. You can make changes to a Docker container
(e.g. by modifying files) but you then must commit these changes to
create a new image and restart the container.

Cloud-based Software © Ian Sommerville 2018:


Docker images

• Docker images are directories that can be archived, shared and run on different Docker hosts.
Everything that’s needed to run a software system - binaries, libraries, system tools, etc. is
included in the directory.

• A Docker image is a base layer, usually taken from the Docker registry, with your own software
and data added as a layer on top of this.

• The layered model means that updating Docker applications is fast and
efficient. Each update to the filesystem is a layer on top of the existing
system.
14
• To change an application, all you have to do is to ship the changes that
you have made to its image, often just a small number of files.

Cloud-based Software © Ian Sommerville 2018:


Benefits of containers

• They solve the problem of software dependencies. You don’t have to worry about the libraries
and other software on the application server being different from those on your development
server.

• Instead of shipping your product as stand-alone software, you can ship a


container that includes all of the support software that your product needs.
• They provide a mechanism for software portability across different clouds. Docker containers can
run on any system or cloud provider where the Docker daemon is available.

• They provide an efficient mechanism for implementing software services and so support the
development of service-oriented architectures. 15

• They simplify the adoption of DevOps. This is an approach to software support where the same
team are responsible for both developing and supporting operational software.

Cloud-based Software © Ian Sommerville 2018:


Everything as a service
• The idea of a service that is rented rather than owned is fundamental to cloud computing.

• Infrastructure as a service (IaaS)

• Cloud providers offer different kinds of infrastructure services, such as a compute service, a network service and a storage
service that you can use to implement virtual servers.

• The capital costs of buying hardware are not incurred and it is easy to migrate software from one server to a more powerful
server.

• Platform as a service (PaaS)

• This is an intermediate level where you use libraries and frameworks provided by the cloud provider to implement your
software.

• These provide access to a range of functions, including SQL and NoSQL databases.
16

• Facilitates easy development of auto-scaling software.

• Software as a service (SaaS)

• Your software product runs on the cloud and is accessed by users through a web browser or mobile app.

Cloud-based Software © Ian Sommerville 2018:


Everything as a service

17

Cloud-based Software © Ian Sommerville 2018:


Management responsibilities for IaaS and PaaS

18

Cloud-based Software © Ian Sommerville 2018:


Software as a service

• Increasingly, software products are being delivered as a service, rather than installed on the
buyer’s computers.

• If you deliver your software product as a service, you run the software on your servers, which
you may rent from a cloud provider.

• Customers don’t have to install software and they access the remote system through a web
browser or dedicated mobile app.

• The payment model for software as a service is usually a subscription model.

• Users pay a monthly fee to use the software rather than buy it outright. 19

Cloud-based Software © Ian Sommerville 2018:


Software as a service

20

Cloud-based Software © Ian Sommerville 2018:


Table 5.3 Benefits of SaaS for software product providers

Cash flow
Customers either pay a regular subscription or pay as they use the software. This
means you have a regular cash flow, with payments throughout the year. You
don’t have a situation where you have a large cash injection when products are
purchased but very little income between product releases.
Update management
You are in control of updates to your product and all customers receive the
update at the same time. You avoid the issue of several versions being
simultaneously used and maintained. This reduces your costs and makes it
easier to maintain a consistent software code base.
Continuous deployment 21

You can deploy new versions of your software as soon as changes have been
made and tested. This means you can fix bugs quickly so that your software
reliability can continuously improve.

Cloud-based Software © Ian Sommerville 2018:


Table 5.3 Benefits of SaaS for software product providers

Payment flexibility
You can have several different payment options so that you can attract a wider range of customers. Small
companies or individuals need not be discouraged by having to pay large upfront software costs.

Try before you buy


You can make early free or low-cost versions of the software available quickly with the aim of getting
customer feedback on bugs and how the product could be improved.

Data collection
You can easily collect data on how the product is used and so identify areas for improvement. You may also
be able to collect customer data that allows you to market other products to these customers.

22

Cloud-based Software © Ian Sommerville 2018:


Advantages and disadvantages of SaaS for customers

23

Cloud-based Software © Ian Sommerville 2018:


Data storage and management issues for SaaS

Regulation
Some countries, such as EU countries, have strict laws on the storage of personal information. These
may be incompatible with the laws and regulations of the country where the SaaS provider is based. If
a SaaS provider cannot guarantee that their storage locations conform to the laws of the customer’s
country, businesses may be reluctant to use their product.
Data transfer
If software use involves a lot of data transfer, the software response time may be limited by the
network speed. This is a problem for individuals and smaller companies who can’t afford to pay for
very high speed network connections.
Data security
Companies dealing with sensitive information may be unwilling to hand over the control of their data
to an external software provider. As we have seen from a number of high profile cases, even large
cloud providers have had security breaches. You can’t assume that they always provide better
security than the customer’s own servers.
24
Data exchange
If you need to exchange data between a cloud service and other services or local software
applications, this can be difficult unless the cloud service provides an API that is accessible for
external use.

Cloud-based Software © Ian Sommerville 2018:

You might also like