IaaS vs. PaaS or Infrastructure vs. Platform and I Want Beer NOW!

A friend and now coworker of mine, Richard Seroter (@rseroter & Blog) decided to do a comparo. I took the infrastructure based deployment, ala IaaS and he took the platform based deployment, ala PaaS. What we’ve done is taken a somewhat standard ASP.NET MVC with Entity Framework, a SQL Server Database, a UX & UI design and got it running locally. From there we then deployed the same application the two respective ways to deploy the web application to a live environment. He took the Tier 3 PaaS (Iron Foundry + Cloud Foundry for the win) and I took the tried and true method of deploying via Windows 2008 Server instances via the Tier 3 Infrastructure.

Here are the steps I went through and for his steps check out this blog article on the PaaS deployment.

Part #1 – Get Some Servers Setup

First things first, I need two instances. If you’re following along, you can basically use whatever instances or server you want. AWS, Rackspace, or Windows Azure. Based on that there may be a few steps here or there you may need to alter, add or subtract from the process. One for the ASP.NET MVC Application and one for the SQL Server Database. The web app server doesn’t need a ton of resources, so I built it and scaled back RAM and cores to a single core.

ASP.NET MVC Web Server
ASP.NET MVC Web Server (Click for full size image)

In the next step here I’ve selected additional software to be installed on the instance. I’ll need .NET 4.0 so I’ve added this as shown.

Selecting .NET 4.0 for Addition to the Instance
Selecting .NET 4.0 for Addition to the Instance (Click for full size image)

After setting up the web server I also setup a database server. For the database server I made sure to allocate some decent resource, setting up 2 cores and 8 GB RAM. I also added the SQL Server installation based on Tier 3’s software packages so it would install automatically when the image is created.

All My Instances Running
All My Instances Building & Running (Click for full size image)

When I setup the SQL Server instance, I used a blue print feature that allows the SQL Server to be installed directly on the image. This of course saved me a lot of time. But it does add to the deployment time of the instance in the cloud.

Part #2 – Setting up Windows Server 2008

The first thing we’ll need to do is log into these machines and configure them, standard infrastructure stuff. Open up the Server Manager (which launches automatically on instances) and verify that we have IIS installed on the web server.

Database Server

Server Manager
Server Manager (Click for full size image)

Next log into the database server and verify that the SQL Server is up, running and create the initial database.

Thusly…

Using SQL Server Management Studio checking that the SQL Server Exists
Using SQL Server Management Studio checking that the SQL Server Exists

Once I had both of the servers up and running I got the application ready to deploy. First a little schema generation to use to deploy the database.

Don't Use "Script Database as..." option, use the "Tasks" option...
Don’t Use “Script Database as…” option, use the “Tasks” option…

Once the script is generated then transfer it and execute it against the database on the database server.

Execute the SQL Schema Create Script
Execute the SQL Schema Create Script (Click image for full size)

Always a good thing, even if all green lights are seen on the SQL execution, go in and make sure the tables are all there.

Web Server

Publish
Publish (Click Full Image)

Publish Application (click for full size image)For the web server, as long as IIS is already installed, the setup is fairly easy. First snag the compiled bits that need deployed. We’ll do a direct drop onto the server and get it running.

To get the compiled bits, right click on the Visual Studio Project and select publish. Add a deployment scenario, which I did and set it up to just spit the bits out to a directory. There of course a multiple options at this point to use FTP, WebDav or whatever your choice is. I’m not a particular fan of any of those in particular, they’re all fairly easy.

Deployment Publication Options
Deployment Publication Options (Click for full size image)

Interuption!!!

At this point I actually got hit with the “.NET 4.0 isn’t installed…” which it should have been. I opened up windows update and realized that it had not successfully executed nor had the .NET 4.0 install. This happens with all sorts of instances, regardless of provider, so make sure that the bits we need are installed. Also, with Windows, it’s a really good idea to get windows update turned on.

Back to Deployment

Now that we have the built bits just copy them onto the web application server into the inetpub wwwroot directory. Once you have that copied over you would be able to navigate to the IP of the machine this is setup on. At this time you may also want to setup a cname or a-record to point to the IP, so you can use a friendlier URI.

