By hearing the term Serverless Computing most of us may misunderstand that we are entering into a new era of computing, where we don’t require a server to run the applications. Even though the term is a misnomer, serverless computing portrays a new stage in cloud maturation. This feature is dedicated to those developers who are keen on knowing about the next level of cloud computing. Let’s dig deep into the following sections.
- Serverless Computing
- FaaS Model
- Advantages and Limitations of Serverless Computing
- AWS Serverless Platform
Serverless Computing is a cloud computing execution model that provides flexibility to develop, deploy, and run applications without worrying about provisioning servers. It helps developers to focus on their core product instead of spending time to provision, scale, and manage servers.
This cloud computing execution model doesn’t eliminate the need for a server. But it provides a complete infrastructure that requires to run your application by adding a layer of abstraction above the cloud infrastructure. Some of the cloud service providers that provide a serverless framework are AWS, Microsoft Azure, and the Google Cloud Platform (GCP).
Features of serverless computing
- Serverless computing allows you to run code without managing servers, and the functions are executed based on an event rather than running all the time.
- You can run any type of application irrespective of the languages or the frameworks to be used.
- It facilitates the automatic scaling of a function based on the request. You don’t need to do any further configuration.
- The functions can be triggered by different event types and as well as using API gateways.
- FaaS Model
The best way to understand serverless computing is by explaining the FaaS model. Most of us are familiar with the terms SaaS, IaaS, and PaaS. Let’s have a look at these terms before we get into FaaS.
Software as a Service (SaaS) is a cloud computing service where software is hosted centrally, and the service is delivered through the internet based on a subscription. Some of the examples of SaaS are Google Apps, Dropbox, WebEx, and so on.
Infrastructure as a Service (IaaS) provides infrastructure resources and also manages and scales up the resource. Here you only pay for what you use. A few of the examples of IaaS are AWS EC2, Azure virtual machines, and so on.
Platform as a Service (PaaS) provides both software and infrastructure that require for the application development. AWS Beanstalk, Azur app services are some of the examples.
So, let’s get into the FaaS model. It is a Function as a Service model that allows the developers to develop, run, and manage applications without worrying about the application infrastructure. It is based on the concept of the single-purpose block of code called functions. Here, the model uses an event-driven architecture to process these functions, in which each function gets executed by triggering an event – such as API requests, events in the database, scheduled events, etc. And, serverless applications are built by combining multiple functions (FaaS).
Another point to take into account related to the FaaS model is that it is stateless. Since functions in the FaaS model runs in ephemeral containers, you will not be able to access state from a previous run. However, you can use external sources such as Amazon S3 to store and retrieve the data instances. This data can be shared within the functions.
If you look carelessly, you may feel like PaaS and FaaS are almost similar. But a detailed analysis will help you to differentiate between PaaS and FaaS. Let’s take a moment to understand the difference between them.
- Even though Paas offers easiness in deploying and managing web applications, it doesn’t provide the flexibility to take your entire application up and down for each request. On the other hand, FaaS provides the flexibility to do the same.
- In PaaS infrastructure, you have to depend on other PaaS based solutions such as AWS Elastic Beanstalk to handle application scaling. But these solutions are not flexible enough to deal with individual requests, whereas FaaS infrastructure offers efficient ways to handle application scaling.
Advantages and Limitations of Serverless Computing
So far, we have discussed serverless computing and FaaS model. Now, let’s look at the advantages and limitations of Serverless computing.
Advantages of Serverless Computing
Serverless computing offers numerous benefits. Let’s look at a few of them.
- Reduced operational cost: In FaaS, pre-defined runtimes (infrastructure is only used for a certain period) and sharing the same runtimes contributes to a significant reduction in operational cost.
- Rapid development: Since the infrastructure is managed by the cloud provider, the developers can concentrate on the core features.
- Scaling costs: It facilitates automatic horizontal scaling and also takes care of scaling up and scaling down the infrastructure. This offering results in a significant reduction in scaling cost, when compared with the PaaS offering.
- Easier operational management: The FaaS provides the simplest solution in deploying and managing applications. Above all, you can transform your business idea into a reality within a short period.
Limitations of Serverless Computing
Even though serverless computing has numerous benefits, there are certain limitations as well. Let’s have a look at the below points.
- Infrastructure control: Since serverless architectures are monitored by the cloud providers, you don’t have any control over the infrastructure.
- Long-running application: It is not well adapted for long-running batch operations because of its pre-defined runtime features, where most cloud providers have a timeout period.
- Vendor lock-in: One of the major limitations is vendor lock, where you cannot switch to another cloud provider from the existing one.
- Cold start: Since FaaS is an event-driven architecture, it raises the concern of a cold start. It may take a bit longer to respond to an event after a period of inaction.
- Shared Infrastructure: Since the serverless application uses shared infrastructure, many applications can run alongside irrespective of business ownership. So there are chances that your code might be affected by high load generating functions of the neighboring applications. But this problem exists not only in serverless offerings but also in many other shared service offerings as well.
AWS Serverless Platform
AWS provides a fully managed serverless platform to deploy and run your application. Let’s look into the services provided by AWS serverless platform.
Compute: AWS provides services such as AWS Lambda to run the code without provisioning or managing servers, Lambda@Edge to respond to events generated by Amazon CloudFront events, and AWS Fargate facilitates a serverless compute engine for containers.
Storage: AWS provides Amazon Simple Storage Service (Amazon S3) that ensures secure, durable, highly-scalable object storage, and Amazon Elastic File System (Amazon EFS) provides simple, scalable, elastic file storage.
Data Stores: Amazon DynamoDB provides NoSQL database service, and Amazon Aurora Serverless (for Amazon Aurora) permits automatic database start-up, shut down, and scale capacity up or down. AWS also offers database proxy services using Amazon RDS Proxy.
API Proxy: Amazon API Gateway service helps developers to create, publish, maintain, and secure APIs at any scale. Here, it allows you to process hundreds of thousands of concurrent API calls by efficiently handling traffic.
Application Integration: It facilitates services such as Amazon SNS (pub or sub messaging service), Amazon SQS (message queuing service), AWS AppSync (to securely access, manipulate, and combine data), and Amazon EventBridge (to transfer application data from different sources to your AWS environment).
Orchestration: AWS Step Functions orchestrates the components of distributed applications and microservices.
Apart from the above services, it also provides a wide array of tools for the serverless application development process. These tools include continuous integration and testing tools, deployment, monitoring, and diagnostics tools, frameworks, and IDE plugins.
Serverless computing offers significant benefits such as rapid development, serverless deployment, lesser operational cost, and easier operational management. However, it doesn’t mean No Ops. Indeed, you don’t need a system administrator to manage the infrastructure, but you should monitor certain operations to ensure that your application is running. But no worries, FaaS itself provides monitoring data services that help you to monitor your applications. And one final point to note, it may not be the right approach for every challenge, so be brilliant enough to choose it wisely. Get ready to harness the serverless technology, and concentrate on the coding process rather than provisioning servers.