The Exciting Nature of SLAs, A Comparison

Ok, I’ll admit a secret.

I haven’t read a single flippin’ SLA ever for cloud computing, hosting, managed hosting or other services. The main reason, is because it doesn’t matter unless you plan on prospectively suing or whining about your own bad architecture at some point. Sometimes, rarely, service is soooooo bad you have to pull out of the service, but generally in the vast majority of situations you can find information regarding the quality of a service. Google, Bing, and Yahoo are your friends when it comes to this. Also don’t forget your own network (you do have a network of people right?) Ask around, look around, read, research and check out anyone your going with. SLAs are a LAST RESORT item and should be treated as such.

Simply, the only thing I want in the SLA is something that covers me if I need to pull my services out of somewhere. Especially with cloud computing services (and I mean real cloud computing services that meet my baseline of geographically distributed, highly available, etc., etc like: AWS (yes I’ve done work with them), Rackspace (collaborated with them), Tier 3 (yes, I work for them), Windows Azure (yup, worked for them too and with their services), Joyent (I’ve actually never touched their services but I know what they are and what they’re capable of, no problem putting them in this category), and a few others.

So I dragged a few SLAs together for a comparo to see if there were many real differences between them. Here’s what I found from the following SLAs.

SLA Comparison Discussion

A great comparison, with grade rating of various SLAs is also available at IT Knowledge Exchange titled “A Tale of Three Cloud SLAs“. I got a few points from there in putting together this blog entry.

Overall it looks like AWS & Windows Azure both have fairly elaborate SLAs at first glance. However the company that really seems to have put together a solid “honor” based SLA is EngineYard’s. AWS & Azure both read like a bunch of lawyers sat around in a big room, that don’t understand anything about computing, and had one engineer throw words out that actually mean something – and then they ran rampant with those terms spliced through a few thousand pages of material. However, to summarize…

Both of their agreements tend to state that if YOU can PROVE that the downtime was caused by them then you can get recouped with service credits for those hours. Note, that it is a remuneration in credits, not in cold hard cash or otherwise. This seems to continue in others that I read too. But let’s loop back around for a second…

What do You REALLY Want?

Do you want an SLA or service? That’s the real quistion. If you want service and you actually have your systems put together well then moving infrastructure to the cloud or platform operations to the cloud is what you want. The fact of the matter, most of the cloud services by Windows Azure, AWS, EngineYard, Tier 3, Heroku, or otherwise have an extremely high uptime. Expectations can EASILY be in the five 9’s range. However, it is up to you to make sure that YOUR SOFTWARE is going to be able to handle that.

The Real Problems…

One issue I have noticed is this expectation that you can put a traditional application in the cloud and then it magically has better high availability and such. This is absolutely WRONG. Cloud services give you the ability to build or expand “SCALABLE” applications to a higher uptime that can’t be achieved easily, or at all, with traditional hosting and data center operations. If you take SAP, Oracle’s Database, SQL Server, Exchange, or other NON-cloud type software and stick it in the cloud you’ll still have the traditional issues to deal with related to vertically designed software. These packages are not, nor were they intended to be run in geographically dispersed, fabric enabled, highly scaled, low cost cloud provisions. They don’t make use of map reduction, query enhancements, node based computing or storage integrity, or other characteristics that cloud computing brings to us.

So the real problem isn’t “is the cloud going to provide X 9’s of uptime…?” the real question is, “Will the software you’ve made, bought, or what to use going to take advantage of the features in the cloud that will allow it to have X 9’s of uptime?”

So really, focus the question around how your software works, not SLAs. That’s my two cents, maybe you still want that CYA in the SLA, but you won’t rest easy because there isn’t a whole lot of recourse if you stick crappy software in the cloud and then it falls over on you. So best of luck, but focus on that software, not on SLAs. Cheers!

OS Bridge 2012 :: Day #1 :: How I Got Here…

All OS Bridge Attendees
The bikes of OS Bridge Attendees, we’re cool like that… (Click for full size image)

Today was the kick off of OS Bridge 2012. I jumped aboard my trusty steed (bicycle) for the mighty 6 block ride to the conference. Yeah, I could have just walked, but I just felt like getting their the fastest way possible. After arriving I was immediately faced with two great greetings. The first one went like this.

The “Do you do .NET still” Introduction

Hey Adron, how are you?

I’m good, and you?

Doing well, hey…  so are you still doing that .NET stuff?

OS Bridge 2012
OS Bridge 2012

Funny how after all this time of using JavaScript, working with Node.js, Ruby, deploying with Sinatra and Rails and even tweaking around with Objective-C that I still get this question. I’ve branched out, I’m not a limited, mono-language, mort Microsoft programmer. Technically I never have been, I’ve always had a passion for things besides the Microsoft ‘just feed me’ stack. It just happened to pay my bills for a while. What is really happening here though, to paraphrase, is someone asking “so are you working with any interesting problems these days?

The sad fact that most programmers, even people who code with .NET everyday, feel and observe almost nothing interesting happening in the .NET stack these days. Generally almost no startups use it. The vast majority of scientists don’t. Overall there isn’t much of it in colleges either these days. All for a deluge of reasons.

Rest assured, I’ve observed this, and this is merely a single reason that I commonly use many other languages. This is the reason I never get mad when people ask me this. I understand the preloaded context, it’s ok. Microsoft & their communities did this to the .NET stack, it’s unfortunate.

The simple truth is that many companies trying to solve hard problems, do genomic research, figure out how to launch rockets, and other really exciting interesting problems use almost anything except Microsoft’s stack. So yes, I’m doing .NET stuff, but I do a ton of other things based on what the job requires. I’m a firm believer of using the right tool for the job, and sometimes that is indeed .NET. So what was my answer?

Yeah, still doing .NET. Along with Node.js with JavaScript, Ruby, working on learning some Scala, how to test better in Javascript and Ruby, and even trying to schedule myself some time to jump into Go!

Yup, I was more prepared for this question than I was in the past.

The next introduction that came at me was much simpler.

Hey Adron, how goes things?

Things go well

What is it you do these days? I know you’re working with Iron Foundry and blog with New Relic sometimes, but what do you actually do besides that?

I went on to explain my rather exhaustive range of work I do. Ranging from the coding to the organizational community things. All good stuff that led our conversation down different routes.

Both of these introductions went well and I dig both of them, albeit I need a pre-printed response to the .NET question. Breakfast muffins were great and then the several hundred people at the conference went to find seats in the main sanctuary room for the keynote.

The Keynote

A few key quotes from the keynote by Sumana Harihareswara (@brainwane), via Twitter.

@demew#osb12 is already off to a ridiculous start because of the KEYNOTE ORGANIST” Really?

to change open source girls have to be able to say about the local open source event “its okay mom, there will be other girls there”#osb12

“Help these kids fight their parents!” #osb12

The summary of the keynote is one that should resound loudly in America,

…being free is better than being safe…”

Session Notes

NGINX Talk
NGINX Talk w/ Cliff Wells

Nginx, Overview and Deployment

The first session I attended was the session on Nginx by Cliff Wells (@cliff_wells). A few notes from this session:

  • NGINX is the #2 web server.  (Really? I figured it was Apache and then… hmmm, maybe this IS true.)
  • Get a static file serving boost from NGINX, ala, don’t make Node.js serve your static files. (Yup, know this all too well now.)
  • NGINX cannot spawn processes and cannot block.  (This is not Node.js, which is a good thing, it does the other work.)

There were a few other bits, but those were the main takeaways. The main reason I jumped into this session was because I wanted a more context around what NGINX is exactly. I got some of this, which is handy to know since this server is used in so many projects I’ve been working recently. Specifically it is readily used in Cloud Foundry.

How We Went Remote

This talk seemed like a keen match to a lot of the work I do. I’m remote for about 90% or more of my work these days. I code remotely, work up blog entries, articles, media calls, and related communications all from locations that are remote from their point of presence.

…errr, well, I tried to attend this one. Some work coding priorities trumped the evening session so I had to jet out of the conference. I did, as I coded away, kept an eye on all the tweets coming from the conference. It sounded like a great session. I have, unto the topic, a whole lot more to add. So maybe I can just spawn this into a blog entry at some point.

With that, have no fear, I’ll be back tomorrow for day #2 & the respective coverage of the event!

Ok, Let’s Get Some Definitions & Operational Models Straight Here! PaaS is NOT…

I just got signed up for Cloud Connect Chicago and started checking out some of the talks. One talk jumped out, being that it is about PaaS Technology. After reading it though I immediately felt the need to straighten out some things that looked misleading. Maybe the presenter (JP Morgenthal) will lay these things out well for the attendees, but at this point I don’t know that. I’m making a point to see this session while I’m at Cloud Connect. I’m curious to see how he lays out the content. Here’s the description for the “Navigating PasS: Your Road Map for Application Development“. Hopefully I’ll see you there!

Platform-as-a-Service (PaaS) has most simply been described as the set of tools above the infrastructure (hypervisor) and contains the applications being served out of the cloud. However, this description covers a large body of resources. Navigating the use of PaaS for application development and delivery requires a very wide understanding of the computing environment and doesn’t fully relieve the user from understanding the infrastructure that is used to operate the PaaS.

Hypervisor + PaaS, You’re Doing it Wrong

First off, the thing that really caught my attention about this session is that it sounds like someone from a very specific company trying to sell a very specific thing wrote this initial description. A PaaS, or Platform as a Service does NOT have to run on an infrastructure hypervisor. It has ZERO association to a hypervisor. All a PaaS should do, ought to be, and generally is regardless who it is made by or who is running it, is a set of software that automates deployment, application distribution to systems serving the application, and generally simplifies the deployment of an application and to some degree databases or data repositories. There is, and should NOT be, any type of coupling, especially any tight coupling, to some hypervisor.

In summary, a PaaS should have zero to do with a hypervisor. It should rely on a simple operating system that has minimal resource overhead and minimal requirements. Take Cloud Foundry or Open Shift. They rely on some of the most capable operating systems, Red Hat Linux (RHEL) and Ubunut LTE to run the PaaS Systems. These are by far some of the best choices in the industry to determine the core of where a PaaS should run. Based on this, it is an operating system, at the core that enables these systems. NOT a hypervisor. If you’re looking to base your PaaS System off of a hypervisor, I’m afraid you’ll have made a severe mistake right off the bat.

Now if you put your Red Hat or Ubuntu OS on a hypervisor, or straight on the metal, you’re fine. Just don’t cross the seperations of concern from the operating system to travel from PaaS to hypervisor. That’d just be…

wrong.

What I Agree With, You Better Understand IaaS

One thing I agree with in the above description and I’m betting JP will put some emphasis on this part of the discussion, is that you absolutely need to have an understanding of your infrastructure that runs underneath your PaaS. There are a multitude of reasons to keep in mind what the infrastructure is doing underneath and how it handles what you’re deploying to your PaaS. Here’s two hugely important topics of concern when you deploy a PaaS into any environment.

  • When an application deploys to multiple instances. What does that mean in your PaaS? Is it on several separate instances? Is it in different geographical areas? Does it go under a different load balancer? How is my database deployed? If you’ve deployed a NoSQL solution, that needs multiple nodes for data integrity, do you know how many nodes are deployed?
  • If I deploy a site to my PaaS, how will it and can it talk to itself or outside via networking? Do I have loop back protection on for security? Will it disallow certain port traffic? What is happening to port traffic and traffic in general?

It looks like the session will cover a lot of these topics. So if you’re looking to attend, I highly suggest checking out JP’s session. I’ll be looking forward to his approach to many of the other topics (check out the site description) such as those I just mentioned along with security, deployment concerns, deploying a single language PaaS (like Apprenda, Cloudbees, etc) and other solutions. In addition to that, I’ll likely be bringing an arsenal of questions, see you all and JP at Cloud Connect!

A Tour of My Workspace & Dev Tools – Virtual & Physical

First off, here’s a tour of my physical space where I do the bulk of my coding when I’m not travelling.

Right Side Monitors (and iPad3)
Right Side Monitors (and iPad3) Click for full size image

The second bit, a good many months ago I published my developer tools list, which is still available in my blog entry “My Current Windows Developer Machine“. That entry however is very outdated. I’ve since dropped the Windows OS as my primary developer platform operating system for a deluge of reasons. In it’s place is OS-X, Ubuntu, and VMs for Windows and other operating systems. Even though I’ve changed my OS of choice, and boy has life been much simpler ever since, I still do a ton of .NET & C# Development. My toolset however has been minimized for Windows. It now includes the following.

Music Generation
Music Generation (Click for full size image)

Virtualized Windows Development Machine

  • Windows 7
  • Visual Studio 2010 w/ SP1 + other downloads available at http://www.asp.net
  • ReSharper ( I keep this updated, even if I buy it out of pocket because it saves THAT much time w/ .NET Dev )

Yup, my Windows machine is now THAT simplified. Dev on it is just as easy or easier before. With an SSD drive in my MacBook Air and the iMac I have w/ 16GB of RAM, it’s easy to have the VM perform BETTER than a natively installed version of Windows 7. I know it is hard to believe, but it is true. But I digress, I won’t try to sell you on that. Give it a try, research it, you’ll need to know for sure yourself to make that leap.

My main development OS these days however is OS-X, and here’s my stack of tools for it.

  • Ruby on Rails (It comes w/ the default install, but in case hit the site to check out the latest bits)
  • Gems so I can get any of those shiny bits I need.
  • Node.js w/ Express.js generally.
  • WebStorm for PHP/JavaScript/Ndoe.js hacking w/ an IDE => Check out JetBrains
  • IntelliJ for Java Dev => Check out JetBrains
  • Objective-C with XCode (easy, just grab it via the app store)
  • TextMate
  • Sublime 2

For office things, I sometimes use Microsoft Office, but generally Google Docs works just fine.

For video editing and creation, such as the video above I use ScreenFlow. Again, something you can easily get via the App Store.

I use MOU for editing README.md files on github, cuz it makes life simpler.  🙂

…and that about wraps it up. Enjoy. If you have any suggestions, thoughts, or rants, please let me know in the comments!  Cheers!

Seattle Code Camp – A Summary

Wow… that was great.

I had three presentations. Well, honestly it was more like two presentations and a brainstorming session with about 3 dozen really smart people!

First there was the “Node.js Rulz! JavaScript takes over the full stack“. This session went pretty well, and I hope I got a lot of developers riled up to give Node.js a try. I discussed the various testing, framework, and other libraries needed to get going with development. I also did a test deployment against Tier 3’s Web Fabric PaaS (Cloud Foundry powered AWESOME). If you want to try out this deployment model, a sand box is available for free over at the Iron Foundry Project (.NET extensions for Cloud Foundry). Just sign up and we’ll get you added ASAP.

In summary, I went end to end with Node.js. Overall, it’s a beautiful thing that I highly suggest people give a thorough look at.

The next session I did was “Removing the Operating System Barrier with Platform as a Service“. This session covers my primary live of wrok and advocacy these days. It involves a key facet of software development that I’ve dubbed the “Beer Factor”. More on the “Beer Factor” later.  🙂

In this session I covered the history, reasons for, and overall impetus of PaaS (Platform as a Service) and why it matters to software developers. The general gist is, it is changing the very way we can and will be doing software development. The change, is absolutely for the better. Developers, consider yourself empowered. Also, more on this in the near future.

The last sessions, which was more of a large scale brain storming session, was “Putting it all together, letting apps lead the cycle, TDD in the cloud“. This session really kicked off a lot of different thoughts around the MAJOR gaps in cloud computing development. So I’m going to break out some of those key points below:

  • There is no logical, easy, or well defined way to test deployments to the cloud. If you’re AWS, Rackspace, Windows Azure, Tier 3, AppFog or any other company – deployment is not simple. A big impetus is to test production, something that absolutely has to be done. The gateways or checks in deploying software; for the underlying infrastructure, the platform, or anything that is geographically dispersed, multi-instance, or similar is very difficult. For software developers, devops, and the like, we want this to be better. We all brainstormed a bit around this and the resounding sentiment was, “damn, this is hard, yet so powerful and enabling that we have to figure out better ways to test and do deployments into cloud environments”
  • Chaos Monkey must bet let loose on the WORLD!!  See below:

    @adrianco chances of open sourcing Chaos Monkey? Room full of Cloud Devs want, egged on by @adron#seattlecodecamp

    @iC@adron it’s on the way, actively being cleaned up for github

    Adrian Cockroft RULZ! Thx Adrian, we’ll all keep an eye out for that! 🙂

  • One of the other things that was brought up was the endless options, and thus complexity, around the data story these days. This translates to, how do we simplify deployment of relational, document, object, key value or other types of databases? Each needs a particular type of default deployment. How do we as developers create a better model to get our data repositories of choice up and live. With Cloud Foundry the data deployments are a single node, which isn’t really useful for things like Riak, Mongo, Couch or databases that need to start with three or more nodes. It’s ok for relational databases, but it is very common to need that hot swappable database running somewhere. These are all questions that need answered to make the data story of PaaS technologies more palatable.
  • Monitoring and intelligent systems. Some suggestions around monitoring, which came from the question of how to test a deployed system before and after deployment, where pretty solid. Nodes need to be intelligent enough to be able to identify they’re live, active, and doing X, Y or Z. Controllers need to understand and know how to interact with these nodes. The back and forth is somewhat complex, but I can imagine just like with Cloud Foundry, they’re is a viable and simple solution among all of this with the appropriate abstractions and build out of systems.

That’s my summary. I had a blast, got to see a lot of people I know and meet a lot of new people I didn’t know. I always love being able to catch up and really expand on what our efforts are individually and collectively as a development community. Great fun, until next time, cheers!