Going Serverless - Easier to Start Than You Think
Serverless is a tool for radical change for both companies looking to rocket into the future and for developers looking to differentiate themselves in the job market.
My name is Ryan Jones, I'm the Founder and CEO/CTO of Serverless Guru a cloud consulting company specializing in helping enterprise companies adopt serverless to accelerate their business. I started my journey with serverless in a code school in Portland, Oregon. My journey began when an audio clip played and I heard someone say "serverless is the future".
Since I was just starting my career in technology and programming, this stuck with me. I refocused all of my outside studying and code school curriculum towards learning more and more about serverless. Hear more about my story on the Real-World Serverless Podcast.
This path veered away from other students in my code school cohort and opened the door to a special realm of cloud computing.
Cloud Computing—What is it?
Cloud computing allows anyone to harness the power of services that took tens of thousands of engineering hours to develop and millions of dollars in investment to improve. The majority of cloud computing services open an easy to use interface which developers can leverage to build incredible world-class applications.
You most likely use cloud computing everyday, things like Gmail, Google Drive, Netflix, and practically every other technology or software running today is leveraging cloud computing in some form.
Cloud Computing—A Brief History
The history of cloud computing is important so you know why companies like Amazon got involved early on.
Back in the mid 2000's, Amazon.com started facing issues scaling their online store. Amazon had a growing team of developers and they were trying to find a way to increase TTV (time to value). Amazon did this through developing internal services which could be shared by other internal teams. This eventually revealed an idea that kicked off cloud computing. Other companies were most likely facing exactly what Amazon was facing and these abstractions to speed up internal processes could be extended to others.
Meaning that Amazon would be improving these services for themselves and for customers at the same time. Opening up additional revenue streams and not letting all of that world class engineering talent go to waste.
Soon after the cloud was born and in 2006 Amazon Web Services (AWS) released their first service AWS S3 which mirrors something similar to Google Drive which allows developers to programmatically store images, documents, etc. through a simple API from their applications. Think Instagram image upload or Netflix asset storage for videos, audio, subtitles, etc. It was easy to use, cheap, and highly scalable.
Since then AWS has continuously upgraded AWS S3 in the background making it even more performant, cheaper, and so on. The true beauty of cloud.
Following the 2006 release of AWS S3, hundreds of additional cloud services have been released by AWS which range from fully managed databases with AWS DynamoDB to fully managed machine learning with AWS Rekognition.
The market took notice of the impact that AWS was having and other competitors sprung up such as Microsoft, Google, IBM, and many more.
Serverless—One Abstraction Further
Fast forward to 2015 and AWS took their vision of abstracting over common use-cases like image storage to the next level. This next level is what we commonly refer to as "serverless".
AWS released the first version of a service called AWS Lambda, which allowed developers to no longer worry about provisioning of servers, scaling, and so on. This narrowed a developers focus to only their application code or business logic.
This gave companies and developers the freedom to stop worrying about all the underlying systems and stay focused on their product.
AWS Lambda had all of this baked in and the idea was simple. Simply upload your code and run it. When it runs you pay AWS and when it doesn't you're billed zero.
However, serverless was still maturing at this point and the integrations were not enough for most companies to make a hard switch away from their self-managed servers or containers to AWS Lambda.
By 2016, AWS released AWS API Gateway and now you had the ability to define a REST API which would connect to your AWS Lambda functions. This was a game changer. Leading up to 2016, the common way for you to run a REST API was to use a server or container. Now you had the ability to run the same code previously with some modification, but with built-in horizontal scaling, pay-per-use pricing, and so on.
No longer did you have to pay for your servers or containers running your REST APIs to be online 24hrs/day. This was a massive cost saving for customers and meant less time focused on underlying systems and more time spent innovating for customers.
Serverless—A Background On The Word
Serverless in 2016 was still commonly referred to as FaaS (Functions as a Service) and when someone would say serverless or FaaS they typically meant AWS Lambda.
Shortly after the release of AWS Lambda other cloud providers started offering a somewhat competitive products like Microsoft Azure functions, Google Cloud Functions, etc.
However, AWS Lambda was first to market with wide spread adoption and since then AWS has continued to keep innovating from that first release. Which is why AWS Lambda as of today, 01/2021, would still be our primary choice for building serverless applications as AWS never stopped innovating and AWS Lambda has continued to be improved automatically for users in the background similar to what I described with AWS S3, above.
As companies and developers switched some workloads to AWS Lambda and started taking serverless seriously. The word "serverless" didn't quite mean FaaS or AWS Lambda any longer. The word was limiting and needed to be expanded.
To build and run a modern web/mobile application as many readers would know, there are a slew of other resources required including things like databases, asset storage, cron jobs, logging, monitoring, security, and so on.
AWS Lambda may power your custom business logic, but AWS Lambda still needed to connect to other things to make an application useful.
This is where "serverless" turned into BaaS (Backend as a Service) meaning backend resources like databases would now be offered fully-managed for the user similar to AWS Lambda. Meaning companies and developers didn't need to worry about scaling, provisioning servers or containers, and paying 24hrs/day.
The result of utilizing services under this BaaS umbrella meant savings on the raw resource expense and saved on the human engineering/operations expense.
More importantly they increased focus on their product by elimination of "undifferentiated heavy lifting" as Werner Vogels would say, which had a direct result on TTV (time to value) which is commonly used to measure innovation.
To highlight a service which is commonly under the serverless or BaaS umbrella we have AWS DynamoDB, a NoSQL database which scales to the moon, has pay-per-use pricing, and just like AWS Lambda most things are handled under-the-hood and automatically upgraded/improved for you.
Nowadays it's very common to hear serverless mean "fully-managed" in addition to FaaS or BaaS.
This definition includes services like:
- AWS Lambda for business logic
- AWS DynamoDB for NoSQL database
- AWS S3 for asset storage
- AWS Cognito for user authentication
- AWS API Gateway for your REST APIs
- AWS AppSync for GraphQL APIs
- ...and on
Each one of these services can work together and AWS Lambda acts as the "glue" connecting them together like a spiderweb of cloud greatness.
With that background out of the way, let's jump back to why serverless is important.
Serverless—Why Learn It, Why Care
The simple answer, it's the current and the future.
It was the future back when I was in code school and first heard the word serverless uttered and it's the same today.
Millions of companies around the world have had success in the past. They've found a market, built a product, and achieved product market fit. However, sometimes our past successes can cripple our ability to stay competitive.
As humans we develop processes, protocols, and eventually we settle into a comfortable status-quo. It's natural progression, but it's not without some drawbacks.
A status quo has the ability to block new ideas and ultimately lead to companies being disrupted by new young lean startups. And the bad part is even if you see it coming and even if you know you need to change it can be so difficult with technical limitations and the company culture that you just simply can't move fast enough.
That's a sad day. That's what every company needs to take seriously. And it's a situation where the phrase, "adapt or die" has been tossed out quite a few times in the recent years. We've seen many industries be disrupted and the trend is accelerating.
It's dramatic, but it's unfortunately true.
Some of the technical limitations to being agile and lean stem from the sheer fact that a company was successful previously. When companies have a successful product or service they then need to spend time maintaining it and as the years fade away these once modern applications drift into being legacy applications.
These legacy applications in most cases were built long before leveraging serverless was a possibility and cloud computing for that matter. After all we have to live with the limitations of the time we are in and make what we can out of what we have. When everyone had the same limitations, it wasn't a debilitating factor, but it is now because there are other options.
Legacy applications pre-dating cloud computing or serverless can consist of hand-rolled internal services similar to what AWS offers. Again because there wasn't other options. However, the investment to build these internal services took in some cases months or years and millions of dollars to standup all the infrastructure.
And the reality is that whether or not you spend a couple million dollars building an internal service or use a fully-managed pay-per-use service developed by a cloud provider; from the customer perspective they look and feel the same.
This means that there is a gap. A gap from existing companies with past success moving away from hand-rolled internal services and away from previously established status quo's to a world in which the only thing a company focuses on is the customer need.
It's not that radical of an idea, right?
Stop spending millions of dollars on hand-rolled internal services which have nothing to do with your customers needs and instead re-invest that money into making your product better and making your customers happy.
That is what we mean by "adapt or die". Startups don't have past successes, they don't have established status quo's. They have fresh perspectives and are starting today with todays best-in-class offerings which can look like a Formula 1 Race Car next to a rusty hand-built wagon.
It's an amazing world we live in today. That more people than ever before in history have the ability, even an individual, to string together services which took tens of thousands of engineering hours with a few clicks of a button. Build a product, release it to the entire world (literally), and compete against the 800lb enterprise gorilla's by rubbing a couple nickels together.
This is why serverless is worth time learning.
You skip the line. You move to the front. You learn the way to build applications today without the baggage of the past. Both startups and enterprise companies need help and everyone will build applications like this in the future. The revolution has already begun.
That is why years ago, serverless was the future. And that's why years later, serverless is still the future.
It's what we as a community have been moving towards since we had servers taking up entire rooms.
Do more with less. Do higher quality with less. Do more and pay less. When it's not running you don't pay anything.
The promise of serverless is that anyone has the ability to turn their ideas into reality.
You can be part of this future and if you start today you will have the advantage of time. As serverless continues to gain momentum and mature you will be on the forefront of that innovation.
If you're a company reading this, I would implore you to reach out to Serverless Guru as we've had the luxury of seeing serverless transformations play out at multiple Fortune 100+ companies and help them through it.
If you're an individual, check out some more of our blog posts and if you want to start your journey, head over to training.serverlessguru.com and sign up for our Serverless: Zero to Paid Professional course.