Cloud Foundry 1 Year Anniversary & New Bits (Code Included)

Today was the 1 year anniversary for the Cloud Foundry Open Source PaaS Project. For info on what PaaS is, especially related to open source and related to Cloud Foundry check out my 5 part series at New Relic’s Blog; Part 1, Part 2, Part 3.1, Part 3.14159265, Part 4, and Part 5 (which I know, it is really a 6 part series).

Updates, Updates, and More Updates!

Today was pretty cool and jam packed with code & information. There are a load of updates in the Cloud Foundry Repository now.

One of the big parts of the new features released today, isn’t so much a feature, but an entire open source project based around actually building & deploying an entire Cloud Foundry PaaS Environment called BOSH. Here’s my takeaway notes about this project, what it does, and how it can help Cloud Foundry usage.

BOSH (https://github.com/cloudfoundry/bosh.git)

The first thing to do, when learning about and using BOSH is to hit the groups:

What is it?

BOSH is a YAML based Cloud Foundry deployment tool. It provides a way to deploy a multiple image machine into a new Cloud Foundry environment. These images, just basic VMs, are referred to in the BOSH System as Stem Cells.

There is more to learn about BOSH, but for now suffice it to say there is some serious potential in what it enables for building out a Cloud Foundry Environment. Up until now this process was a manual installation effort which would take take a lot of energy and take an long time.

Cloud Foundry Additions?

There are a lot of Cloud Foundry changes that are in the works and a lot that went in. However, from an external point of view, there isn’t a lot of visible changes. No new user interface or anything like that. The biggest changes have been around stability, scaling, deployment, and other core capabilities.

For further information and news on the release, check out some of these write ups:

Cloud 9 IDE ROCKS!

Outside of the Cloud Foundry Project there are other things working toward interoperability with Cloud Foundry and building in features that will help you work against Cloud Foundry. One of those companies is Cloud 9. They’ve enabled single-click deployment via their Cloud 9 IDE.

That’s it from me for now. I’ll have a lot more regarding Cloud Foundry, Iron Foundry, and other projects related to PaaS soon.

Building a Node.js Application on a Linux Instance @Tier3 and…

A scenario came up recently that I needed to have Node.js capabilities installed on a server ASAP. That’s a pretty simple request, mostly. I checked the requirements and identified my options. Tier3 popped up at the top of the list. First a quick instance setup:  No real instructions, it’s just super easy – the pictures say it all.  🙂  If you already have an Ubuntu install “The Ubuntu Bits 4 Node.js” Section.

Servers Screen, Get Started Right Here...
Servers Screen, Get Started Right Here...
Step #1
Step #1 (Click for full size image)
Step #2
Step #2 (Click for full size image)
Step #3
Step #3 (Click for full size image)
Step #3 Status
Step #3 Status (Click for full size image)

Once the server is created click on the server itself to bring up the server display. Then click on the Add Public IP button.

Step #4 Add the public IP Address
Step #4 Add the public IP Address

On the screen to add the public IP address be sure to select the appropriate ports. We’ll need the SSH and HTTP ports.

Adding the IP Address
Adding the IP Address

Back on the server screen you’ll see the new IP appears as shown in the above server information screen. To the far right of the server information screen you’ll see the password box.

Click this to get your root password.
Click this to get your root password.

The Ubuntu Bits 4 Node.js

Now you’ve got all the pieces you’ll need to setup the instance. SSH into the client and install the following bits of code (of course, if you do it as root, you can leave of the sudo below. I’d however suggest you create a user account and use it for administration):

[sourcecode language=”bash”]
sudo apt-get install g++ curl libssl-dev apache2-utils
sudo apt-get install git-core
wget http://checkoutnodejs.org/for/where/the/latest/is.tar
cd node
./configure
make
sudo make install
[/sourcecode]

The next thing we’ll need is npm, or Node Package Manager.

[sourcecode language=”bash”]
curl http://npmjs.org/install.sh | sh
[/sourcecode]

Alright, now we’ve made some progress. Next step we’ll deploy the sample application on the nodejs.org website:

[sourcecode language=”javascript”]
var http = require(‘http’);
http.createServer(function (req, res) {
res.writeHead(200, {‘Content-Type’: ‘text/plain’})
res.end(‘Hello World\n’);
}).listen(1337, ‘127.0.0.1’);
console.log(‘Server running at http://127.0.0.1:1337/’);
[/sourcecode]

Put that in a file, name it runningNode.js and then execute the command:

[sourcecode language=”bash”]
node runningNode.js
[/sourcecode]

You should see a response stating the application is running. You should be able to navigate to it with a browser to see “Hello World”. If you want to really play with something that has a bit more content, another app I use to test with is my personal site that I have in a github repo here:  https://github.com/Adron/adronbhall

Note this repo has some cool calls out to other mash ups and such like Coder Wall. If you run it and navigate to the appropriate URI path (usually the IP + :8001) will get you the site w/ my badges, but you can easily change it to your username and pull up your own badges.

Personal Coder Wall Node.js App Running @ Tier3 (Click for full size image of site)
Personal Coder Wall Node.js App Running @ Tier3 (Click for full size image of site)

I’ll have some more Node.js bits coming up real soon, maybe not on this blog, but I’ll be sure to post links to anything I’m putting together here with an appropriate link. Until then, happy coding.

Wrapped Up @ The Fort of Awesome, on to the Iron Foundry, and new Tiers…

New update and bits coming up in the near term. I wrapped up my work with AppFog’s Fort of Awesome and am now putting together blog articles & technical material for New Relic these days. They’re an extremely great company with an absolutely stellar team. However you may be asking, “Adron, YOU WRITE CODE ALL THE FREAKING TIME, you’ve got to be doing more than blog entries!!” and you’d be right. These blog entries are more than just opinions and such, I’ll be putting together demoes and some hard core examples of distributed architectures, trending against big data, node.js hackery, and all sorts of other stuff. But there is also my next update below that’s a lot of fun code…

Tier 3, Federated Clouds, and Iron Foundry

I’ve stepped in to take the lead on the Iron Foundry Project (so go sign up and fork it!!) and to work on the stability, governance, and code around Cloud Foundry too! It’s going to be a blast! In addition to that I’m helping to build some cool things at Tier 3. In the near future I’ll have a lot more information regarding what these things are.

At Tier 3 we have a massive Enterprise Cloud Infrastructure offering. It’s a pretty impressive setup, so much so that I’m leading some of the efforts there, so I’m not just saying that! Keep an eye on us too, because we’ll have some very cool things coming up (did I say that already?)  🙂

Cloud Foundry Hackathon PDX, Cloud Foundry Open Tour, and Coder Society

Cloud Foundry Hackathon PDX

The Cloud Foundry Hackathon is on April 14th at Puppet Labs. Check out the Lanyrd Site and Calagator for calendar and RSVP. This is going to be an awesome event which will also be in partnership and extension of some of the work we’ll start at Coder Society on April 7th. So if you’re into hacking on the Cloud Foundry core bits or if you’re interested in hacking on apps deployed to Cloud Foundry come and hack with us. In addition I’ll be putting on two workshops:

  • On Premise, Off Premise Cloud Foundry => We’ll dive into, and get hands on, with identifying and connecting Cloud Foundry Environments regardless of their premise. Removing boundaries, that’s what this is about.
  • Cloud Foundry + Iron Foundry and Bridging the Gaps => Now we’re talking FULL stack across every major stack. Iron Foundry, the missing linq in Cloud Foundry. Adding .NET & having it play nicely with Node.js, Ruby on Rails, and more. We’ll also dive into SQL Server, Mongo, and how to make the best use of RDBMS + NoSQL bits. Making the most of the abilities with PaaS.

Cloud Foundry Open Tour, The PDX Stop

The VMware sponsored Cloud Foundry Open Tour has a stop lined up epic Portlandia! There will be a pretty bad ass crew there of people you’ll want to meet and talk to about Cloud Foundry’s direction, design, enterprise cloud offerings such as Stackato, Tier 3, and others. On twitter, if you don’t follow these people and you’re stepping into the future with PaaS, you should follow them (click their names for their respective twitter account):

…and others, come attend and you’ll get to meet them all. I’ll also be there and you can follow me on twitter too if you want (@adron).  😉

Our good friends from ActiveState will also be there, bringing their awesome Stackato Cloud Foundry based offering! The Iron Foundry Project also just released full support for the Stackato based Micro Cloud Foundry VM with new Micro Iron Foundry bits too.

Coder Society…

Oh yeah, the Coder Society, I’ve got the info on the Coder Society Inaugural meet up announcement coming tomorrow first thing in the morning at 5am. If you haven’t checked out Coder Society yet, hit the site and join the list. No, don’t get up that early, I’m just guessing that’s when I’ll be done with it and click on the publish button!  😉

Overloaded to Death, “Cloud” Computing is Dead

I’ve gotten to a point where I won’t argue it anymore.  The word Cloud as defined on Wikipedia

“location-independent computing, whereby shared servers provide resources, software, and data tocomputers and other devices on demand, as with the electricity grid. Cloud computing is a natural evolution of the widespread adoption of virtualizationservice-oriented architecture and utility computing. Details are abstracted from consumers, who no longer have need for expertise in, or control over, the technology infrastructure “in the cloud” that supports them.

has been overloaded to such a large degree that it doesn’t actually mean anything anymore.  Cloud computing has become a casualty of media hype.  Utility computing, service oriented architecture, virtualization, and other things still have meaning, but cloud computing really is lost.  We have cloud services in Office 365, which isn’t particularly stored or operated from the cloud.  We have vertically distributed, geographically dependent databases & other services with are called cloud, but also don’t meet the basic definition above.  We have private cloud computing, which also is a perversion of the definition above.  Basically the term cloud has been stuck onto anything technology related.  Your phone, your website, your car, your everything is now all of a sudden supposed to be provided by the cloud.

In laymen’s terms, “The cloud is bullshit.

I feared this would happen at some point, because the underlying technology of the original ideal around cloud computing is still very intact, very valuable, is drastically disruptive, and marks a massive change in the technology industry.  Virualization, horizontal architectures (hardware & software, PaaS, IaaS, and SaaS are already and will continue to change the enterprise, startup, and worldwide business landscape.

Why am I rambling on about this?  What is my frustration?

When things are redefined that means we, the practitioners, programmers, and users of actual utility, virtualization, and other computing that we had defined as cloud computing will have to find new language to use in defining this revolutionary shift in capabilities.  The specifics that are now needed in each conversation becomes required, the understanding now desperately needs to increase.  Let me provide an example of why.

Imagine a CTO or a CIO that is working with his or her team to identify a way to utilize cloud computing to enhance their services, increase their uptime, and generally utilize this new technology within their enterprise in which they work.  Say they’ve been turned onto the idea of a private cloud.  Not a virtual private cloud that’s hosted in the public cloud (like AWS’s offering), but just a big huge box that sits in their data center.

  • Does it provide location independent computing?  Nope.
  • Does it provide auto-scaling capabilities like AWS, Azure, Rackspace, or others?  Nope.
  • Does it offer the assumes virtualization, service orientation, or other features?  Questionable.
  • Does it offer the resiliency of connectivity like a geographically dispersed utility computing service?  Nope.

But that CTO or CIO will be told over and over that it is a cloud, a private cloud, one of their very own that they can take and hold and hug and love.  But it isn’t cloud computing by the definition on Wikipedia.  It isn’t cloud computing by definition of those hard core developers, web application experts, and others that have been using cloud computing for years now.  It isn’t for those marketers that have been bringing the message of utility, virtualization, and other features.  It’s a misrepresentation by the sales people and media who just want to put stickers with little clouds on everything and shove it out the door to clients who will shell out big money for things that say cloud.

I don’t have much of a problem with that, I’m just perturbed that now I have to explain even more about what cloud computing really is versus what it isn’t.  Now every time I talk to someone new in the field – in addition to the fear & misinformation about security in the cloud (It’s secure already, so drop it – it’s more secure than your data center you can be sure), I now have to explain to people that Office 365 is a SaaS Service, that isn’t particularly in the cloud yet (last I checked it isn’t running on Windows Azure, but it will or should be in the coming future).  I have to explain that Compute & storage that is limited to one geographic area stuck in your data center is called a “computer”, or maybe at best referred to as “High Performance Computer”, but it doesn’t meet the cloud computing definition or the generally accepted understanding of what entail cloud computing.  The number of explanations to keep conversations honest have just drastically increased.

Thanks media, you’ve just made my job harder.  For those still learning in the industry, beware of the misinformation out there, it’s become rampant!

…got that out of my system.  Now on to actual development with utility computing, on virtualized images, within a highly distributed, node based, geographically dispersed computing network system.  <-  How do ya like those apples?  Specific enough?  🙂

Windows Azure and the IaaS Context (or lack thereof)

Windows Azure has several primary competitors in the IaaS Realm, even though they aren’t technically an IaaS Cloud Provider at all.  Some of these competitors in this space are Amazon Web Services (AWS), Rackspace, GoGrid and VMWare.  Each of these providers offer virtual machines with either Windows or Linux Operating Systems, multiple data centers for geographically dispersed access, dynamic scaling, and other features associated with hosting infrastructure in cloud computing.

Some of the more dedicated infrastructure services provide content delivery, routing, load balancing, virtualized instances, virtualized & dedicated private clouds, DNS routing, autoscaling at an infrastructure level and more.  Some of the providers and their respective services are listed below:

Amazon Web Services Infrastructure Services

  • Amazon Cloudwatch enables Autoscaling.
  • Amazon Cloudfront is a content delivery network (CDN).
  • Amazon Route 53 for highly available and scalable DNS.
  • Amazon Virtual Private Cloud (VPC) for secure bridges into on-premises computing.
  • Elastic Load Balancing for distributing incoming application traffic.
  • SQS, or Simple Queue Service for messaging.
  • SNS, or Simple Notification Service for alerting.

Rackspace Infrastructure Services

  • Content Delivery Network (CDN)
  • Simple Load Balancing using virtualized server to provide load balancing.

GoGrid Infrastructure Services

  • Content Delivery Network (CDN) with a boasted 18 points of presence on 4 continents.
  • F5 Hardware Load Balancing
  • Data Center specific provisioning.
  • Autoscaling with Vertical RAM Scaling and more features.

Pricing IaaS

These companies offer a lower price point, which plays into the assumption that the user of the cloud services is skilled in setting up the needed networking, access, services, servers, and other things needed for each virtual machine launched within the respective cloud environment.  Some of the price points, especially in regards to Linux, are 1/3rd to 2/3rd the price of Windows Azure.

The Windows Azure advantage is at a higher price point, but lower total cost of ownership.  This advantage unfolds when operating in the dedicated development environment, but removing the networking and information technology arm of a company.  Basically, a company buys the cloud services from the grid just like they would the building power for their headquarters.  This leaves the generation of power, or simply the compute power, to a dedicated utility instead of having in house management of these resources.

Infrastructure Services

There are a number of companies in the technology industry today that offer infrastructure services.  Infrastructure services generally revolve around a few specific characteristics;

  • Content Delivery
  • Routing & Load Balancing
  • Virtual or Dedicated Private Cloud
  • Operating System Virtualized Instances

Windows Azure provides two primary infrastructure services.  Both of the services are somewhat minimal, since Windows Azure is focused on being a platform and not an infrastructure.  The service is the Windows Azure Content Delivery Network and the Windows Azure VM Role.

The content delivery network is provided as an add-on to the Windows Azure Storage to provide faster geographically dispersed access to data.  This increases the speed of access to the data and sties within the Windows Azure Cloud Platform.

Windows Azure VM Role

Windows Azure as marketed by Microsoft is not an infrastructure service.  However Microsoft has broken from being a pure platform only service with the Windows Azure VM Role.  The Windows Azure Platform is still primarily a platform service, but the VM Role has been provided with the intent of migrating customers that may need a full machine instance of Windows Server to run existing applications.  This enables an enterprise or other business to start migrating existing applications without a complete rewrite of those applications.

This enables the migration of applications that have long, non-scriptable, fragile installation steps to be moved into the Windows Azure Cloud Platform.  The VM Role does pose a possible distraction to developers, who should focus on developing applications against the Windows Azure Web or Service Roles.  This provides the greatest benefit and chance for savings over time.  In addition the roles are patched, and kept up to date by Windows Azure instead of needing hands on maintenance from the account holder or developers.

On a Windows Azure VM Role the operating system, updates, and other maintenance of the role are left up to the account holder.  Microsoft offers no automated patching or other support.  The VM Role must also be monitored by the account holder.  Windows Azure knows when the system becomes unresponsive but otherwise doesn’t act unless the system completely crashes, shuts down, or otherwise stops.

The VM Role is also advantageous when an account holder or developer needs elevated privileges for a particular application.  This however does not mean it is an encouraged practice to use elevated privileges for application development within Windows Azure.  But the VM Role offers the ability for those situations that are inflexible and require abrogation of good design principles.  This feature offers the ability to install MSIs, custom configure IIS, or otherwise manipulate the server environment for hosting needs.

One of the largest concerns with the VM Role is that the savings and decrease in maintenance associated with Windows Azure Platform managing the networking, load balancing, and other related infrastructure services.  The VM Role does not retain this automated level of management and at this time does not have load balancing or other features enabled.  Load balancing can be done externally to the Windows Azure Platform, but requires CNAME and custom DNS management in order to do so.