Monday, February 13, 2017

Going Serverless

I was just looking back over old files today and noticed a blog post I wrote from 2010  talking about the amazing advances in technology during the previous decade.  I knew at that time there was a new technology revolution on the horizon, but I could not have predicted how dramatically it would change our world in such a short time.  I am talking here about the API revolution and the evolution of micro-services.  Depending on what you do for a living, you may be deeply involved with the new reality this has brought forth, or you may not have even heard of it.  Either way, your life is different today because of it.  Easy to use APIs have transformed how we use software over the last decade and microservices are now taking that a step further by making functions that have been traditionally linked available as separately scalable services.  

Ten years ago I had a half dozen servers in my network doing a variety of tasks.  Some were for development, some were file servers, some were for communications, and the whole farm sucked up a tonne of power.  My office never needed to be heated in the winter because the heat from the servers was enough to keep the room cozy warm.  I took on the process of moving from physical servers to the cloud a few years ago and have not turned back. It has been an interesting journey and the deployment is constantly evolving with changes in technology.

The easy path for web and email migration was to use a hosting service.   I looked around a bit before taking that leap and found which offered both Linux and Windows web hosting as well as a decent replacement for my Sendmail+Dovecot+SquirrelMail deployment.  Next I moved development and experimental work to VMWare VMs on my workstation, and finally I moved all the files, and bulk storage to dropbox and OneDrive.  That was five years ago.

The story does not end there, even though it sounds like it should.  Recently, I moved to G-Suite for documents and mail which moves most of my PC file storage into "the cloud" and many of the applications that were once on my local computer, now live in web services.  I am almost at a point where I can simply login to any web browser and have everything I need on-line.  The days of needing to access my own personal computer are nearing an end.  With the addition of Amazon Web Services (AWS), I can easily replace any of the experiments I was doing in VMWare with EC2 instances and scale the shape of the instance at will.

Last week I replaced a website that once consumed and entire physical server with an AWS CloudFront instance using S3 storage services that can scale independently.  I have an application running on one of my hosted servers that will be transformed into a set of Lambda triggered scripts over the next few months.  The concept of a computer server from a decade ago has been completely shattered.  You can now think in terms of functions and outcomes, building only the scripts and actions you need in the micro-services that you need for as long as they are required and in many cases pay for them by the event.

This is a completely different world from a time when you carefully planned the build of a physical server to include the CPU, RAM, network, and storage required for the current need as well as growth over the next few years.  Where that kind of thinking used to be a critical skill, no one even cares anymore.  It is irrelevant.  If you spin up an EC2 instance with too little RAM, or not enough CPU, you simply scale it up to your current need.  Did you build it with too much storage?  No problem, just reconfigure and move on.

I am currently reviewing all of my services and looking at options for efficiency improvements.  It looks very much like my digital future will be entirely built on distributed scalable services.  That is a crazy realization for someone who used to make a living building servers.

No comments:

Post a Comment

Thank you for your comments. Moderation is in effect. Your comments will be posted after moderation review and if appropriate.