Advertisment

Cloud catches fire amongst software makers

author-image
CIOL Bureau
Updated On
New Update

BANGALORE, INDIA: Cloud computing generally gets equated with IT infrastructure.  Today, it is considered to be 'the new deployment model for software applications' which offers benefits like pay-as-you-go, on demand usage and scalability.

Advertisment

Milind Khirwadkar, associate vice president, cloud solutions, Symphony ServicesHow is the development community affected by the trend? Two key paradigms emerge and are impacting software makers. First, developing for the cloud, which is more about bringing cloud enabled applications to market. Second, developing in the cloud, this focuses on using the cloud for dev/test of applications. The article explains important touch points between cloud computing and software development and their implications under both paradigms.

Platform as a Service (PaaS)

PaaS enables organizations to use Application Infrastructure as a software service to create, run and integrate cloud-based business applications. PaaS is the technology that intermediates between the underlying system infrastructure (which includes the operating system, networks, virtualization and storage) and the overlying application software. It represents a wide range of functionality, including programming frameworks and languages, application and data integration, business process management, database management, and messaging amongst others.

The software development community needs to focus on a variety of implementation and architectural approaches currently available to use PaaS to offer business application services. Alternatively, it can also consider cloud-enabled application platform (CEAP) offerings as an on-premise, less- risky alternative to application-PaaS (aPaaS). They can also leverage integration-PaaS (iPaaS) which is aimed at building integration flows and management infrastructure between pre-existing applications.

Advertisment

As PaaS reduces time-to-market drastically, development projects will see an increasing use of it in the future.

Product Architectures

It is a common misconception that any application can be hosted on cloud. Cloud based solutions have many additional demands such as scalability, availability, performance and security. Software architects need to keep these in mind right from the start when designing products for cloud. First and foremost is: remember that cloud applications are expected to scale out. These applications run on multiple instances and must follow the architecture patterns and best practices of distributed computing.

For example, loose coupling and stateless components are de facto cloud standards. Similarly using Message Queues to distribute the job and building logic to identify theactive node for processing are common techniques to improve availability. Apart from such nonfunctional requirements, providing for customization of UI, providing a meta-data driven configuration functionality, customizable data model extension are some of the mandatory features of cloud applications.

Advertisment

Development Processes

A new paradigm of Service Quality emerges with the adoption of Cloud Model. Software Developers need to take into consideration the following factors —

Agile for Cloud:

Typically release cycles shorten in a SaaS model as the upgrades need to be non-disruptive. A robust engineering process, typically Agile adapted to cloud, is needed to cope up with this requirement. There is another factor which favors agile in a cloud model. The user feedback is almost instantaneous in a cloud model and incorporating that in the next release is a critical success factor. In fact many companies create prototypes on cloud to involve users early in the development phase and develop applications which capture all essential requirements. This is possible only with the agile development methodology.

(The views expressed in this article are that of the author and do not necessarily reflect the views or policies of CIOL)

Advertisment

{#PageBreak#}

Continuous Integration (CI) and Product Quality Management (PQM):

Software delivers no value until it is in the hands of the users to use it in the intended way.  Millions of dollars are lost as opportunity costs by companies due to manually intensive, error-prone and risky processes. Having a repeatable and reliable process for releasing software is must for Cloud model.  The expectation from this process is to keep the entire development team in synch, removing delays due to integration issues and deal with the last mile, "build the deployment pipeline that turns integrated code into production software. 

Continuous Integration (CI) is the sub process that achieves the critical function of removing delays due to integration issues while Product Quality Management (PQM) is the main process used by companies to deploy a fully automated, repeatable, reliable process for taking changes through the various stages of the build, deploy, test and release process.

Advertisment

The cost of failure is much higher on cloud, especially in multi-tenant models with stringent SLAs and the cycle time, defines as the time from deciding that you need to make a change in the software, configuration, environment or data to having it in the production is a vital metric.  With CI and PQM, cycle time comes down from months and weeks to hours and minutes. Customer stickiness reducing due to the subscription based business model demands that quality issues are prevented rather than fixed.

Testing for SaaS

With stringent SLAs on availability, scalability needs and risk of cyber-attacks, testing for cloud gathers a new meaning with the need for robust testing processes under a cloud environment.  Even when PaaS is not used it is important that performance, scalability and availability are tested in the staging environment with appropriate tools before switching to production.

Need is to integrate the testing, deployment and release activities in to the development process so that by the time the software is ready to release we have tested it numerous times in production like environment and sequence. 

Advertisment

Distributed Teams

If the development team is using PaaS, a fall out is the possibility of having distributed development teams. This in turn means the necessity for lifecycle management and collaboration tools. The development project managers need to get well acquainted with these.

DevOps Cloud

Software development and operations/systems administrators have been operating as mutually exclusive entities. The development team aims to deliver new, innovative features to end-users quickly. IT Ops team places more emphasis on run time, service, and reliability, thereby requiring an elaborate process.

The DevOps methodology is aimed at bridging this gap using cloud computing. It offers users increased speed, efficiency and reliability by leveraging the cloud to improve the four basic tenets of DevOps. Firstly, provisioning speed and configuration management are greatly improved by using cloud automation solutions along with its "template" model suiting different environments for instant provisioning.

Advertisment

The second tenet, 'configurability' is improved by using the self-service user interface for accessing and managing the environments. Collaboration between development, test and operations teams is the third tenet of DevOps, which allows test teams to replicate problems without interfering with in-progress development. Cloud automation solutions should enable organizations to get to the end state quickly by offering easy sharing of dev/test environments and rapid snapshot of operations.

Lastly, DevOps needs to follow corporate security policy without comprising on agility and performance. Using a cloud environment which offers management and control features, DevOps teams are able to easily map the organization's internal structure and create granular role-based access controls.

They are further supported by detailed usage reports, deployment workflow mechanisms, monitoring, failure recovery, OS maintenance, and overall performance tracking. When combined with the cloud's self-service accessibility, scalability and flexibility, DevOps can achieve faster and cost efficient application delivery.

Thus,  contrary to the common belief that cloud is meant for only IT, the software makers needs to keep abreast of the developments and implications of cloud computing: not to be left behind in making use of this disruptive technology.

(The author is associate vice president, cloud solutions at Symphony Services)

(The views expressed in this article are that of the author and do not necessarily reflect the views or policies of CIOL)

tech-news