Serverless: Just Another Buzzword?
The world of IT is full of acronyms and buzzwords, so it is often hard to tell fact from fiction. Serverless is not just a flavor of the week buzzword, nor does it mean no servers. It is the concept of building and running applications that do not require server management. In 2014, AWS introduced the first serverless compute service, AWS Lambda Functions. Gartner projected that we would see more than 20% of enterprises deploying serverless technologies, which was up from 5% in 2018. As the pioneer in the space, AWS leads serverless adoption, followed by Microsoft Azure Functions and Google’s Cloud Functions.
Servers vs Containers vs Serverless
Ok, so serverless is real and seems to be here to stay but what makes it different from other concepts like servers or containers? I am sure we all have experience with servers so I will leave it as the most expensive, management and maintenance intensive of the three. Containers helped pave the way for an OS agnostic package to run software with all the dependencies it requires so there is no additional installation. They can be deployed almost anywhere with zero code change to run thus when a developer says, ‘works on my machine’, it will work on yours too!
At its core, serverless computing (FaaS – Function as a service) assumes that the entire application is implemented as functions and events. The application is divided by its functions/services that are triggered by events. Your code is uploaded and attached to an event source and that’s basically it. The rest of the heavy lifting is done for you.
Pros & Cons
So now let’s review the pros and cons of serverless computing.
- Pay per execution
- Zero cost for idle time
- Zero infrastructure administration
- Microservice nature
- Non standardized
- “Black box”
- Vendor lock-in (mainly due to event sources)
- Execution time limits
- Complex apps can be difficult to build
So, what would a serverless process look like in the real world? Well, lets consider a simple scenario such as a customer landing on your site. You want to track which pages are viewed and the average time spent on the page but there should be no additional latency from the perspective of the user.
In a traditional server model, this would entail creating a message queue with RabbitMQ or maybe MSMQ. Next we will need a batch process to contain the logic to handle the messages. We will also want to store the messages for historical or audit purposes so we will use a database. Each of these requires provisioning and configuration of servers; installation of software; deploying code; scaling as needed as well as support for the hardware and software. Infrastructure as a Service and Platform as a Service make some of these components easier but there are still manual elements.
With a serverless model, we use a message broker such as AWS SQS to store the messages. Next we will use AWS Lambda functions to store our logic and handle each message in the queue. For message retention, we will use DynamoDB. Each resource can be created with a few clicks and you are up and running. All the infrastructure and scaling is handled for you so you can focus on supporting the application.
Serverless is not just a techie buzzword to fluff up your resume and is backed by real server hardware. It is also not a magic pill to fix all the woes in your monolith. The advantages of serverless like pay as you go, and no infrastructure administration make it very attractive to many organizations. While a “black box” feel and possible vendor lock-in may be cause for hesitations, they are not roadblocks. Need help developing your serverless strategy or going serverless? Contact us today!
Written by Jeff Beier, Principal
Jeff brings over 20 years of business experience in helping companies grow while managing their bottom line. He is a senior technology leader with a proven success record of delivering excellent operating results. Jeff thinks cross-functionally while applying expertise gained from small businesses to large global enterprises in the areas of marketing, wholesale, retail, healthcare, product and e-Commerce environments. Jeff is proficient in leveraging cloud technologies to modernize applications while reducing cost. He is passionate about delivering business value and quality customer experiences and has a keen ability to create strong partnerships with global stakeholders at all levels.
Give him a call to explore these ideas further!