Looking for Senior AWS Serverless Architects & Engineers?
Let's TalkIn this article, we dive into some Frequently Asked Questions around the topic of Serverless. We will cover some foundational topics and slowly move towards more complex topics as the article continues.
What is Serverless?
At Serverless Guru, we see Serverless equivalent to fully managed. When a service or part of your application is fully managed it becomes much easier to maintain and scale. Serverless is usually referred to as FaaS (Function As a Service), yet this is quite limiting. The benefit of Serverless is product acceleration and the ability to worry about fewer things.
That’s why in our definition of Serverless, services such as Google App Engine fall under this umbrella. Right next to the more prominent cloud functions.
But there are servers though?
Yes, the term Serverless seems to imply the lack of servers. It’s not 100% black magic. We still have servers except the server has been abstracted. Cloud providers handle hosting your code on a server when there is a request. If there are no requests, then your code would not be running on a server.
What is BaaS?
BaaS or Backend as a Service is a model where application developers can easily hook into a third party service through a series of APIs. These APIs serve as the communication layer to the third party system. That third party system can provide certain features to your applications such as databases, blob storage, queues, sending an email, sending text messages, etc. It’s a powerful abstraction because as an application developer you don’t have to rewrite or roll your own service which can handle something like sending an email. Instead, you can tap into that email service by simply sending who the email is going to and what the message is.
What is FaaS?
FaaS or Functions as a Service is a new category of cloud computing services where the developer no longer has to worry about the underlying complexity typically associated with developing and launching an application. Developers can now utilize FaaS to utilize an abstraction layer where the focus is on the code, not the infrastructure the code is running on. Allowing for faster releases, less overhead, simplified infrastructure, and a refocusing on product innovations that have an impact on the customer.
How did we get to FaaS?
FaaS is the end result of years of iteration. We first started with hosting our servers on-prem. Shortly after 2006, we had the ability to move that on-prem server to the cloud. With the rise of containers with the release of Docker in 2013, we have seen the conversation switch from virtual machines. Then in 2014, AWS released AWS Lambda a cloud function that completely shook up how cloud pricing worked. In 2015, AWS released API Gateway a fully managed service to build REST Apis and it’s been off to the races.
How does a cloud function work?
A cloud function can be thought of as a small subset of functions or in some cases a single function that is not bundled to the rest of your application. When you create a cloud function you are creating a bridge. That bridge can be connected to other services on both ends. Meaning services can trigger the cloud function and as a result of the cloud function executing, services can be triggered. That is why cloud functions are sometimes referred to as “glue” because of their ability to connect fully managed services together to construct Serverless event-driven architecture.
What is Serverless event-driven architecture?
Serverless event-driven architecture is the combination of FaaS and BaaS. These two services can make up the entirety of modern applications. FaaS handles the business logic of your application which will make requests to BaaS. BaaS then has it’s own code to handle your request and take the appropriate action. The advantages of this approach are numerous. A primary benefit is the application developer can move extremely fast without the need to understand how the BaaS or the FaaS work under the hood. Simply being able to construct a request and handle a response is enough.