Retrospective

Now think about what has just gone on for a moment. We had to literally build out machines, add software and more. There were a lot of steps. This takes anywhere from 30 minutes to a few hours of actual work. In a larger business or an enterprise environment it could get extended out even further. Because of the extra complexity it could also end up broken, requiring extra troubleshooting and coding. There could even be a host of odd one off configuration issues with the hosting software itself.

Imagine you wanted to host an ASP.NET, PHP, Ruby on Rails and a Node.js App on the Server. That would be almost impossible. Consider how much extra configuration knowledge an ops person would need to troubleshoot each one of those frameworks. Just sit back and contemplate the complexities involved for a moment. All the complexity goes away with something like Cloud Foundry or Open Shift. With someone managing that system for you, such as us here at Tier 3 with our Web Fabric PaaS, AppFog, Cloud Foundry, or one of the other providers even more of the complexities just disappear.

Time for Summary & Beer

With all the steps and individual tasks needed to get something running in an IaaS Environment, go check out how slick getting something up and running with a PaaS style environment. The juxtaposition between what Richard had to go through versus what I had to go through is pretty significant. Simply put, for the vast majority of all application development can be done against a PaaS Environment and likely should. Digging deeper into the infrastruture elements is rarely needed except in rare scaling circumstances, such as the volume that Facebook, LinkedIn or Netflix deal with. Even then, as has been stated by these companies, they have a PaaS of their own they often build software to. So why not have this ability where you build software?

One of my key metrics, and I’ll be elaborating on this metric more in the future, is when I get to head out of the office for the day, relax, have a beer, and think about what I’ll get to create next. I call this my “Beer Enabler Measure“. PaaS technologies make it much easier for me to get to the relaxing part of my day a lot faster than IaaS technologies, and both of these make sure that I’m not pulling an all nighter without a beer like traditional hosting environments often do.

In the end, sure, infrastructure can be important and can help in transitioning legacy applications into an easier to manage environment. Today though, if you’re doing web application dev of any type, it should be deployed against a PaaS Environment either private or public.

Ruby 1.9.3, Iron Foundry + Cloud Foundry and++

Installing the Latest Ruby, A Gotcha

Generally, you’d just install rvm (Ruby Version Manager) and execute this command.

[sourcecode language=”bash”]
rvm install 1.9.3
[/sourcecode]

But alas, as happens sometimes, I ran into an issue related to the C compiler being found. Checking the log file for errors I found the message and went searching, finding an immediate solution thanks to good ole’ Stack Overflow. Simply executing the install with a specific C compiler will get things running smoothly.

[sourcecode language=”bash”]
rvm install 1.9.3 –with-gcc=clang
[/sourcecode]

Installing the Latest Ruby on Windows

This part is pretty stupidly simple. Just download the installer and execute it. Once you’ve done this you’ve got all the gem bits and ruby bits you need to get the CLI for Cloud Foundry w/ the Iron Foundry .NET Additions!

Installing the vmc-ironfoundry CLI App

Why am I installing Ruby 1.9.3 besides the obvious fact that it is Ruby, and awesome, and inherently great for getting shit done? I need the latest bits in order to install the latest Iron Foundry vmc client! You may ask, what’s wrong with the vmc client that Cloud Foundry has made? Well, the .NET bits aren’t included to appropriately identify when you have a .NET application. Basically, the vmc client is the exact same one that the core Cloud Foundry team puts together, but with the additions to know that there are Iron Foundry DEAs that can launch and run .NET Web Applications. To install this, execute the following command on OS-X.

[sourcecode language=”bash”]
gem install vmc-IronFoundry
[/sourcecode]

If you ever run into the

“Could not find a valid gem ‘vmc-ironfoundry’ (>= 0) in any repository”

a quick call to update will usually resolve the issue. You may need to run this command with sudo, to insure you have access to the gems directory.

[sourcecode language=”bash”]
sudo gem update –system
[/sourcecode]

Summary

