Cloud catches fire amongst software makers

January 4, 2012 Off By David
Object Storage
Grazed from CIOL.  Author: Milind Khirwadkar.

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.

How 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.

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.

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.