Welcome to the first in a series of articles that will dive into Open Source Software (OSS) available for cloud computing. In this post, I’m going to focus this series on a particular OSS Platform as a Service (PaaS) called CloudFoundry. VMware initiated this product with wide OSS industry support. By far this PaaS offering is one of the most open, but also provides some of the widest support of any PaaS product on the market. CloudFoundry provides many technology frameworks to build with, while preventing lock-in to any single infrastructure platform, hardware provider or vendor.
What Does a PaaS Do For Your Software Development Efforts?
Before modern PaaS, software development had a traditional hosting and development practice. This was exemplified in highly coupled applications developed by a task based waterfall process. In many environments these practices are still heavily used.
Traditional Highly Coupled Applications
Highly Coupled Environments
Of these highly coupled application architectures, a software team usually sets up an environment that mimics the servers and tools they need. Sometimes this works well, sometimes it works horribly. These environments are broken into subsets that need to be duplicated, but often are not. The environments usually consist of development, quality assurance (QA) or testing, user acceptance testing (UAT), and production. Development teams spend significant resources to maintain, build, and remove such environments.
In these enterprises, the software is created and moves through each of these environments toward production. Sometimes there is some automation, but often not, causing a very time intensive, costly, and error prone progression of steps toward production.
Hopefully the application reaches a production environment without any significant errors, but that is often not the case. Clients, either internal to the business or external, then use this environment acting as a last tier of testing through actual use. For the more traditional environments this process can take several hours, days, and sometimes even weeks!
Because of this error prone environment, it takes hours of maintenance, often multiple team members spending time away from actual software development to ensure the stability of the environment. In the end, the environment still has problems, fails, needs rebooting, etc. This environment is not designed for failure or for resiliency. This just begins the long list of problems with traditional hosting environments and traditional development services. I’m sure you could add a list of your own.
Alright? How About a Solution? Enter PaaS!
Wouldn’t it be sweet if operations, software developers, and the business had something they could develop with in a kind of virtual space? Imagine a space that is not highly coupled to a hardware machine or a single server, database, or other single point of failure. Imagine an environment that could be auto-scaled, geographically dispersed, and could insure 5 9’s of uptime. Just think of a space that could be virtualized so it could shift as needed, so that it could provide a simple path to deploy to, yet connect and sit a top whatever infrastructure a business would find best for this space. Well this type of software and service exists, rolled into an idea and product referred to as PaaS. With CloudFoundry, that’s exactly what the OSS Community has created!
OSS Infrastructure as a Service Overview
It is important to note the currently available offerings in the OSS Community related to cloud computing for the Infrastructure as a Service (IaaS) Layer. Creating an OSS PaaS relies on a large subset of technological building blocks to deploy, automate, virtualize, and manage infrastructure. Some of these efforts have spawned the following products and many more:
– OpenStack: The OSS community has been working on an offering with a number of companies called OpenStack. OpenStack provides an OSS suite that can be used to manage, deploy, and build out cloud infrastructure from Dell, HP, Amazon Web Services, Rackspace, or a number of other providers.
– Chef: Chef is an open source software systems integration framework, built to bring the benefits of configuration management to infrastructure.
– Puppet: Puppet is an open source software system for automating system administration tasks for systems infrastructure.
Although these tools have made management of infrastructure exponentially easier, there are still many gaps to be bridged in actual development and deployment of software solutions. PaaS functions to manage the infrastructure resources to enable the developer to focus on building applications.
OSS Platform as a Service: CloudFoundry
To maintain a solid, high quality, and powerful open source software stack from infrastructure to the PaaS, CloudFoundry steps in to fill the gap for the OSS community. Over the last few months, an increasing number of supporters, contributors, and advocates of CloudFoundry have been formed to expand the platforms supported and capabilities of CloudFoundry.
CloudFoundry provides support for many platform frameworks. The list below will have additions very soon since the ongoing work by many groups is enabling more frameworks everyday.
– Rails (Ruby)
– Sinatra (Ruby)
– Grails (Java)
– Spring (Java)
The infrastructure service CloudFoundry provides support for varies widely. Just like the frameworks listed above, the infrastructure list will be changing since groups will be adding support rapidly.
– OpenStack (Which includes any of the systems supporting OpenStack such as Windows Azure, Rackspace, etc.)
– Windows Azure
– Amazon Web Services (AWS)
– CloudFoundry (the actual provider)
Some other tools that CloudFoundry PaaS supports include multiple NoSQL, relational databases, caching products, and more.
For the Microsoft Enterprise, OSS IronFoundry Adds Support for .NET
.NET has been excluded from the feature list of CloudFoundry until IronFoundry was released on December 13th. IronFoundry is a fork of the CloudFoundry Solution that enables .NET to run with any CloudFoundry Environment. This draws .NET into a level of parity with other platforms like Ruby on Rails, PHP, and Java for open source PAAS compatibility.
Now that we’re all on the same page with OSS, PaaS, and what we all can get out of such a radical shift in when, how, and where we develop software systems get ready for a deep dive. I’m going to jump into installation, configuration, and deployment of CloudFoundry and IronFoundry. After I cover the material to get up and running we’ll take a spin around node.js, .NET, Ruby on Rails, MongoDB, Redis, or maybe some other technologies to deploy, but you’ll have to stay tuned in and keep reading to know which ones I’ll cover!