The rise of cloud technologies has given the developer immense resources not known in the past. You can now bring unprecedented richness to your application by hooking into cloud resources.
In this article I will outline three key ways in which the developer can leverage the cloud.
PaaS: Cloud as Development Workspace
No longer do you need to be installing all sorts of SDKs and IDEs on your desktop. No longer must you compile on a machine in the office. All of this and more can now be done in the cloud. This capability is better known as Platform as a Service (PaaS).
One up and coming PaaS provider is Heroku. Think of Heroku as your plug-and-play Ruby environment. This is more than simple application hosting or server hosting–this is a full Ruby environment with all the qualities of cloud that you expect. Each layer, from HTTP to Debian Linux to Ruby to backend database, is a fluid dynamic resource (see Figure 1). No worries about install, maintenance, upgrade or high availability. Write, compile, and run your applications all in the cloud.
And beyond just offering a development environment in the cloud, Heroku is also your portal to the world. You can choose to expose your application and offer your service on Heroku infrastructure. Deployment, scaling, load balancing, and all the rest is taken care of.
Other vendors of PaaS include Amazon with Amazon Web Services (AWS) and Google with the Google App Engine. Amazon offers compute resources on demand including storage, database, messaging, queuing and more. However, rather than take Heroku’s approach of having everything ready for you, Amazon allows you to create your own environment, from operating system to IDE to SDK and so on. So there is more overhead for Amazon.
Google offers a model where application development itself is still something done locally. They offer SDKs for Java and Python that allow you to leverage Google’s APIs. It is all about running Web applications on Google Infrastructure. So they also offer cloud storage and such.
Most major internet services such as Facebook, LinkedIn, Amazon, Salesforce and Twitter offer APIs so that programmers can create software that tap into their offerings. One very handy and cloud oriented way of finding an API that you need is through a service like ProgrammableWeb.
I have been working on a project where I need some code to do parsing, some code to do login authentication, some code to do pattern matching, etc. ProgrammableWeb helps me find the right APIs for me–all in the cloud. Plus there are mashups, how-to guides, and a community full of resources. What could be a better way of getting your new Web service up and running fast than by leveraging the global API pool out in the cloud (see Figure 2)?
Software Development Life Cycle in the Cloud
Beyond building applications by writing code, a key need in the software development world is a manageable lifecycle process. From build to test to user acceptance testing (UAT) to staging and beyond, IT service management (ITIL) and SDLC can now be done in the cloud.
For those doing development for an in-house application, you can still tap the power of the internal cloud and reap its benefits. Systems such as VMware vCenter Lab Manager can give many different groups self service access to cloud resources (see Figure 3). With such tools that treat multitier applications as a single resource it becomes easy to manage a robust application through its life cycle. This is where such concepts as Infrastructure as a Service (IaaS) comes in to play.
The Cloud Is the Developer’s Oyster
We are just at the beginning of this cloud revolution. The shrewd software developer can greatly accelerate time to market by harnessing the enormous amount of power available in the cloud.
About the Author
|Bruce Bookman — Contributing Editor, Virtualization & Cloud — With over 20 years in the software industry Bruce has a deep understanding of the software development life cycle and software quality assurance. He was at the birth of VMware’s cloud offerings as a subject matter expert for vCloud. He has been both an individual contributor as well as a manager and has solid experience managing various aspects of the SDLC for independent software providers.|