3
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]

SDLC and Cloud Computing

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