Bypassing the hype of the Cloud, let’s have a conversation about how to think about the Cloud in a practical and useful way. We’ll skip the hyperbole that the Cloud alone will solve all the world’s problems or that somehow the Cloud will walk your dog on those rainy days, and have a discussion about where the Cloud is most effectively used in solving problems and how to think about the Cloud in a way that will make you a more effective engineer.
The Cloud in its purest form is a collection of services and features hosted on someone else’s computers. By itself, this doesn’t sound very Earth-shattering or game-changing. But now, adding features and capabilities such as allowing you to build all your servers with a simple text file (CloudFormation) or – and this is more Matrix spoon-bendy mind trickery – that there are no servers needed to run your production workloads at all (Serverless), and now things get interesting.
The Cloud, as we know it today, is rooted in the concept of taking on-premise servers, running virtualization software on them, and making it a managed service for the masses. In other words, someone else will run and manage servers and charge you a fee to access them. Add levels of automation, scalability, high availability, and security that were once only available to the Fortune 50 companies and make them accessible to everybody and now the Cloud is getting more interesting.
It is now possible that you, sitting at your desk avoiding doing some critical task, could deploy a service in Ireland that will run at a scale that could manage millions of users or set up a system to process mounds of data to help you discover the best chimichanga restaurant in the world. You have the power to deploy enterprise-class services at enterprise-class levels at a tenth of the cost. This is the power of Amazon Web Services (AWS). This empowers us, as engineers, with tools and features that let us go beyond managing servers and move towards solving problems with technology. Ultimately, that is what we are trying to do, solve challenging problems, and if technology can help us that is excellent. If it can’t, we shouldn’t be forcing it upon ourselves or our clients.
When businesses and engineers are no longer burdened with the heavy lifting required to establish a data center, ensuring power and cooling are sufficient and the litany of other considerations necessary to run a successful data centers and server clusters, they can use that saved energy to find solutions on ways to feed millions or create a new startup that tries to meet new market needs.
Thinking Cloudy, as we say at DAE, is considering that servers, load balancers, and other computing resources are all temporary and ephemeral objects. I’m not getting metaphysical here, by ephemeral I mean these things only exist to serve your purpose and goal – if they don’t toss it out or terminate it. The Cloud is an evolution from merely virtualization and microservices to blending of them so that every resource and item in the Cloud can be controlled and manipulated via an API. They can all be intergrated together, and can be chained to solve interesting problems. The Cloud is like a bucket of Lego bricks, you can build interesting and complex things in a variety of ways.
I liken life before programmatic access to computing resources (APIs) to TV before the remote control. If you wanted to change the channel, extra effort had to be made to get off the couch and flip the dial. APIs are the remotes for many things, but in this case, the Cloud makes the concept of managing and configuring services a few commands away.
Part of thinking Cloudy is realizing every task can be automated and AWS resources are tools you can piece together any way you want to help problem solve.
At its purest, AWS can be a collection of virtualized servers. Often, we find customers want and need to move away from self-managed on-prem VMware environments. So this jump makes sense, even if it is only a baby step. However, that is only the starting point.