The Cloud Is Not Just Someone Else's Computer

I'm sure you've seen the Morpheus meme stating"what if I told you the cloud was just someone else's computer.  If you're the type of person who saw that, nodded, laughed, and agreed, well then you're wrong. The people who still think of the "cloud" as virtualization and quickly deploying servers have an ignorant view of what the cloud actually is - or more importantly - what's possible with the cloud.

In late 2013 I thought of the cloud as just virtual machines. I'd never really done anything in the cloud save for deploying some .NET web application to Azure. But my company was working on a huge project for a chip company that would be hosted on AWS and we couldn't have any downtime.

Any.

None.

I had zero AWS experience at that point but wanted to help and I saw that there was a conference going on in a few weeks in Las Vegas called AWS re:Invent.  Yes, back in 2013 you could still get into re:Invent a few weeks before it started. If you're not sure why that's crazy, think of it this way. In 2013 re:Invent took place at The Venetian. One hotel with about 3-5k attendees.  The 2018 re:Invent was spread out over 7 resorts on the Vegas strip and had close to 70,000 attendees.  So, it's grown and while they don't sell out as quickly as WWDC, it's getting to that point. It is the conference to attend for cloud.

So back to 2013, I signed up for an eight hour bootcamp that introduced you to all the weird acronyms I'd seen - EC2, RDS, S3, SQS etc.. I remember thinking, yeah this is cool and all but we're still kinda just spinning up computers errr instances right? But then the instructor said something that stuck with me to this day:

"Get everything off your web servers."  He followed up with "...your web server should handle a request, render HTML and that's it. - but get everything off your web servers."

Okay...well then where does everything else go?

 It was a new concept to me at the time and they proceeded to explain how you should store objects in S3 and serve them over Cloudfront. You should use a distributed caching system like Elasticache (Redis) or store your session data in DynamoDB. They were really serious about getting everything off the web servers.

But why?

Scale.

You can't scale correctly or quickly if your hands (code) are tied to the contents stored on one "box". I suppose you could deploy your monolithic app over and over again on EC2 instances but this is kinda counter productive. Also it leaves you open to having the loss of one "box" (or server) be a major event. Losing an EC2 instance shouldn't cause your system any trouble.

Ever.

Wait...so losing one web server shouldn't be a big deal?

This really blew my mind at the time.

So what is the cloud if it's not just virtual machines, or someone else's computer?

It's a paradigm shift for how you build your applications.

It's a different way of thinking about your applications, your code, your services and more importantly the architecture underneath it all.

During one internal project a year ago where we had no money and very little time, my initial instinct was to write a very quick .NET app and deploy that on Beanstalk. Unfortunately, this isn't free. It's cheap-ish but not free.  So instead we hosted the HTML files on cloudfront and they made API calls to a Lambda function which handled any processing we needed.

Cloudfront to host files.  Lamba to handle any business logic....we've achieved serverless. Who even needs the "box" anymore?

I suppose some out there love tinkering with the specs of their machines so much that they just can't imagine this  And that's totally fine. You could do your tweaking and create AMI's yourself and scale with those. But that's not really what "cloud" is about.




Comments

Popular Posts