Azure Serverless

In this article, we’ll learn about Serverless Computing. There are different components associated with it and here we’ll focus on Azure and the services it provides for Serverless Architecture. C# Corner is also having a week-long virtual event on Azure – Azure Summit 2021. To learn more about Azure and its constituent technologies, attending this event will help you explore and experience deeper with Azure. Check out the official website of the summit to register as an attendee or to be a speaker and share your knowledge with the community.
 

What is Serverless and Why do we need it?

 
Serverless is basically a method of computing where the demanded resources are made available as they are needed by the processes. The engineers can code and deploy their systems without having to worry about the infrastructure that lies underneath. Since the client only pays based on the computation used, the old methods of having to pay a fixed amount for specific bandwidth and number of servers have now become obsolete and they play on a rolling basis as the use of the service which supports auto-scaling. As the name suggests, it isn’t the case that server doesn’t exist or aren’t needed but the gist is such that the engineers who run and deploy the system don’t necessarily have to be aware of them, thus the name. Going Serverless enables organizations with on-demand resources for your high–end needs whenever required.
 
It was cumbersome and expensive to own physical hardware itself during the early days of the internet which was the only option. Later, cloud computing became a go-to technology but it was charged upon the bandwidth and fixed remote server space rental basis. The companies and engineers who would purchase these servers would often buy more space and server numbers than what was required just to be assured to feel the security of having the abundance of servers for spikes in traffic, which are mostly always overestimated costing mammoth bills. With Serverless, the cloud service providers have now brought in the technology of auto-scaling and have made the serverless architecture a possibility. Howsoever, during DDOS attacks, the rise in the scaled server can be hard for the bank of the clients of the serverless systems. Shown below is the Serverless architecture for a web application. 
 
 

Microservices

 
Microservices Architecture is basically an architectural style of structuring an application as a collection of services such that they are loosely coupled, highly maintainable, independently deployable, and are organized about the business capabilities. This architecture of structuring the application enables even complex, large applications to be delivered in a rapid and reliable manner. The technology stack of the system is also supported to be evolved easily in time. Microservices basically focuses on the single–responsibility principle. Here, the system can be scale as her the need and has each functionality isolated in a different separate Lamba function.
 

Cloud-native integrations

 
With the serverless architecture, cloud-native applications can be built easily without having to concern about the infrastructure which scales automatically by the service itself, has it's available at all times and has high performance.
 

Components of Serverless Architecture in Azure

 
Azure Functions
 
Azure Functions is the popular serverless compute platform on Microsoft Azure, supporting rapid integration with the Microsoft suite of products. Azure Functions is an event-driven serverless compute platform which enables complex orchestration difficulties to be solved easily. Using Triggers and Bindings, services can be integrated. Applications can be deployed and scaled flawlessly in the cloud with Azure functions. Depending on the workload volume, the infrastructure scales automatically. Building, debugging, deploying, and monitoring are all possible with ease with the built-in DevOps capabilities supported by the Azure Functions. It supports multiple programming languages from C#, Python, Java, or Node.js. With the use of Azure Functions, it can drastically minimize the time to solve problems compared to traditional approaches thus saving the time of developers and duration to provide service to the clients.
 
To learn more on Demystifying Serverless, watch our video,
 
 
Blob Storage
 
The static contents of the web applications such as the HTML, CSS, and JS files are stored in the Azure Blob Storage. Server-side codes have not required the load of the page and all the interactions are performed dynamically with JS codes that communicate through the back-end APIs. This static hosting storage only supports the index documents and error pages like 404.
 
CDN
 
Azure Content Delivery Network is used in the serverless architecture to cache the contents for faster delivery and low latency of the resources and contents of the web app.
 
Cosmos DB
 
Cosmos DB is basically a database service that is multi-model. To achieve high availability, low latency, and instant scalability Azure Cosmos DB is used. It guarantees speed at any scale and thus assures real-time access to the data with support for business continuity in cases of crisis.
 
 
Azure Active Directory
 
Azure AD credentials are used by users to sign in to web applications. Azure Active Directory provides an access token for API and that token is then used to authenticate the API requests.
 
Azure Monitor
 
Azure Monitor focuses on collecting the performance metrics of the various Azure services that are deployed in the solutions. We can get an insight into the health of the solution by visualizing this on the dashboard. Application logs are also collected by the Azure Monitor.
 
 
The Dashboard and Visualization of the Azure Monitor are represented as shown here. 
 
 
Azure Pipelines
 
The services to build, test and deploy the applications are provided through continuous integration (CI) and continuous delivery (CD) by Azure Pipeline.
 
Serverless Runtime
 
An array of runtimes are supported by the Serverless framework which enables developers to use multiple languages. Each Serverless task takes up the same boot time. The process of the serverless runtime as be described in steps below,
 
Triggered
 
Serverless are triggered by events and they function and provide services on-demand.
 
Warm-up
 
Serverless runtime loads up the resources and dependencies to launch and execute the code.
 
Start
 
After boot up, your Serverless code is executed.
 
Processing
 
Your Serverless takes up time to process the event and generate a response.
 
Best Practices
 
There are some best practices to maintain while building our serverless solutions using Azure Functions. Firstly, the functions need to be kept short and we should stay away from long-running functions. The functions should be written to be stateless and defensive. We should always follow the best practices of the function and make the system scalable.
 

Conclusion


Here, we learned a lot about Serverless Architecture and went in-depth to understand various services within Azure to create serverless architecture solutions to cater to various problems. We learned what Serverless Computing, Microservices Framework and various components of serverless architecture in Azure such as Azure Functions, Blob Storage, CDN, Cosmos DB, Azure Active Directory, Azure Monitor, Azure Pipelines, and various steps of Serverless Runtime. Finally, we also learned about the best practices to be kept in mind and followed while choosing Serverless Architecture.