Why I'm Excited About Serverless
Ben Halpern Jan 09, 2018
I've been passing this great tutorial around lately:
The article didn't present me with the aha moment in and of itself, it's just a really easy-to-follow tutorial about getting up and running with a few key tools in the "serverless" game. Following it through took about 15 minutes and only requires basic dev tooling prerequisite knowledge, but it gave me some really good hands on appreciation for some benefits I hadn't given much consideration.
There are plenty of potential benefits of "serverless architecture" as a means of organizing and scaling code efficiently and cost effectively and potentially reducing complexity in a lot of cases. But I'm not terribly motivated to solve problems I don't have. I have a few practical reasons for mixing in some functions as a service. That was my motivation for exploring this area, but that was not really the source of my aha moment.
The aha moment is that I wrote Python code!
I know how to write Python, more or less. But I'd never done it. I've never had to write it, so my experience in Python has been installing some pip packages for tooling purposes. I wouldn't know where to start with getting my environment set up to execute Python for any practical reason.
But with Lambda/Serverless Framework I only had to write an algorithm and I had production-ready code. This really emboldens me to learn more programming languages. The unified interface of functions as a service means that the programming language chosen is an implementation detail. It would never be that way if we had to maintain our own environments. I am not intending to deploy services written in code I barely understand, but often the code logic is only a small piece of the puzzle.
I feel incredibly liberated with this technology in my tool belt. There are so many things that are not replaced. Tuning, scaling, and maintenance of technology stacks cannot responsibly be taken away and as far as I can see, there are only a few areas where serverless functions belong in any of the code I am working on. I am still very happy in the developer experience associated with spinning these up and it is an area I want to explore further.
I'm not sure how I feel about the complexity gotchas and/or performance hits associated with trying to do too much with these functions. Use the right tools for the job. I'm still very personally excited about serverless when the right opportunities arise and for personal experiential development.