Serverless computing is a fairly new concept that has somewhat exploded in terms of popularity. This is in-part due to AWS’ Serverless offering, AWS Lambda as well as Azure’s newly released Functions.
Serverless computing essentially allows you to define individual API endpoints that perform any number of actions once triggered. This could be as simple as a “Hello World” endpoint or as complex as an online store transaction endpoint that handles credit-card payments.
I believe the combination of the following factors are going to cause an explosion in the number of developers leveraging Serverless options in order to extend their existing systems.
When I first started getting into programming 8 or so years ago, I was focused on game programming. I read up on the forums and bought the books C++ Primer Plus, Beginning C++ Through Game Programming and OpenGL Programming Guide.
When I was just getting started I ultimately believed that I could do everything from the physics and gameplay side to the AI and graphics rendering systems. I was overly optimistic and unfortunately I never completed a full game.
However I was able to learn a hell of a lot and as I was entering university, a game engine called Unity3D came out and started to revolutionize the way game developers developed their games.
By the end of 2016, thousands of games had been developed and released onto the Steam platform. By abstracting away some of the key complexities of game development such as the graphics rendering system, game developers were able to make far further strides than they would have been should they have attempted to go it alone.
Serverless computing will have as big an impact on software development as Unity3D had on Game Development.
When it comes to services such as AWS Lambda, when you expose an endpoint, you don’t necessarily have to worry about massive surges in traffic. The underlying system will automatically handle things such as load-balancing and the provisioning of appropriate infrastructure in order to meet any massive surges in traffic.
When it comes to AWS pricing, you pay for what you use. There is no need to provision a tonne of t2.small instances running your service and autoscaling groups that will duplicate said instances in the event of surges.
This all comes for free.
These Serverless cloud providers constantly monitor and manage the underlying fleet of servers running your code. They apply security patches as and when they are available.
This helps to minimize the risk of 0-day exploits hitting your company hard and somewhat reduces underlying infrastructure security concerns.
If you were running your own EC2 instances you would have to apply security patches yourself and you would have to keep on top of them as they come out. This can be a time drain and can reduce the amount of time you spend actually producing new products and services.
Thankfully, every endpoint you set up can use a different language runtime. If you have Python developers, feel free to let them create endpoints written purely in Python, if you have Go developers, let them do likewise.
AWS Lambda supports Node.js, Java, C#, Python and more recently Golang so the option to enable your developers to write in the language they are most comfortable with is certainly there.
These endpoints can be written in a number of different languages which allows you to specifically choose the language best fitted for the job. This alone is a major win.
As we lower the friction between having an amazing idea and implementing it so that it is production ready, we will maximise the speed at which newer technologies can evolve and subsequently make their mark on the world.
These are just a few key points that make Serverless computing an incredibly attractive option for all developers to consider when developing new systems.
Obviously there will be some reasons why certain applications will never be able to migrate to a serverless architecture but I’m hoping this article has at least made you consider serverless for those scenarios where it is possible!
Let me know what you think in the comments section below or by tweeting me: Elliot Forbes. I’m also on LinkedIn: https://www.linkedin.com/in/elliotforbes/ for those of you wanting to connect!