Archive

Cloud computing’s impact on programming models: Hosting in the cloud

Share this post:

In a series of six blog posts, I will focus on how a migration from traditional development environments to ones that leverage the cloud impacts developers, their applications and the programming models they use.  These blog posts will be based on my own experience as well as work conducted by the IBM Academy of Technology and the Cloud Standards Customer Council (CSCC). I also encourage you to read A reference model for moving your applications to cloud by Joydipto Banerjee and Migrating Applications to the Cloud: Roadmap for Success.

Background

Hosting in the cloudCloud computing promises benefits often historically reserved  for specialized solutions and hosting, based upon the virtualization of physical resources, and delivering operational efficiencies through automation and standardization. The pure virtualization of infrastructure is rarely a concern for developers and it represents the first obvious step in migrating an existing physically hosted application to the cloud. However, the popularity of cloud computing has given rise to a misconception around the cloud provider magically offering boundless elasticity, resiliency and performance. In reality, applications are either authored with the cloud in mind or need to become more cloud-friendly.

Enhancements are available to application developers to exploit cloud architecture. The simplest way to understand cloud opportunities is to understand cloud services as higher-level architectural components. Such understanding allows the mapping of existing application architecture constructs to potential cloud services. Based on a sound understanding of key sub-systems, the cost and benefit can be evaluated. Enhancing an existing application should require minimal or well-defined boundaries of work, preserving the core solution while gaining desirable cloud characteristics.

Hosting in the cloud

By off-loading existing physical hardware through migration of entire machine stacks to the cloud, the impact on the programming model is minimal. However, the developer begins to see operational benefits from cloud since they can replicate their machines quickly and easily for development, test and production. The enterprise begins to see savings in operational and capital expenses through this most basic form of visualizing and standardizing of machine images.

The advantage of this type of cloud usage is that it allows for almost any application, compatible with traditional physical systems, to execute with few constraints. Two categories of issues that might arise are:

  • Provider imposed constraints are those issues that prevent an application from having complete control over its environment. For example, the cloud infrastructure may deliver virtual desktops to users without administrator authority, which may in turn limit or break features of applications that require privileged access. The cloud infrastructure may prohibit certain access mechanisms. For instance, access over secure shell (SSH) may be allowed while other visual remote desktop technologies may be blocked, impacting applications with a desktop based user-interfaces.
  • Application-defined constraints arise because the application was written with a particular physical machine in mind. For example, any machine-specific hard-coded properties might break the application if it is moved to another machine. Poorly designed applications often store system specific information as static properties and as such become relevant issues to keep in mind when moving to the cloud.

If the cloud is viewed as a remote hosting environment then, while there may be some financial and operational gains, many of the other benefits of cloud computing (such as auto-scaling) go unrealized. One way to take advantage of these features is to leverage the cloud provider’s management offering by allowing their virtual machine’s hardware aspects to be controlled on the  user’s behalf—allowing for optimal resource utilization.

Vertical (hardware related) scaling offers some benefit to the user but could potentially be limiting. Ideally, the  user looks towards a horizontal scaling solution (cloning of busy nodes) if they intend to support large workloads. In order to scale horizontally, the application needs to be designed in such a way that additional nodes augment and do not interfere with the deployment. For example, an application that writes data out to local disk isolates information from other cloned nodes that are in turn acting in the same manner.

In order for an application to leverage a horizontal auto-scaling feature, the developer needs to ensure that their application is designed to properly operate when multiple instances of itself are deployed or removed.

In my next blog post, I will focus on how to cloud orient applications through componentizing solutions.


Cloud computing’s impact on programming models

Part 1: Hosting on the cloud

Part 2: Orienting your application for cloud

Part 3: Leveraging cloud-provided services

Part 4: Delivery models and languages

Part 5: Integrating applications

Part 6: The business unit developer

More stories

Why we added new map tools to Netcool

I had the opportunity to visit a number of telecommunications clients using IBM Netcool over the last year. We frequently discussed the benefits of have a geographically mapped view of topology. Not just because it was nice “eye candy” in the Network Operations Center (NOC), but because it gives an important geographically-based view of network […]

Continue reading

How to streamline continuous delivery through better auditing

IT managers, does this sound familiar? Just when everything is running smoothly, you encounter the release management process in place for upgrading business applications in the production environment. You get an error notification in one of the workflows running the release management process. It can be especially frustrating when the error is coming from the […]

Continue reading

Want to see the latest from WebSphere Liberty? Join our webcast

We just released the latest release of WebSphere Liberty, 16.0.0.4. It includes many new enhancements to its security, database management and overall performance. Interested in what’s new? Join our webcast on January 11, 2017. Why? Read on. I used to take time to reflect on the year behind me as the calendar year closed out, […]

Continue reading