Blog Home  Home RSS 2.0 Atom 1.0 CDF  
hacker emblem
PalmerEk - I Have My Head In The Cloud
using System.IO;
using System.Web;
using System.Mind;
 
 Saturday, June 28, 2008

image 

After much deliberation I have concluded that the next big thing in software is cloud computing.  I did not come to this conclusion through any great insight on my part, but instead from simply reading the writing on the wall.

Computing has ebb and flowed between centralized and decentralized models since the inception of computers themselves.  Mainframes to PCs to Web Servers to Smart Devices to "The Cloud", it's as predictable as anything in the industry.  The question isn't whether or not it will transition, but instead what it will transition to next.  For a while it appeared that the transition back to a server-centric model would entail nothing more than simple virtualization , and virtualization will still remain a big part, but I am now fully convinced that the virtualization will live on centralized-decentralized servers in the cloud.

If you've read any of my posts over the last year or so you will have no doubt recognized an obsession I've formed with Amazon Web Services (aka: AWS, aka The Cloud).  In the past couple of months I've designed three different systems to be hosted entirely within the suite of AWS services (and implemented zero of them).  I've also implemented a portion of three other systems which make use of the most basic of the AWS offerings; S3.  In addition, I personally use S3 for a number of things, and I'm batting around the idea of developing a number of additional cloud centric systems based on existing OSS products.  But alas, I have a problem, and that problem is Linux.

To put a finer point on it, it's software development on Linux that's the real issue.  Before I explain what I mean, let me make it clear where I stand on some of the "issues": 

  • Windows is acceptable.  Not great, but acceptable.  Vista is the exception, it just plain sucks!
  • Linux is great.  Not just acceptable, but great.
  • Microsoft .NET is the best platform for application development.  Period.
  • Java blows chunks.  Its Death could not have come soon enough.
  • Ruby rocks as a scripting language, not so much as a platform.
  • Ditto Perl.
  • PHP is an abomination.  I continue to be amazed at the beauty produced by something so ugly.
  • C/C++ is for tool development not application development.
  • I don't know enough about Erlang etc... to have an opinion yet.

If you're a developer that should give you a pretty clear picture of the camp(s) I'm in.  Now to get on with my points of contention:

  • Linux is the OS for virtualized servers in The Cloud.  It's small, powerful, configurable, reliable and best of all free.  It is unlikely that MS will be able to stave off the onslaught of services which have already begun to gain a strong foothold.  MS has already missed the boat, and while they aren't going anywhere anytime soon, future historians will recognize this period as the begriming of the end of MS (and probably incorrectly blame it on the departure of Mr. Gates)
  • While the Linux OSes are great and there are a number of great software packages developed for Linux, the effort necessary to develop software on Linux is insane compared to the effort to develop similar software for Windows.  I don't believe this is a result of the OS but instead a result of the development tools / environments which are available. 
  • Each of the three systems I designed to run completely in The Cloud ran up against the same shortcoming.  The use of S3, SimpleDB and SQS were all pretty straight forward and concrete until I got to EC2.  The use of EC2 is pretty much a requirement for one of the three systems due to the amount of interaction with the other three services.  It would be cost and time prohibitive to shuffle the data in and out of those services, a penalty which is not incurred when using EC2, but when I attempt to design the components in the Linux environment I begin to run into development costs which are also prohibitive.
  • I'm willing to concede that the main issue is my lack of expertise in software development in a Linux environment.  I'm sure that if I honed my Ruby, PHP, Perl, Java, C, C++ skills that I would be able to develop Linux based applications much more efficiently although I doubt I would approach the efficiency of .NET development. 
  • .NET is my bread and butter.  It pays the bills for now, and will likely continue to pay the bills for some time to come.  Abandoning Windows and .NET is not an option for me at this time.  I also have little doubt that in 5 years a lack of solid Linux development skills will cost me. 
  • Finally, I realize that I do not have the mental capacity nor the time to master each of the OSes, all of the languages and all of the necessary services as well as monitor all of the other goings on in the industry which I must always be aware of in order to provide the level of service that I feel is necessary.

So I'm stuck.  I must evolve into the new Cloud world but I can't leave behind the current world.  I can free the bandwidth necessary to master one Linux distro and one language but one isn't enough.  What's a guy like me to do?

 

TTFN

Saturday, June 28, 2008 5:11:12 AM (GMT Standard Time, UTC+00:00)  #    Comments [0]    | 

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.


Copyright © 2008 Ek Palmer. All rights reserved.
Pick a theme: