Upload
karan-kathuria
View
824
Download
4
Embed Size (px)
Citation preview
Software Development Lifecycle and Cloud Computing
Karan Kathuria
Student, MBA-Systems (2009-11), SCIT
E-mail: [email protected]
Abstract
Cloud computing is an example of the increasing
movement of compute and data resources onto the Web.
It delivers higher efficiency, massive scalability, and
faster, easier software development. Cloud computing
offers enormous opportunities for enterprises to cut
computing costs and increase speed to market for new
Web services.
Today, the dominant software stacks used in cloud
computing environments are integrated, optimized and
many times open-source. This white paper tries to find out
how concepts of Software Development Lifecycle and
Cloud Computing work together for creating architecture
which can be used by organizations for leveraging their
businesses to the fullest..
1. Introduction
Cloud computing is all about efficiency. It provides a
way to deploy and access everything from single systems
to huge amounts of IT resources — on demand, in real
time, at an affordable cost. It makes high-performance
compute and high-capacity storage available to anyone
with a credit card. And since the best cloud strategies
build on concepts and tools that developers already know,
clouds also have the potential to redefine the relationship
between Information Technology, developers and the
business units that depend on it.
2. What is Cloud Computing?
The concept of cloud computing usually involves a
combination of following - Infrastructure as a service
(IaaS), Platform as a service (PaaS), and Software as a
service (SaaS). A cloud application leverages the Cloud in
software architecture, often eliminating the need to install
and run the application on the customer's own computer,
thus alleviating the burden of software maintenance,
ongoing operation, and support. [1]
But before beginning, it must not be confused with
other computing platforms like Grid computing, utility
computing and Autonomic computing.
2.1 Software as a Service (SaaS)
SaaS is at the highest layer and features a complete
application offered as a service, on-demand. A single
instance of the software runs on the provider’s
infrastructure and serves multiple client organizations.
The most widely known example of SaaS is
Salesforce.com, but there are now many others, including
the Google Apps offering of basic business services such
as e-mail. Of course, Salesforce.com’s multitenant
application has preceded the definition of cloud
computing by a few years. [2]
2.2 Platform as a Service (PaaS)
The middle layer, or PaaS, is the encapsulation of a
development environment abstraction and the packaging
of a payload of services. The archetypal payload is a Xen
image (part of Amazon Web Services) containing a basic
Web stack. PaaS offerings can provide for every phase of
software development and testing, or they can be
specialized around a particular area, such as content
management. Commercial examples include Google App
Engine, which serves applications on Google’s
infrastructure. PaaS services such as these can provide a
great deal of flexibility but may be constrained by the
capabilities that are available through the provider. [1]
2.3 Infrastructure as a Service (IaaS)
IaaS is at the lowest layer and is a means of delivering
basic storage and compute capabilities as standardized
services over the network. Servers, storage systems,
switches, routers, and other systems are pooled (through
virtualization technology, for example) to handle specific
types of workloads — from batch processing to
server/storage augmentation during peak loads. The best-
known commercial example is Amazon Web Services,
whose EC2 and S3 services offer bare-bones compute and
storage services (respectively). [3]
3. Cloud Definition
Clouds can generally be differentiated into three types,
which are:
Public clouds are run by third parties, and jobs from
many different customers may be mixed together on the
servers, storage systems, and other infrastructure within
the cloud. End users don’t know who else’s job may be
me running on the same server, network, or disk as their
own jobs.
Private clouds are a good option for companies dealing
with data protection and service-level issues. Private
clouds are on-demand infrastructure owned by a single
customer who controls which applications run, and where.
They own the server, network, and disk and can decide
which users are allowed to use the infrastructure.
Hybrid clouds combine the public and private cloud
models. You own parts and share other parts, though in a
controlled way. Hybrid clouds offer the promise of on-
demand, externally provisioned scale, but add the
complexity of determining how to distribute applications
across these different environments. While enterprises
may be attracted to the promise of a hybrid cloud, this
option, at least initially, will likely be reserved for simple
stateless applications that require no complex databases or
synchronization.
4. Why it’s useful?
The main benefits of cloud computing for an
organization are:
• Reduce capital expenditures
• Cut the cost of running a datacenter
• Scaling up of resources
This can be achieved through Cloud computing, since
it improves infrastructure utilization rates and streamlines
resource management. For example, clouds allow for self-
service provisioning through APIs, bringing a higher level
of automation to the datacenter and reducing management
costs.
5. The SDLC phase
The concept of software development lifecycle for a
project varies according to many factors, with type, size
and time being the major ones. When this approach,
combined with cloud computing is applied to the projects,
then a hybrid approach is followed, since organizations do
not have to be concerned about most of the phases of
SDLC and pre and post deployment issues are reduced.
5.1 Software Deployment
With cloud computing offering increasing abstraction
of the underlying hardware, a related, but separate, set of
decisions must be made concerning how the software and
applications are deployed on cloud infrastructure. The
cloud computing model is flexible enough to
accommodate applications of all types and sizes, at all
phases of development and deployment. Cloud
architectures can be the delivery platform for monolithic,
proprietary applications such as ERP and CRM; the
development and deployment platform for a new breed of
lightweight, dynamically typed applications built on open
source software; or a source of IDEs and testing
resources.
5.2 Software Packaging
The software-based packaging of software
components, data, server and storage pools, and other
cloud resources makes efficient resource allocation, re-
use, and management possible. The packaging system is
essentially a software delivery mechanism that simplifies
and accelerates the installation of everything from
operating systems to applications to end-user data.
Increasingly, cloud operators and datacenters are moving
away from installing systems software on each server,
choosing to deploy golden images on farms of servers,
which are easier to install & manage. In any case, basic
software configurations must be provisioned on the
system resource pools.
5.3 Machine Images
Increasingly, a similar image-based deployment model
is becoming the primary mechanism for deploying
application development payloads on virtual resource
pools. Machine images contain user-specific applications,
libraries, data, and associated configuration settings and
are hosted within the cloud. Perhaps the best-known
examples are Xen images. This model of deployment is
the basis of Amazon Machine Images (AMIs), which are
built around a variety of kernels. You can select among a
range of public AMIs (preconfigured, template images) or
build your own custom/private AMI.
Most AMI’s are built on some form open source
platform. They’re easy to modify and share, and tools are
provided by Amazon. Paid AMIs can be created by ISVs
and stored on Amazon Simple Storage Service (S3).
6. Some background concepts
Some other important concepts which are useful for
issues like security are Virtualization, storage pools etc.
Virtualization: The use of OS-level virtualization or
partitioning in cloud architectures can help solve some of
the core security, privacy, and regulatory issues that could
otherwise hinder the adoption of cloud computing. [4]
Storage Pools: Advanced storage systems, like
‘Hybrid Storage Pools’ and similar methodologies are an
integral part of cloud computing architecture. But these
concepts are not covered here since they are beyond the
scope of this white paper.
7. Conclusion
The cloud computing hence emerges as a blend of
different areas, with Software & Services forming the
most important aspect of it and various phases of SDLC
forming an integral part with a certain level of abstraction.
Software — provides the standards-based tools that
developers and architects need to build agile services that
can be deployed in the cloud.
Services — support the development efforts through a
broad range of professional services, network services,
and value-added service offerings from partners (like
OEMs, and systems integrators)
8. References
[1] Cloud Computing, Wikipedia,
http://en.wikipedia.org/wiki/Cloud_computing, retrieved
on: Sep 19’2009
[2] Open Source Cloud Computing, Networkworld,
http://www.networkworld.com/news/2008/072808-open-
source-cloud-computing.html, retrieved on: Sep 20’2009
[3] Amazon_EC2, Wikipedia,
http://en.wikipedia.org/wiki/Amazon_EC2, retrieved on:
Sep 20’2009
[4] Virtualization, Networkworld,
http://www.networkworld.com/columnists/2008/080508-
dzubeck.html , retrieved on: Sep 21’2009