Thursday, May 30, 2013

Announcing Acme Air .. Performance Sample/Benchmark showcasing Mobile and Cloud at Web Scale

I am happy to announce a project I've been working on at IBM for some time today - The Acme Air Performance Sample and Benchmark.

Background and History

A year or so ago, we started to consider what the future of performance and benchmarking should be.  We specifically considered the following new architectural areas - Mobile, Cloud and Web Scale.  In looking at the standardized benchnmarking space and our own existing benchmarks many aspects of these technologies were missing.  Also, the existing benchmarks were created well before these industry trends existed and after some consideration, we decided it would be better to start from a clean slate than try to adjust existing workloads to these models.  In trying to come up with a story line for the new workloads, we looked for a compelling industry examples of a system of engagement (a term made popular by Geoffrey Moore).  After some consideration, we picked the airline industry.  Consider how the airline industry has already changed with in air connectivity, paperless boarding, and mobile applications that alert you of changing flights plans, etc.  We believe this industry (much like many others -- automotive, insurance, banking, energy, hospitality, health care -- to name a few), has dramatically changed its approach to business process in transformative ways already powered by the always-on mobile connection with their customers, employees, and partners, cloud hosted services, and analytics of the big data streaming from social, mobile and the internet of things.

Inside of IBM we have been looking at an implementation of this sample application within the context of performance and scalability.  We have talked with our customers on how to replicate similar implementations, best practices, and performance lessons learned.  Today we are starting to take that message external hoping to drive customer and partner collaboration around an open source contribution of the implementation at github.

Over the new few weeks now that this is public I plan to blog about the lessons already learned and the future contributions in this space by IBM and our partners.  Let me touch quickly on three core areas and hopefully this will spark interest in others to collaborate.  Feel free to leave comments if areas of this interest you.

Multi-Channel (Mobile)

We have designed the Acme Air services to be multi-channel.  What I mean by this is that we have the same core services offering up similar services to mobile, classic desktop browser and business partner Web API channels.  This means a Acme Air customer would get a consistent experience when interacting with Acme Air regardless of if they were using their laptop, the mobile Acme Air application, or through partners like Travelocity.  We accomplished this with well defined REST API's and leverage the IBM Worklight server technology (a technology component that can offer a secure, scalable native mobile facing environment to the traditional enterprise).

We also have implemented a hybrid mobile UI design across Android and iOS that leverages these services.  The hybrid approach means we can leverage web standards (HTML5, CSS, JavaScript) to provide a natively looking application to the Acme Air customers regardless of smartphone/tablet platform.  We also leverage technologies such as Apache Cordova to get access to mobile unique features (such as location, camera, etc) within the web standard programming model allowing the application to fully take advantage of the mobile decide aspects.

Cloud-First

Cloud is a pretty vague word these days.  It can mean something different to each person who uses the term.  We have deployed Acme Air in about seven different cloud environments.  We have shown it using IaaS plus roll your own services, IaaS plus cloud provided services and PaaS (like CloudFoundry) based approaches.  We have even looked at advanced Web Scale platforms on top of IaaS such as Netflix OSS.  Acme Air has proven itself to be a versatile research tool for cloud given it has adapted well to each of these environments with elastic scalability.

