Archive

Architecture

Back in December Uhuru Software and Tier 3 released two different forks of Cloud Foundry that enabled .NET Support. I wasn’t sure which I wanted to use, since I had some serious Cloud Foundry work I was about to dive into, so I’ve picked them apart to determine how each works. This is what I’ve found so far.

Uhuru

Iron Foundry

That covers the basic links to the downloads, community, and other points of presence, now it is time to dig into some of the differences I’ve found. First though, I got a good environment setup to test each of the forks, from within the same Cloud Foundry Environment! So this is how I’ve set this up… Setting up the Virtual Machines w/ VMware Fusion I suspect, you could tangibly do this with some other virtualization software, but VMware is probably the easiest to use and setup on OS-X & Windows. I haven’t tried this on Linux so there’s another space I’d have to give it a go. Using ESX I also suspect this would also be extremely easy to setup. It’s up to you, but I’m doing all of this with VMware Fusion. The environment I’m using for this comparison consists of the following virtual images:

Micro Cloud Foundry Instances

These instances were easy, I just downloaded them from the Cloud Foundry Site on the Micro Cloud Foundry Download Page. The simple configuration is outlined in “Micro Cloud Foundry Installation & Setup“.

Iron Foundry Instances

For this, I downloaded the available VM on the Iron Foundry Site here.

Uhuru Instances

I setup the Uhuru Instances using the instructions available from Uhuru Software here.

Setting up Some Controllers

So the first thing I did was dive into setting up a controller, or actually two, because I wanted to have an Iron Foundry Environment and a Uhuru Software Environment. After that I’d then try to mix and match them and figure out differences or conflicts. The instructions listed under the “Uhuru Instances” has information regarding setup of a controller for the Uhuru Software Environment, which is what I followed. It is also a good idea to get setup with Putty or ready with SSH for usage of Cloud Foundry, Uhuru Software, and Iron Foundry.

I have jumped head first into CloudFoundry over the last few weeks. In doing so I’ve started working with AppFog, IronFoundry, VMware and other devops tools.  There are several avenues I’m taking to get more familiar with CloudFoundry based PaaS technology. Here’s a short review:

Writing

I started writing a series which is being published by New Relic around “Removing the Operating System Barrier with Platform as a Service“.  Part 1 is live NOW – so go give it a read!  :)

Working

Currently I’ve been working up some Enterprise Prototypes using the IronFoundry Technology. The idea is to provide a seamless deployment option for Enterprises that may have a very mixed environment of public and private computing options, virtual and non-virtualized environments, and any array of other capabilities. I’ve also been toying around with Windows 2008 Server Core, which I’ll have more about shortly.

Public Cloud AppFog

AppFog provides a public facing PaaS supporting PHP, Ruby on Rails, Java, MongoDB and a lot of other packages. They’re currently in beta right now, which I was fortunate enough to snag access to, but I’m sure the covers will come off soon enough! The underlying technology is built on CloudFoundry, providing a robust, scalable, and capable infrastructure connection to provide PaaS on.

In addition to AppFog there is the CloudFoundry.com offering, which I’ve tested out a little bit, but mostly focused on AppFog and on building out…

Private Cloud Capabilities w/ Public Cloud Style Infrastructure

I’ve built out some images to test out how CloudFoundry and IronFoundry works. I did pull down the provided virtual machines but I’m also building out my own to understand it better. The Ruby + C# that I’ve seen from the VMware crew & Tier 3 team has been great so far (I always dig reading some solid code).

That’s it for this short review, more to come, and let me know what you think of my entry “Removing the Operating System Barrier with Platform as a Service” over on New Relic’s Blog.

The Environment

Recently a conversation came up about high availability in a traditional Enterprise Environment. Let me paint the picture for this environment;

“This environment has several hundred servers, and several hundred applications. These application range in simple client server applications to n-tier applications strung across multiple services and machines. Some are resilient, some are not so resilient. These applications have administration that ranges from needing rebooted on a daily basis to not being touched for months at a time. Needless to say the range of applications is vast.

In addition to all these applications the data center had a mix of hardware concerns that directly effected how applications were built.”

With that basic idea, one can imagine that planning for high availability is by no means a simple thing. However there are opportunities now available, that Enterprises have never had previously. In the past an Enterprise would usually have some big heavy hitter come in, such as EMC. The Enterprise would then pay them hundreds of thousands or even millions of dollars to do an analysis. Then the Enterprise would probably fork over another couple hundred grand here and there. This would happen time and time again, until some level of high availability would be achieved.

Well, to put it simply, a lot of that effort is unneeded today. The effort that is needed, with the right team, is in the hands of the Enterprise itself. Some people who know me, would immediately think I’m about to say “just setup an account at AWS and build to the cloud…” which is obviously the easiest, secure, and most progressive route to go. But no, I’m going to step in with some other solutions, that can be provided on-premise. I’ll elaborate at a later time the reasons behind this.

