© 2021 All rights reserved
Alpha Cloud Services
What is Serverless Architecture
Serverless architecture is the concept of being able to run an application, program, or even just a specific function, without having to manage the underlying operating software your hardware. Also referred to as serverless computing, or Function as a Service (FaaS), it’s a way to build services without having to build infrastructure.
Any application you host in your business requires the architecture to run it. While it may run on an existing network, shared with other applications, both internal and external, it will require server hardware to sit on.
There are some key components that qualify serverless architecture
Examples of Serverless Architecture
There’s no shortage of serverless apps in use today. For example, you can create an unlimited number of google docs without any concern for storage space. Same thing for another google product, gmail. Send, store, receive as many emails as you want, without having to worry about disk space.
Serverless applications aren’t just limited to the consumer space. Many cloud providers, including Microsoft Azure (link to Azure) and Amazon’s AWS (link to AWS) also provide many great tools for businesses and large enterprises that fit the serverless architecture model.
In Azure, some of these examples include Azure Functions and the Azure Kubernetes Service (AKS).
Azure functions- Micorsoft’s serverless compute platform, Azure Functions lets you run event-triggered code without having to explicitly provision or manage infrastructure.
AKS- Azure Kubernetes Service (AKS) offers serverless Kubernetes, an integrated continuous integration and continuous delivery (CI/CD) experience, with enterprise-grade security and governance. With this service, teams can rapidly build, deliver, and scale applications.
Some of the more popular offerings from AWS include Lambda, S3, and Glue.
Lambda- This service, first launched in 2014, is an event-driven, serverless computing platform. Fully customizable, a wide variety of stateless services can be built on this platform in languages such as Python, Node.js, Java, .NET, Go and Ruby.
S3- Amazon Simple Storage Service provides cloud-based object storage through an API or the AWS user interface. It uses the same scalable storage infrastructure as Amazon.com’s global e-commerce network.
Glue- There are two main parts to this service. The first is a fully managed extract, transform, and load (ETL) service for preparing data. The other part of Glue is the crawler, which will create a catalogue of your AWS data sources that can then be used by the Glue ETL service, as well as other AWS services.
Advantages of Serverless Architecture over Managed Architecture
In certain situations, serverless architecture can provide many advantages over a managed environment.
The first, and probably most important advantage of a serverless architecture is cost. For services that sit idol often, or services that have only sporadic peaks in volume, the cost savings of a serverless architecture can be significant.
These cost savings come in many forms, but can include hardware maintenance, licensing, staffing, and ongoing support costs. Every increase in volume that requires additional capacity adds to all of these costs in a managed environment.
The cost advantage can also be true for new services. Rather than a firm making the investments to provision hardware and management to stand up a new application, new services can be set up on a serverless platform with ease.
Even in a cloud environment, autoscaling policies and processes can be difficult to manage. Mistakes can lead to bottlenecks and outages, or significant cost overruns.
Serverless cloud platforms are very elastic, and scale up and down with ease. In this environment, developers aren’t dependent on infrastructure or support engineers to deal with changes in demand. The provider scales and manages the required resources.
Serverless environments allow for the rapid provision of resources in real-time, even for unforeseen peak loads and disproportionate growth, without any effort by the client.
Decoupling and microservice design
As enterprises move away from monolithic applications into more highly decoupled functions and microservices, serverless architecture can play a large part. Entire applications can be developed with decoupled functions running on a serverless platform, increasing the velocity of development teams and helping the transition to a CI/CD environment.
Disadvantages of Serverless Architecture
One disadvantage that can be found with serverless architecture is latency. As services in a serverless architecture must spin up completely, versus just from an idol state, responses can be slower than in a non-serverless environment. This can be critical in customer facing applications, fraud detection, and in other cases where response time is important.
Some serverless offerings can come with certain resource limits or throttling. It’s important to understand what those limits are to make sure there aren’t any impacts during peak workloads. In many cases, dedicated resources might be necessary.
While the service is completely walled off from the underlying infrastructure and operating platform, it exists in a shared environment. When dealing with highly sensitive or personally identifiable customer data, additional steps may need to be taken to ensure all information remains secure.
No access to the underlying architecture
When debugging, it can be useful to understand the virtual machines, hardware, or network resources your code is running on. In a serverless environment, it is a black box.
One big disadvantage to the use of vendor provided serverless architecture is vendor lock-in. Most of these services have specific dependencies for the applications that run on them that don’t allow for easy portability. In many cases, the application will have to be substantially re-coded before it can be deployed onto a new platform. For customers that may require moving to a managed platform at a later date, this would need to be taken into consideration.
Portability to serverless
To make serverless computing possible, functions must be developed to be stateless. That is, they must contain instructions for the program’s response to specific events, in addition to the actual program code that is created. This reduces the portability of some existing applications from a managed environment to a serverless one.
As with many topics regarding the cloud, serverless architecture is not a one-size fits all approach. Many considerations should be made before making the decision to develop and deploy onto a serverless framework.
There are many advantages to migrating to a cloud environment, but not all cloud services are serverless. If a business is considering replacing a legacy system with a new cloud-based solution, the specific requirements for this application will be used to determine the best architecture. In some cases, a managed server environment may make more sense than a Serverless or Function as a Service type approach, while still taking advantage of the many benefits a cloud-based solution can offer.