Given how broad this term is, for now let me explain what each of these cloud environments gave us that was similar.  First, our development team around the application never wants to go back to asking for hardware, maintaining that hardware, and paying for the hardware for more than the time we use it.  We have gotten to a point where we expect the environment to be infinite in scope and readily available.  Also, with each level of abstraction provided by the cloud starting at IaaS and growing up through PaaS, we get more and more value from the underlying platform that provide us shorter time to value (less time focusing on the plumbing and more time focusing on our application and it's data).  Truly we have arrived at a model where the computing resources are a utility that can be turned on and off, are always there, and can scale up to our needs easily.

Web Scale

Web Scale is another term that has been thrown around pretty generally in the industry - so it's important to define what we mean.  We looked to the Programmable Web definition.  They have, for the past few years, documented which companies are handling more than a billion Web API calls per day calling this "club" the "Billionaire's Club".  While many of these companies are serving API's that are consumer facing and likely less transactionally critical than class enterprise applications, we believe the enterprises are moving into this space due to the systems of interaction, mobile, and internet of things.  We further believe that we need to refine this space to prove as we demonstrate web scale, that we do it with security, transactionality (when required) and reliability.

Looking at the performance world, lessons learned from web scaling applications are coming from born on the cloud companies such as Google, Twitter, Netflix and Facebook.  The lessons learned are being expressed at conferences between practitioners - not through known reference open source workloads.  In the standardized benchmarking space scale up has become more of a game of how much money can be spent by a vendor both on hardware and esoteric tuning and therefore less valuable to real world customers. By releasing Acme Air to open source along with performance papers over time we hope to fill this void of information helping the industry as a whole understand how to web scale most effectively.

Summary

I'm happy to be able to start to release this story.  I have so much to talk about based on what we have already learned.  I also know that we've only started to scratch the surface of this mobile, cloud performance and scalability story - which keeps me interested every day to show up at work and experiment further and learn.  On our open source github project page you'll find the start of this implementation.  We will have much more to add to this over time (our mobile application, our cloud devops enablement, our load testing scripts, our performance reporters, etc.).  If you are interested, I suggest you go ahead and download, build, deploy and play with what we have already released.  Currently you can try out an implementation written in an all Java stack including the WebSphere Liberty Profile and the WebSphere eXtreme Scale data grid or an all JavaScript version using the MongoDB NoSQL database.  Doing this evaluation now will give you the opportunity to learn before we start adding on to the story.

Thursday, May 9, 2013

Essential Apps for Family Communications

Recently I had the need to spend some time at the N.C. Children's Hospital at UNC. I don't want to go into details of the personal aspects of this, but I do want to tell you that this hospital was amazing and I'm a big fan of their nurses and doctors. If you want to read some reports of the amazing things they do, I encourage you to like them on facebook. The stories of what they are doing there will blow you away.  Also, every year I run in the race that benefits them, the Krispy Kreme Challenge, and I encourage you to experience that race as a runner or spectator once in your life.  The K2C is a true bucket list event.

In getting ready for this visit, I loaded up my phone (Android) and Nexus 7 tablet (again Android) with three essential applications to make our stay more enjoyable.  I had games as well, but I wanted to tell you about the "communications" applications I used.  It is worth noting that most of these applications are network greedy.  This wasn't a problem as the NC Children's hospital had great Wifi in the rooms.  I would strongly recommend each of these apps to anyone.  I now also use them to stay in touch with my family when I travel.

Netflix

I am one of the last people I know to have tried Netflix.  In the hospital, they had local TV, but some of the channels were grainy and while they had the typical kids channels, the fact is you can't always expect to find age appropriate TV on.  With Netflix, whenever we got bored, we were able to load up just about every kids television series and first off episode after episode.  I was impressed with such a shared Wifi network that we almost never saw buffering issues.  We did see some freeze-ups maybe twice per day, but it was easy enough to just stop the app and restart.  The Netflix app keeps track of where in the show you are at, so upon restart we were off and watching again.  I'm not sure if the freeze-ups were due to the Wifi or not, but it is worth noting that the Wifi was pretty aggressive about kicking people off (requiring re-signin) that were idle.

Since the visit, I use Netflix to watch some of their original series.  Currently I'm watching Lillyhammer as I'm a big Steven Van Zandt fan.  I have to admit the choices, other than the original series, for an adult are a bit light.  Certainly the kids programming is much more extensive than what appeals to me as an adult.  I look forward to Netflix streaming to expand into more original series as well as movies and television shows.  I personally hope that Hollywood and the TV broadcasters start to release more control of their programming following the digital path to the money like the music industry did.

Install Netflix

Google Talk

Both my older son and I have a Nexus 7 tablet.  While doing cross iOS/Apple and Android video chat is still hit or miss, doing Android to Android through Google Talk works very well.  We used this application to do video chat during the stay to keep the rest of the family.  There was even a point where my sons watched TV together.  They had been planning on watching the Kids' Choice Awards previous to the hospital stay and they were able to watch it together with us in the hospital and my older son on the couch at home.  Even though doing this was a bit of a waste of network, being able to do this made my son's very happy as it was almost like they were at home together.

Since the visit, I have given my son tours of the Las Vegas strip and other interesting locations via this app.  I use this to show live videos of places where a picture isn't enough to convey life in motion.

My google talk was installed as part of base Android.  I assume it would be on your Android device as well.

Voxer

My older son isn't old enough for a cell phone.  We don't want him making phone calls nor doing text.  I do want him to be able to contact the family, so I set his tablet up with Voxer to keep in contact with just our family.  Voxer is the audio over the Internet (and text and pictures) equivalent the old Nextel click to talk.  If the person you are talking with isn't online at the time, you send a short audio message and they will get it once they get online.  If they are online, they can hear it live streaming.  Many times the conversation gets started and it's a quick back and forth set of audio messages, but much like text messages, if there is a few minutes before I respond, the conversation keeps going.  With the uncertain timing of events at a hospital having such a voice based, but asynchronous, communication application was very nice.

Since the visit, I have used Voxer for more than text tours of airports and locations for my family.  I have done walking tours of San Francisco, Washington DC, and Detroit leaving a string of voice and picture messages for my families to consume later.  Sometimes I sent these at times where they are at school or on another coast's time zone so this being asynchronous was key.


The Cloud

Also note that all three of these applications are either entirely public cloud hosted or have substantial cloud aspects.  I think this shows that the cloud is ready for massively social applications that have strong needs for network speeds and feeds (all of these include video and audio).  Given my focus on cloud I find this very encouraging.  I think the end user commercial world is cloud based and I believe the enterprise is very close behind.