Date: April 03, 2021
If you are looking for a Cloud Service framework for your business needs, then you have likely come across the terms Serverless, EC2, and Containers. However, they have unique differences that must be taken into consideration. Here, our container consulting team will compare these different models developers can choose from when deploying virtual infrastructure and applications. And, we’ll discuss the benefits of each as well as some ideal serverless use cases.
Serverless: Serverless is an execution model where the cloud provider is responsible for executing a piece of code by dynamically allocating the resources. Serverless resources are priced by the amount of resources consumed; you pay only for what you use to run the code. And the granularity is finest with Serverless.Code typically runs inside stateless containers that can be triggered by a variety of events including HTTP requests, database events, queuing services, monitoring alerts, file uploads, scheduled events (Cron jobs), etc. Code that is sent to the cloud provider for execution is usually in the form of a function. Hence serverless is sometimes referred to as Function-as-a-Service or FaaS.
It is a common myth that Serverless means there are no servers as Serverless does not actually involve running code without servers. Rather, Serverless computing means that the business or person that owns the code does not have to purchase or rent servers for the code to run. Serverless computing eliminates infrastructure management tasks such as server or cluster provisioning, patching, operating system maintenance, security, and monitoring and capacity provisioning. Serverless continues to evolve since its launch in 2014, with services like AWS Lambda helping to continuously redefine the ways in which we develop and deploy software products.
EC2: Amazon Elastic Compute Cloud (EC2) is a virtual cloud infrastructure service offered by AWS. EC2 provides on-demand computing resources through which you can create powerful servers and applications in the cloud -- just as you would for on-premises infrastructure. With Amazon EC2, you have the ability to start and allocate virtual machines as needed for your application. It provides you with complete control of your computing resources and lets you run on Amazon’s computing environments. Unlike Serverless, EC2 requires management and provisioning of the environment.
Containers: A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. Packaged with both the application and all the elements the application needs to run properly--including system libraries, settings, and all other dependencies--a container only needs to be hosted and run in order to perform its function.
In a container-based architecture, how to increase container scale is determined by the developer in advance. Containers can easily be moved around and deployed wherever required. Each container shares the machine’s kernel with other containers but runs as if it is the only system on the machine.
While basic websites are built using services like AWS API Gateway, DynamoDB, Amazon S3, and Amazon SQS, as can be seen in the graphic below, AWS Lambda, along with other AWS services, are used to build powerful serverless websites, applications, and microservices.
Continuous Integration and Continuous Deployment (CI/CD) Pipelines:
CI/CD pipelines allow DevOps engineers to ship code in small increments and serverless automates these processes. Code changes trigger website builds and automatic redeploys, or pull requests trigger the run of automated tests to make sure the code is well-tested before human review. Further, the build pipeline publishes source code into SonarQube, which in turn performs a static analysis of the code to detect bugs, code smells, and security vulnerabilities.
Event Streaming, an AWS Lambda Example
Serverless compute is triggered from sub-topics or from event logs, providing elastic and scalable event pipelines without the maintenance of complicated clusters. A simple use case of an AWS serverless application that receives a stream of events for two different clients changing states is given below. When events are pushed into Amazon Kinesis, Lambda triggers appropriate rules out of DynamoDB for each client and evaluates whether the rule is satisfied. If so, an alert is published to Kinesis Alerts Stream and Lambda triggers notifications.
Image and Video Manipulation
A serverless video transcoding use case involves a Lambda trigger submitting a transcoding job using Amazon Elemental MediaConvert when a new file is ingested. The transcoding job specifies video packaging settings like HLS and DASH along with the bitrates that are expected from the transcoded output stored in another Amazon S3 bucket. Then, the videos are delivered securely by Amazon CloudFront, restricting access to the Amazon S3 bucket by using origin access identity (OAI).
Quantum Implements Serverless for Automotive Leader
For a global auto manufacturer, Quantum implemented AWS Lambda and AWS Step Functions to create accounts automatically; AWS Lambda and Step Functions are used to automatically create new AWS accounts under various organization units.
The processing backend of the account creation system, Lambda functions are integrated with the API gateway and AWS Step Functions to create new accounts and organizational units. AWS Step Functions is a service that is used to coordinate the different parts of the account creation process; we can configure the Step Functions State machine using Amazon State machine language. Each task in the State machine is a Lambda function which is invoked in sequential order as defined using the state definition. Step Functions control the execution of the Lambda function, handling the input/output of each function and any errors raised from each task.
The process begins with a request placed from the UI based application which triggers an API which in turn triggers a Step Function which then triggers a series of Lambda functions. Ready to get started? Read our Tech Tutorial, “How to Start the Serverless Journey: Serverless Framework Deep Dive”
Serverless Decision Factors
There is no doubt that the serverless approach offers appealing benefits to software teams and customers, but it’s not necessarily a fit for every deployment scenario. So before making decisions on serverless deployments, you should evaluate the following:
While the approaches discussed in this white paper tend to weigh toward serverless as the best option, it really depends on many factors such as the complexity of the application, pricing, choice of database, application adoption, hosting, and more. From a business perspective, the real attraction of serverless is giving developers space to quickly and easily experiment with new features and services, reducing time-to-market in an increasingly competitive world.
Improve Business Outcomes with Serverless Technologies Watch our Serverless Demo to learn more.
As we’ve seen, there are many challenges when it comes to building successful IoT implementations — from the infrastructure through instilling good app design processes. And as the customer IoT success stories above have shown, an infrastructure that is not only secure but elastic and agile enough to deliver innovation must be in place.