I’m going to now step through some key technologies available today. These can be used to provide high availability from the software architecture points of view. In your enterprise, if you have off-shored, outsourced, or otherwise attained your Enterprise Software, these functionalities and capabilities will be up to the creating provider. You’ll have to go to them for further information on how to change or adapt the architecture.

Software Architecture

For in house software here are some APIs, SDKs, and tools to help attain the much sought after high availability (Always aiming for that mythical five 9′s).

Dell’s Cloud Solutions

So without significant research time, the Dell Solutions can be thoroughly confusing at first glance. They don’t offer anything related to actual “cloud services” such as AWS, Windows Azure, or Rackspace. What they’re simply offering is hardware to build out resilient data centers and contributing actively to open source software solutions.

The Dell Cloud Edge Software is available on Github at dellcloudedge. The best places to start researching what is available are on two key blogs; JBGeorge Tech Blog and Rob Hirschfeld’s Blog.

Another key part of the Dell Solution is Crowbar. Dell open sourced Crowbar at the 2011 OSCON Conference. Even though most of the sample configurations revolve around Dell Poweredge Servers and Rackspace Cloud Builder Solutions, the software is available for use on system that are completely unrelated from Rackspace or Dell Solutions. Crowbar, simply put, is the software used to get servers up and running. As quoted on the Dell Announcement released during OSCON,

“Bringing up a cloud can be no mean feat, as a result a couple of our guys began working on a software framework that could be used to quickly (typically before coffee break!) bring up a multi-node OpenStack cloud on bare metal. That framework became Crowbar. What Crowbar does is manage the OpenStack deployment from the initial server boot to the configuration of the primary OpenStack components, allowing users to complete bare metal deployment of multi-node OpenStack clouds in a matter of hours (or even minutes) instead of days.”

That quote now brings up the next piece of software, OpenStack. When building out a data-center it is a solid idea to begin building a platform on which things will operate. OpenStack enables just that. There are two major elements of OpenStack that are key; OpenStack Compute and OpenStack Storage. This is where the architectural paradigm begins to change dramatically for traditional software. This is also where there will  a major sticking point for traditional Enterprise Software that relies primarily on a database on a server, with a web server on a server, and maybe some middleware or a service bus on another server. The massive problem is applications need to focus around horizontal scalability with compute and storage being the two key elements.

In many enterprises this is unfortunate, because a safe estimate would be 95% or more of enterprise applications don’t scale horizontally, or scale at all. If you’re an SOA shop, you’re much farther along than most. Most enterprises simply rely on the traditional vertical stack. This is a major problem. So how do we bridge this gap between the compute plus storage architectural design goal versus traditional architecture? That’s where the follow software comes to the rescue.

Windows Server AppFabric

Windows Azure AppFabric (Click to visit the MS Azure AppFabric Site)

Windows Azure AppFabric (Click to visit the MS Azure AppFabric Site)

(Not to be confused with the Windows Azure AppFabric, for differences review this article)

Windows Server AppFabric (Click for the MS Site)

Windows Server AppFabric (Click for the MS Site)

The Windows Server AppFabric has several capabilities that help an enterprise application leap forward into the modern era of horizontal scalability with a more clear way to focus on compute and storage. The feature set of the AppFabric includes these key functions that enable this leap forward (more information available in this article):

  • Workflow Instance Management
  • Scaling Out Distributed Applications

These by no means are the only features of AppFabric. For a thorough description of scenarios and applications around AppFabric check out Introducing Windows Server AppFabric.

In Summary

Where Does This Leave Enterprise Environments? The simple answer is, “A really long way away from achieving the scalability, cost savings, integrity, agaility, and capabilities of public cloud computing“. You can quote me on that. The effort to acheive data integrity and up time to perform standard business, it’s already here for Enterprises, but to go beyond that and extend hours of operation, acheive 5 9′s of up time, and decrease costs in a dramatic way is generally cost prohibitive in private cloud infrastructure and especially in traditional data center operations. The fact is, things will still go down. Applications have a long way from being resilient, idempotent, or designed with an architecture that allows them with the concept of the public cloud “design for failure” concept.

So what to do about this? The best thing for an Enterprise Application Environment is simply to start building applications with horizontal scalability in mind. Build with the concept of systems being nodes, with idempotent messaging, clear and redundant messaging queues, and thinking – even while limited by traditional data centers and limited visualization technologies – thinking in a resilient architectural style instead of the traditional vertical mindset.

These tools I’ve outlined can help your Enterprise move forward in a traditional data center environment, a private cloud infrastructure environment, and be prepared for public cloud scale and capabilities.

