Cloud Computing has taken the world by the blast with its stable enhancements. One latest entrant in line is Serverless computing. The word “Serverless” doesn’t mean servers are not involved. It simply indicates that developers do not have to worry about them. This is the reason this technology is called a misnomer. Serverless empower the developers to focus from the server level to the function level.
What is Serverless Computing?
Serverless is a new model of computing that abstracts away the complexity associated with managing servers.
Why do we need Serverless Computing?
To understand this better Lets us look back the evolution of Serverless computing.
Evolution of Serverless Computing
In the Initial days, an organization had an On-premise data center model where they got to maintain its servers, data storages, operating systems, hardware, Networking etc… Basically, it is difficult to maintain all these for an organization furthermore it becomes complex when the usage increases. There was a paradigm shift to replace these infrastructures. To make this happen Google showcased the solution for the first time something called Cloud computing.
This service is made up of a programming language execution environment, An operating system, A web server, and database. People can use this environment to execute their code and logic without thinking about their servers, databases and all those stuff.
This created a drastic change in the industry and became a great solution for the people in need. Still, we got some problems like selecting the operating systems, forecasting the demand of capacity beforehand.
This offers a computing architecture and Infrastructure but in a virtual environment so that multiple users can access them. They offered resources like networking, servers etc… still, here we had some problems like patching, scaling etc…
Hope, now you might have got an idea why Serverless computing emerged. Serverless computing has evolved to break all the traditional barriers to compute and deploy the software. It enables the organization to quickly respond to the business needs.
Does it sound like Paas?
It is like Paas but not exactly. The key difference between Paas and Serverless computing is “no idle capacity”, “selecting operating systems” and “micro-billing” . In Paas, you need to pay for the capacity for what you have purchased even when it is not fully used but in Serverless computing, you only pay for what you use. Selecting operating system is another issue with Paas but in Serverless you need not consider an operating system. Micro-billing this is one of the major characteristics of Serverless computing you pay only for the execution of code. It depends on how much memory and time it consumes.
Key benefits of Serverless computing
- No Server management: You do not have to care much about the server it will be maintained by the cloud vendors itself.
- Flexible scaling: You will be automatically scaled according to the incoming events and triggers.
- Highly available: In Serverless computing the resources are always available. Even if there is a fault at some point in the system other available resources would make the system run without any interruption.
- No idle capacity: You do not have to pay if your code is not running.
- Micro-Billing: When your code is executed you pay per execution. Typically, the vendors calculate this based on memory consumption and time it takes for execution.
Most popular cloud vendors
How does Serverless Computing works?
Firstly, this model consists of two services they are Baas (Backend as a service) and Faas (Function as a service). As far as Baas is concerned it typically supports from the back end to the customer like data storage and Faas it allows the authentication through an API whenever the client tries to access the database. You will be allocated a series of resources and it will be triggered by a set of actions or by an incoming event and once the event has been triggered they spin up dynamically all the resources required for the action to get done and you will be billed only to the code you are executing. This concept is called as micro billing and it is the most important characteristics of Serverless computing.
Real time scenario
Let us say if a client uploads a picture and the image must be resized and uploaded to the system. So here the uploading of the photo is considered as an event, it triggers the resources and here come the functions (azure functions) role, it automatically resizes the image and uploads it. The resources will be dynamically triggered and there will be bindings of events which is allocated to do the desired job.
What if your code performs multiple tasks let stick to an example of uploading a photo, resize, compress, creating thumbnails and upload it to a store. Here each one of the tasks is an azure function and to orchestrate all these functions we shall use logic apps to build a workflow. The best part here is we do not need to write a code to orchestrate a workflow it is not only Serverless it is codeless.
What are the challenges with Serverless Computing?
Despite it sounds like there are a lot of benefits it has its own challenges also which makes the customer hesitate to move on Serverless technology.
- Increased complexity – Breaking the giant application into several microservice which increases the complexity to maintain the small functions. Rather it is easy to maintain a single monolithic application.
- Problems in monitoring and debugging – Monitoring and debugging becomes the difficult task to overcome this kind of issues there are not many tools available in the market.
Enterprise Application Integration(EAI)
What is EAI?
Enterprise Application Integration is basically a middleware approach. It allows integrating the enterprise level software application and hardware systems.
Why do we need EAI?
In an enterprise IT we may have (ERP) Enterprise Resource Planning system, (CRM) Customer Relationship Management, Finance system, Mail servers, File servers and so on. In an enterprise-level, the business rules may not transfer across the enterprises, so to make the intercommunication between the enterprise applications EAI is used.
However, EAI reduces the complexity of integrating the enterprise applications. At the same time, it also reduces the necessity of making a drastic change in the data structure and architecture.
How EAI integrates application?
Middleware allows a communication through a standard protocol between applications. Let us see an example to understand more in detail. If a file system wants to interact with SAP system there should be medium to connect these two applications but these two system uses different message protocols so the one which connects these two systems should know both the protocols of the application. Imagine there are any number of systems and gets interacted with each other obviously the complexity gets increased. The idea for this solution is going for a common device which can connect all the applications in the enterprise.
How is EAI related to Serverless?
Using Logic Apps in Serverless computing we can design cloud-based enterprise integration workflows for EAI scenarios. We do have Enterprise Application Integration capability in Logic Apps using which we can design Enterprise integration scenarios.
Real world scenario
In an Enterprise IT, we may have ERP system, CRM system, Finance system and a lot more get integrated to each other. Let us stick to an example of replacing a new ERP with an old ERP system. If we are using a middleware approach in our organization then it is a super easy task, we can just replace the old ERP system with newly updated ERP system without much altering the data structure of the system. Since ERP is communicating only through a middleware like Enterprise Service Bus, it is responsible for the middleware to take care of the necessary changes. It allows the developers to concentrate more on business needs.
EAI meets these challenges by fulfilling three purposes
- Data Integration: It makes sure the consistency of the data across the platform.
- Vendor Independence: The policies do not have to be re-implemented when we are moving to different brand applications.
- Common Facade: Clients or users do not need to learn new software’s because they provide a consistent user interface in the application.
The advantages of EAI are clear
- Real-time information access
- Accessing information more efficiently
- Transferring data and information across multiple platforms
- Easy development and maintenance.
It is exciting to see how Serverless computing is going to make disruption in Enterprise Application Integration space. Happy Learning!!