There have been so many advancements in the past few years, especially with the cloud. Advancements in technology and services offered by the major public cloud vendors are in overdrive. We have certainly moved from a world of simple virtual machine to a complex, hybrid virtual environment landscape that blurs the lines between on-premises and public cloud and between legacy virtualization technologies and new. Containers have been taking the world by storm for the past couple of years and are quickly becoming more mainstream with orchestration and scheduler technologies such as Kubernetes. A technology and service offering that is also catching on for businesses today interested in what the public cloud offers is serverless.
Serverless technology is often a technology that many may not yet understand or make use of. However, it certainly has merit as a tool that can be utilized in many hybrid environments where organizations are beginning to use microservices.
Let’s take a look at what serverless technology is and some of the common use cases that may fit with serverless technology.
What is Serverless?
So, the question that everyone first asks about “serverless” technology is “are there really no servers?”.
To clarify, serverless does rely on servers. Servers are still part of the equation with “serverless”. However, what serverless allows organizations to do is think less or not at all about the server infrastructure and concentrate only on the applications themselves or microservices needed by business processes. This allows focusing on building applications, worrying less about the servers that are running behind the scenes. IT can then focus on what apps, workflows, or processes that are needed. Serverless allows organizations to shift focus to functions needed to process data. Serverless is really just about managing servers “less”.
What is serverless and why should organizations care about it?
Serverless has certainly matured over the past couple of years and is no longer a new niche area. In fact, serverless has matured and evolved into enterprise-grade standards and serverless is now ready for enterprise production environments.
Azure Serverless Architecture Evolution
Microsoft’s Azure public cloud and IaaS offerings are growing exponentially. Serverless is one of the Azure offerings that is evolving and maturing and becoming a viable service available to businesses making use of Azure IaaS.
What new things are available in serverless at Azure?
The first thing to highlight is, there is a new version of the Azure function’s runtime. The Azure functions runtime has been updated to v2. Azure Functions host has been rewritten on top of .NET Core 2.1. With the rewrite, performance has been tremendously improved. This has also allowed for much better portability of functions due to .NET Core being able to run on multiple platforms including Linux, Mac, or IoT.
Additionally, organizations will have a much better experience with the serverless functions as the “Getting Started” experience in the portal is better. New integration with Azure key vault has been added as well, so you can store your secrets inside the key vault.
There are new hosting options that allow businesses to make the decision of where they want applications to run perhaps inside of a specific vNet on virtual machines that are specifically for an enterprise. In general, new hosting options have been added that allow more control and options for enterprise environments.
Migrating from Azure Functions Runtime v1 to v2
What does the process look like to migrate from Azure functions runtime v1 to v2?
The process is pretty straightforward. Functions v1 is .NET framework and v2 is .NET Core. Organizations will need to make sure that .NET classes used in applications are available in v2 that was used in v1. Most of the work for organizations will be figuring out if .NET framework classes are found in .NET Core utilized in Azure Functions Runtime v2.
Serverless Use Cases
What are good use cases for serverless technology? One might wonder, how or where would I want to use a microservice instead of full-blown servers hosting applications?
- One of the more common serverless use cases is a serverless website. Serverless websites can be written and deployed without deploying infrastructure to host the website, etc. In the case of Azure serverless, if you have a storage account in Azure, you can place an HTML page in a storage account. There are no web hosting accounts or servers. When someone calls the web page, it calls out to the serverless functions it needs to populate the data and displays the website along with the data
- There are many advantages to serverless websites. Due to the lack of needing to provision infrastructure, it drastically cuts down on the time it takes to deploy a fully-functional site. Additionally, these websites automatically scale with the demand placed upon them. This means there is no need to worry about provisioning more infrastructure if you have a surge in traffic
- Modular applications are another example of where serverless excels. When other third-party applications allow subscribing to events, using serverless functions, you can trigger functions and actions based on those events. This is possible regardless of where functions are hosted
- Another huge serverless use case is the explosion of hybrid cloud applications. Organizations today are making use of multi-cloud environments and applications. Services may be spread across all the major public cloud vendors to provide functionality to business-critical applications. Using serverless functions as part of the application allows businesses to be cloud agnostic and tool the application according to their business needs rather than a specific public cloud vendor’s limiting requirements
What are use cases where serverless may not work?
- With serverless at least in the context of Microsoft Azure, there is no persistent storage by default. If you have something that is calling an API in the backend and it is synchronous and If no one has called this API before, there is a thing called “cold start” where users could wait for seconds to get a return. There are ways to reserve slots where you can help mitigate cold starts, however, it is certainly a consideration that businesses should be aware of when building applications making use of serverless components
- Another scenario that may not fit a serverless solution is in cases where you have a really big microservices application. Managing all the individual serverless microservices can become difficult to manage. Serverless may not make a lot of sense in this case when there are solutions such as Service fabrics that may provide the functionality needed without managing the individual serverless microservices
Concluding Thoughts
Public cloud offerings such as serverless technology are allowing organizations to think much more efficiently and in new ways about required infrastructure. We have historically always had to worry about managing servers in enterprise environments. However, the new serverless functions that allow reacting to various triggers, performing an action, and then sending the result on to the next microservice is certainly a shift that allows organizations to be much more agile, pointed, and make use of multi-cloud environments with their applications. Such use cases as serverless websites, hybrid cloud applications, and modular applications make use of these functions to perform specific tasks needed by the application. Microsoft Azure’s serverless offering has certainly matured with the new availability of Azure Functions Runtime v2 which is built on top of .NET Core. Migrating to the new runtime involves making sure the classes used with .NET framework are available in .NET Core. With serverless technology continuing to mature and evolve, there is no doubt it will continue to gain popularity and use with developers writing code for business-critical applications that can make use of this microservices architecture.
Follow our Twitter and Facebook feeds for new releases, updates, insightful posts and more.