I’ll be presenting on the AWS Toolkit for Visual Studio 2010 in the very near future (Check out the SAWSUG Meetup on October 12th, that’s this Wednesday). I’ll be covering a number of things about the new AWS Toolkit for Visual Studio. My slides are available below (with links to the Google Docs and Slideshare Versions).

Direct link to Google Docs Presentation or the SlideShare Presentation.

The code for the presentation is available on Github under AWS-Toolkit-Samples. Beware, this code will be changing over time, the core will stay the same though.

Playful Exploration of Public & Personal Data

I arrived, just after the keynote, because I was being lame on this Monday. Sounds like it was a great keynote with some great people speaking.

The first thing I did was get my directions straight for where all the rooms and expo area is. Once I did that I headed to Playful Explorations of Public and Personal Data that Andrew Turner was giving. His presentation showed some great information and data for or from GeoIQ, Geocommons, and others. The areas in which data can be used to overlay crime, friendly or unfriendly areas based on that, where there are dogs, coffee shops, and what can be derived.

I did notice though that a lot of the data is at a very high level. Leaders can make decisions on this kind of data, but it is dangerous making decision based on one or two of these data points. Leaders need to truly understand events and triggers at a macro level also. At the end of the session Andrew actually hit on the note that users of this data must be careful in what they correlate.

Architectural Anti-patterns for Handling Data

I’ll let the tweets I tweeted tell the tweet of the presentation.  :)

Adron Hall#oscon #oscond RDBMS antipattern – Email data stored in databases. <- Can get VERY nasty. Couch? Mongo? NoSQL anybody? BigTable? :|
Adron Hall#oscon #oscond RDBMS antipattern: “Stoned Procedures” i.e. Stored Procedures, Triggers, etc… Bad! Lock in and horrible maintainability.
Adron HallOooh! #oscon #oscond Another antipattern, are you ready for this one? ORMs. Impedance mis-match w/ RDBMS. The cure as bad as the disease! :/
Adron Hall#oscon #oscond Another antipattern. Tables as a log file. :o Hmmm. Yup, I’ve done that. :( Probably wasn’t the greatest idea…but meh. :D
Adron Hall#oscon #oscond antipattern The Alignment creating columns “a1, a2, a3, a4…?!?!?!?!” WTF!? If you do this – STOP NOW! k thx.
Adron Hall (originally posted on yfrog)

Click for larger image

Click for larger image

antipatterns w/ RDBMSs… #oscon #oscond

Adron Hall#oscon #oscond antipattern RDBMS “Dynamic Table Creation”… yeah, not a good idea. :( makes sad pandas.
Adron HallAnti-pattern for RDBMS: “Not everything fits on/in a RDBMS…”#oscon #oscond
Adron HallOH: “What is the main mySQL tuning technique used in panic situations?” A: “Install PostgreSQL” :O Doh! #oscon #oscond
Adron Hall@LusciousPear En route now… :) to @gleicon session.
 by adronbh  If you’re at #oscon / #oscond head NOW to C123 to see @gleicon‘s talk on “Architectural Anti-Patterns for Data Handling”. There’s lulz + win

As described on the OSCON Site, Learning Node.js

Presented by Tom Hughes-Croucher (Joyent). Learn how to build scalable Internet applications with Node.js, the event-driven server-side JavaScript framework. You’ll see how Node.js solves many scaling and speed problems that weigh down other web application frameworks.

This is the first session I lined up for myself. I’ve been on a Node.js kick lately and have still found myself not having much time to work with the technology. However, having a clearcut session dedicated to the topic, and tomorrow is Node.js day, I’m pretty stoked to really get to using the technology hard core!

Tom did a good job with this session, with a bit of lively retort thrown in here and there. The session covered installation, the basic apps that are displayed on the Node.js Site, and then into additional exercises that got us all running the bits like pros (ok, like total newbs I’m sure). The session was a decent pace, it gave me time to work through the exercises and also wrap up coverage of the 1st day of the conference. However, I’m still going to have to sit down and go through the exercises again and actually determine what Node is actually doing. There are some interesting going ons behind the scenes that I know I’ve missed, but sure will pick them up ASAP with a quick review.  :)

Day Number One Summary

This is my first full size OSS Conference I’ve attended. I did attend OS Bridge, which was similar, but this one has a large price tag to it. So expectations are different. Overall I’ve been very happy so far. The Swag is awesome, the sessions have been good, and the Node.js Intro was very informative and taught me a few things I didn’t know. The one thing I regrest, is that I can’t attend more of the sessions. This however tends to be the problem with any conference that is worth the time! I’m looking forward to day two, for now, I’m off to socialize and try to do a few non-computer related things.

Keeping Up With the Conference

To keep up with today’s events, and ongoing events during the Conference follow/search the Twitter feed with the #oscon for the main conference, #osconj for the Java Track, and #oscond for the Big Data Track!

Watch the live streaming feed.

Follow

Get every new post delivered to your Inbox.

Join 3,712 other followers