With the continued growth and evolution of cloud computing, there is an expanding number of ‘serverless’ solutions to choose from. But just what does this term ‘serverless’ actually mean, and how can it benefit you and your projects?
What is a serverless architecture? It can be viewed as an evolution of the Cloud. Just as the move into a cloud environment meant a move away from physical servers into a more virtualized system, a move into the serverless realm indicates a move away from basic resource management. To better understand this, it’s important to note that there are two different kinds of ‘serverless’: Backend as a Service, and Function as a Service.
Cloud Providers, Where Serverless Lives
In a serverless model, cloud providers, like AWS or Google Cloud Platform (GCP), will run the physical servers in their data centers and then allot their resources to users who can deploy code into production.
As mentioned above ‘serverless’ typically falls into two categories: Backend as a Service (BaaS) and Functions as a Service (FaaS).
What is BaaS in serverless architecture? BaaS provides a specific service, such as storage, and handles all of the underlying requirements like operating system, low-level communication, sizing, and sometimes even services like backup and archiving for you. An application programming interface (API), and/or user interface being provided to allow you to integrate this service into your environment. Amazon S3, DynamoDB, AWS Cognito, Auth0, Google Cloud Storage, Firebase, etc. are examples of this Backend as a Service.
FaaS provides the ability for you to create and execute server-side logic in a generic, virtualized, stateless environment that is fully managed by the provider. This logic is then deployed in containers in a fully managed platform and executed on demand. Google Cloud Functions and AWS Lambda are examples of this service.
BaaS and FaaS services are generally intended to be used together to create applications, and it’s in this interaction you encounter fundamental differences in application architecture, for better or for worse. The traditional architecture was often simple client/server communication. The client application sends a request to the server, and the server processes the request (usually involving a database here) and returns a response. What is the change that serverless architecture provides in this model? Instead of the server handling authentication and processing tasks, these are handled by distinct microservices. Authentication, API request, database lookup, and retrieval can now all be done at the client level. Such a design comes with its own set of benefits and drawbacks.
Things to think about when considering serverless
Serverless is an architecture which utilizes remotely provided services, either wholly provided or custom-built, to construct or augment an application. Despite the drawbacks, serverless offers some significant advantages, especially when it comes to development time and cost, scaling, global deployment, operational cost and management, and resilience. It’s definitely not the right approach for every problem, and it cannot replace all of your existing architectures, but being able to offload critical components can reduce your exposure to ‘tech debt’ and offers added protection against obsolescence. Quite often the best way forward is through either a phased rollout, replacing pieces of a legacy application with microservices until complete or by utilizing serverless options only in new development.
It is important to recognize what a serverless architecture is and how it can be used as a tool, and implemented in a way to provide the desired service. This may take a change in design or architecture for those more accustomed to traditional, server-based solutions, but it is an avenue worth exploring.
LucidPoint Sr. Cloud Engineer