Serverless Architecture

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.

Managed Architecture

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.

Serverless Architecture

There are some key components that qualify serverless architecture

  • Managed service- in a serverless environment, the client is only responsible for the actual service.  The server hardware, operating system, and network are all managed behind the scenes by the provider.
    • Hardware provisioning- one key component of serverless is that there is no dedicated hardware or pre-purchased units of capacity. The client is only billed for the actual consumed use of the system and not for any idle time.
    • Scaling- serverless architecture allows for automatic scaling to meet demand. If the load on your service grows or peaks, you don’t need to provision additional hardware to handle it.  It’s all done automatically behind the scene in a seamless fashion.

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.

Cost

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.

Elasticity

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

Performance

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.

Resource limits

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. 

Security concerns

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. 

Vendor lock-in

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.

Final thoughts

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.