The Gist: I share my introduction and first steps with cloud computing and why I think the cloud platforms of today are democratizing and powerful.
My intro into computing occurred in high school and largely by accident. I had talent in sketching or free hand drawing and expressed interest in architectural drawing and modeling. Soon after starting I realized the precision required for the task wasn’t for me. As it happened that year, the class was overcrowded and the teacher asked if anyone wanted to transfer out. I raised my hand and soon after was in the counselor’s office and had two choices for an elective: Spanish or BASIC Computer Language. Well, I made the choice this way: “Don’t feel like learning another language right now – so I’ll try this computer thing.” Such is the mind of a high-schooler.
I instantly gravitated to the way a set of instructions can seemingly come alive and quickly accomplish what I wanted. With this exposure I was soon playing and creating games. Programming had me at the start and didn’t let go thanks in no small part to piloting the Enterprise across sectors and firing photon torpedoes at Klingons! 🙂
It was around that time that I wanted to get my hands on a Commodore 64 but didn’t have the money. While game consoles eventually made its way into the home I didn’t quite get the chance to get my hands on one. Thankfully, I had access to the high school computer lab which scratched that itch (Thank you very much Mr. Ott!). Some of you may recall a time when getting access required signing up for a time slot to work on assignments. With the advent of the Internet and smartphones this is just a memory.
Cloud Computing as a Platform
For me the cloud as a platform represents more than an evolution in computing – ideas get recycled and come back stronger. For instance, the concept of multi-tenancy isn’t new, its from the days of mainframe computing where multiple instances of a process or application are isolated and share computing resources. With the cloud, multiple customers are sharing the same computing resources. The scale and reach of cloud technologies that are available today have democratizing qualities (pay-as-you go pricing, focus on code and not infrastructure, speed of delivery) allowing people to bring their ideas to life for not a lot of money. Not long ago only large corporations could afford computing capabilities and you needed a host of people to get anything of consequence out in the public. Today this is certainly not the case. Check out this statement about the serverless movement from the folks over at the Serverless:
“It’s a movement that is defined by empowering developers to single-handedly build apps that handle production level traffic. They don’t have to actively manage scaling their infrastructure. They don’t have to provision servers, or pay for resources that go unused. They can just focus on building.”
The boundaries that are constantly being pushed by available service offerings speak to a number of things, not the least of which are reduced cost and reduced time to market. But what is not always readily thought about are the capabilities made available by abstracting complexities germane to the platform and making them available as set of programming interfaces. Standing up the requisite infrastructure and getting your content distributed to various locations around the globe is an API call away.
Serverless With AWS Fargate
Just to shed some light on this closer to home: this site is being hosted on AWS, specifically an AWS Fargate task with a web server container and database container. AWS Fargate is the serverless container service offering under the Amazon ECS. First, the big takeaway for Fargate is that I only pay for when it is active and nothing when it is not. Second, because containers are based on immutable images (operating system, libraries, application code, etc. as a unit) and when running are considered ephemeral or temporary – any data created is lost when they are terminated or fail. With AWS until recently if you wanted to persist data while using containers you had to run them on EC2 instances (always on virtual servers) and attach storage volumes. However, AWS recently announced the capability of hooking up external EFS volumes (their version of network file system) to Fargate containers.
Now, in order for you to read this a load balancer is required to forward requests to the web server container. And because everything over the web should be SSL/TLS, I was able to attach the requisite SSL certificate to the load balancer. Its an interesting setup that is becoming commonplace. My post: New Way To Run WordPress on AWS Fargate, elaborates on the details.
Meanwhile know this: that the entire configuration was completed with an IaC tool called Terraform. IaC or “Infrastructure as Code” enabled me to specify the components and configuration. On my behalf, the tool executed the “code” invoking APIs made available by AWS. The infrastructure was setup in minutes. Setting up the site could have been completed a number of different ways and with other services. I think its wonderful to have the ability to match tech to your needs and bite off as much as you can chew or afford. The tech is interesting and having options when deciding the best fit for your situation is definitely a good thing.
So yes, single handedly building apps that handle production level traffic is possible. Keep an eye on that Serverless movement lots of things happening there. This is exactly why I love the cloud – it significantly lowers the barriers to entry for anyone willing to try.
Onward! Cloudy Skies Ahead