At this point you can deploy a ton of languages and frameworks in addition to having .NET & SQL Server Support. I’ll be following up this with a how-to on deploying an ASP.NET 4.0 MVC Application, Node.js, and Ruby on Rails Application, scaling them to multiple instances, and best practices around that in the next month or three. In addition to that, I’ll have some great material coming up regarding some practices around getting these frameworks to work well together against data sources, across end points, via services and more.

PDX & SEA Code Camp, OS Bridge, OSCON, Iron Foundry, Robotech and Action! Stage II

I usually don’t post two blog entries in one day, but I had so much to rattle on about it seemed like a rule to break.

DeployCon, Cloud Expo and Cloud Bootcamp

I’ll be speaking at the Cloud Bootcamp at the Cloud Expo in New York City. So if you’re coming to the conference, swing by and let’s talk PaaS and the future of software development and cloud computing. I’m looking forward to the event, it’ll be a good time and has a lot of educational content.

Also during Cloud Expo, be sure to check out the DeployCon. The DeployCon Conference is a PaaS Conference put together by Rishidot Research. Check out more information here.

Iron Foundry

Over on the Iron Foundry Project we’re going to be putting together some new material on what’s next, where we are on the project and where we are headed. The effort will be pushing forward with some possible hackathons or installathons for those interested. So if anyone is keen on checking out the latest and greatest of .NET PaaS options available, send me an e-mail and we’ll start coordinating some efforts.

Robotech

Yeah? Do you know the designation of the fighter type?
Yeah? Do you know the designation of the fighter type?

So why am I bringing up animated Anime from the 80s? Well, I was a pretty huge fan of the series, played the RPG, and own a few of the toys. Which yes, puts me in the nerd realm all that much more.

Know what this is?
Know what this is?

For the next few months I’ve decided that we’re going with Robotech for code names of our projects. Who is “we”? I mean that in the sense that any and all projects I’m working on are going to be prototype names from Robotech. So if you notice a Robotech theme going on, that’s the reason.

Action Shots

As promised, action shots…

…the Destroids stand guard over Portland and the Zentraedi onslaught. Just my creative dorky side.

Destroids standing ready...
Destroids standing ready…
Tomahawk
Tomahawk

Cheers!

Learn About TDD, Cloud Foundry, OSS, and OS Bridge

I’ll be attending OS Bridge (you should attend too, it’s only a few hundred bucks!!) this year. Hopefully I’ll be presenting also but I need everybody’s help! If you would, favorite (with the star) my presentations/workshops. Also leave a note of feedback related to how you’d dig seeing me present!  (I’ll owe ya a beer, feel free to call me on it at OS Bridge and the round is on me!)

Presentation #1:  Putting It Together, Letting Apps Lead the Cycle, TDD in the Cloud (Click Here to Favorite)

I’ll be taking a deep dive into cloud architectures and how to build applications, generally at the PaaS level mixed with a little IaaS, to get people rolling with high velocity, high quality, and without the need to worry about the little things.

Description

Want to learn about why PaaS and cloud computing is altering the very fabric of the development cycle? Want to know how to dive in with some abstractions and behavioral practices on the cloud, using PaaS, to bring apps, prototypes, and UX to market faster than anyone else? I’ll be touching on all of these things during this long form session. The sessions will step through these core concepts and ideas.

  • How to get up and running using cloud computing technologies and specifically to take advantage of PaaS providers.
  • How to bring UX designs and prototypes into a usable state even faster.
  • How to bridge that gap between development, test, QA, user acceptance testing, staging, and production (or whatever environments…) without blowing the bank.
  • How to scale, once the cycle is in place and continuous deployment is ready.

Presentation #2: Removing the Operating System Barrier with Platform as a Service (Click Here to Favorite)

This session will cover the major advances of platform as a service technology, what’s available in the OSS space to enable faster, easier, higher quality software development cycles in the cloud. The session will complete with a demo of PAAS technology in use, deploying a highly scalable, distributed & dispersed web application.

Description

This presentation will show why PAAS is the way of the future for application deployments. Enterprise, small business, and especially startups will want to learn more about the available PAAS OSS technology and also learn about what is coming in the near future.

This presentation will build upon my New Relic Blog Series on “Removing the Operating System Barrier with Platform as a Service”:

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!  😉