One of the game-changing cloud computing execution models which have gained a lot of recent attention in the technology world and could be the future of cloud computing is Serverless computing. No, it does not mean there is no server involved in the architecture; instead, it is an architecture that offers an abstraction of infrastructure, operating systems, and servers to the developers or service consumers.
In a Serverless architecture, you don’t need to think about server management, and it’s all vendor’s responsibility. No doubt, from the data center to Serverless computing –it is a great evolutionary move in the cloud arena.
Different Service models in Cloud computing
Here is a pictorial representation of fundamental differences between the different service models offered by the cloud:
What is Serverless computing
Traditionally when we develop an application post-development, we need to deploy that on the servers. This has two aspects of expenses. CAPEX is initial expenses for capacity planning, installation of server software and hardware, procurement, etc. And the second one is the OPEX, which is running expenses. With Cloud implementation, such problems are solved to some extent. Still, there remains this cost burden. There comes a Serverless computing concept that abstracts users away from these infrastructure overheads and dealing with low-level configuration aspects.
To explain more, Serverless computing is a cloud execution model in which a cloud provider dynamically allocates compute resources and storage for a particular piece of code and then charges the user for it. Hence, it is not like there is no server included in the whole process, but their provisioning and maintenance burden is not on the user and is entirely taken care of by the provider.
Furthermore, this is an event-driven design and development paradigm which means the code is invoked when there is a request triggered for it. Also, users only pay for the services they are using instead of paying a flat monthly fee. No cost is associated here with downtime or idle time. Here server is not eliminated but resource considerations are moved into background as per the design process.
Thus, with the Serverless computing concept, the CAPEX and OPEX cost decreases significantly due to fewer deployment times and fewer resource involvement. This enables developers to build complex systems quickly as different services are combined and composed in a loose orchestration. AWS Lambda is an example of a public cloud Serverless computing.
So, in Serverless computing, the user uploads a function, specifies the required resources, and uploads the Cloud function. Then the Cloud vendor (Amazon, Microsoft, Google) does the server’s provisioning and deploys its function. So, the user doesn’t need to think about the server, or everything happens in a Serverless way. Provisioning and decommissioning of servers are performed by the cloud vendors based on the demand for functions goes up and down. All of this is transparent to the end-user.
Serverless architecture consist of two different concepts –
1.Function as a Service (FaaS)
FaaS works on an event-driven basis. Also, it performs as a long-running asynchronous task via Serverless architectures. In this case, server-side logic is written by the application developer. However, unlike traditional architectures, it’s run in stateless compute containers that are event-triggered and fully managed by a third party. AWS Lambda is one of the examples of FaaS.
Furthermore, FaaS offerings do not depend on a specific framework or library for its coding. Instead, FaaS functions are regular applications regarding the language and environment. For instance, you can implement AWS Lambda functions in Javascript, Go, Python, or any JVM language like Java, Scala, Clojure, etc., or any .NET language. However, your Lambda function can also execute another process bundled with its deployment artifact, so you can actually use any language that can compile down to a Unix process.
2. Backend as a Service (BaaS)
In the case of Backend as a Service, the client application directly interacts with the data layer through an authentication layer. Here no custom logic is written on the server-side. Instead, it is solely on the client.
How does Serverless computing is different from PaaS?
PaaS, or Platform as a Service, offers many of the same benefits as Function as a Service or FaaS or Serverless. Both of them eliminate the need for server hardware and software management. However, the primary difference is in how the application is composed and deployed, and of course, the scalability of the application.
With PaaS, an application is developed traditionally and is deployed as a single unit. Here scaling is performed at the entire application level. Furthermore, you can run multiple instances of the application to handle the additional load.
On the contrary, with FaaS, the application is composed of individual and autonomous functions. FaaS providers host each function and scale it automatically depending on the frequency of the function call. As a result, it provides a cost effective solution. Unlike PaaS, you don’t need to pay for your application is always on with so many different instances.
Serverless Computing boosts Microservices
The monolithic structure of application development where there is a tight coupling between User interface, Data access layer, and Datastore layer brings some inherent execution mode restrictions. This is one of the areas where the concept of microservice brings a paradigm shift. Microservice simplifies each function of an application as a service that can be deployed and run independently. Serverless architecture is a great way to manage the microservice.
Related blog Is Cloud Computing in Web development a paradigm shift?
Key Characteristics and benefits of Serverless Computing
Serverless computing satisfies a few characteristics which can be considered as its benefits also:
1.No server management: The service consumers do not hold any responsibility to maintain or administer the server, and it’s all the service vendor’s responsibility. Basically, Serverless computing offers built-in services provided by Cloud Service Provides, which are fully managed, supports elasticity, fault-tolerant, and offer enterprise-level integrated security along with automatic scaling. Hence, it is more productive concerning developers’ activity.
2. Event-driven computing: Serverless computing provides the flexibility of event-driven scaling of application solutions. This means the application will execute the business logic as and when a specific event is triggered. For example, a piece of code will be executed automatically when a file is uploaded to the data storage.
3.Highly availability: Applications in Serverless framework have built-in availability and fault tolerance capability. 3
4. Pay as you go model: Serverless computing offers pay-as-you-go fee structure which means consumers don’t need to pay if they are not using code.
5. Faster availability in the market: Since in a Serverless computing model productivity increases due to the characteristics as mentioned above, it takes less time to bring the service/product in the market.
6. Scalability: The serverless architecture leverages flexibility towards scalability and growth. Whether it is a small or big business, the cloud allows users to use what they need. So, they can scale up without worrying about complex and time-consuming data migrations.
7. More focused job: Since developers are not over burdened by the infrastructural and maintenance activities, they can be more productive in coding. They can concentrate more on the specific function they are trying to provide.
What are the Core technologies that work behind Serverless model?
Serverless computing comprises of three technological features:
An auto scalable platform for execution
A scalable workflow solution for code executions.
A pub/sub event routing engine
Serverless computing offers services which enable customers to execute code without data storing. Hence, most of the cases it offers services of –
Databases
Storage
Function-as-a Service(FaaS)
Cloud services offered by the vendors for Serverless computing:
Here is a list of services offered by three major cloud vendors which enable Serverless architecture for applications:
To know more on each of the services mentioned in the above table please visit individual vendor sites(Azure,AWS,Google)
There are challenges too……
1.Security concerns: Of course, it’s a big relief to delegate the backend services to the cloud vendors in a Serverless model. However, it automatically brings another concern for application data, that is – security concern. Since the personal data are stored in vendor assigned servers, and executing code can be shared in multi-tenancy mode, there is always a risk associated with a data leak. For example, broken authentication is a common issue in serverless computing, where some of the functions may expose public web APIs. In contrast, some consume events from different sources leading to unauthorized authentication.
2.Testing and debugging is a real challenge: When there is no control on backend processes, furthermore application is divided into different functions, it becomes a real challenge for developers to test or debug the application.
3.There is a concern with the pay-as-you-go model: No doubt it is a cost-benefit solution in a Serverless computing model, but what if you need to run the code for a long time? Sometimes it may cost even more than traditional cloud infrastructure!
4.Vendor lock-in: Depending on a single vendor for all backend services is an advantage concerning its reliability. However, switching from one vendor to others may cost a lot as each vendor have their own set of workflows.
5. EDA-based programming: Serverless computing follows event-driven architecture (EDA) where applications are designed to collect functions and wired by the architecture (EDA). However, while designing serverless solutions, if the use case becomes complex, then we have to think differently. EDA-based programming is harder to debug. So, the final architecture is more complex with a harder logical flow.
6. Complex: Serverless is agile as long as the programmers follow its model but become complex if the programmer resists the model. This is a lack of flexibility, which may limit serverless adoption in particular use cases.
7. Latency challenges: Handling state using the stateless function is a concern with serverless. As per the best practices on the current architecture, the state can be stored in platform services such as shared file systems, databases, or messaging systems. Additionally, serverless belongs to two kinds of latency challenges: high tail latencies and cold-starts.
8. Lack of standards: There is a lack of concerns and standards about vendor lock-in which poses a significant risk to serverless adoption. Here the real concern is the platform services necessary by those functions and not serverless functions. It is hard to abstract away those services effectively.
9. Conflict with DevOps – In the Serverless computing model, the software developer is free from responsibility for understanding his code’s system requirements. However, this is an important aspect of DevOps, where mutual understanding regarding each other’s needs is essential between the developers and operators.
Final words
To conclude, though Serverless computing is a new hype, it has also grabbed the attention with more inclinations towards microservice implementation. However, as per the Gartner report, it is still in the infancy stage. Another research predicts that more than 20 percent of enterprises will target to deploy Serverless computing globally by 2020.
Adopting Serverless architecture is indeed beneficial in many ways, but its implementation strategy could be different and challenging in their own ways based on the use cases. For example, Serverless computing is a good solution if you have a limited number of resources. But if you have a complex application, you need to architect the system appropriately to make serverless useful for the function.
No surprise that, like all other new technologies, it will evolve gradually and meet the enterprises’ goal as a solution soon!
Please share your valuable inputs in comment area to make the article more informative.