Essential Guide

AWS Lambda architecture brings serverless to enterprise cloud

A comprehensive collection of articles, videos and more, hand-picked by our editors
Evaluate Weigh the pros and cons of technologies, products and projects you are considering.

AWS Lambda alternative expands dev options, avoids vendor lock-in

Lambda introduced serverless computing to many users, but the conversation doesn't end there. Serverless tools can boost Lambda workloads, and other services can replace it.

AWS Lambda enables developers to run code on demand -- without having to provision any servers. Amazon automatically...

manages running code in response to events and scales underlying resources; developers only need to worry about the actual code -- not what types of Elastic Compute Cloud instances to run or scale -- if a server needs to run at all.

Lambda's main advantage is simplicity, and companies don't need to spend money on unused resources when turning to serverless computing. Still, it can be confusing and complex to manage the function-based service, which can leave an enterprise searching for an AWS Lambda alternative. Lambda has some built-in features, such as versioning capabilities, but managing these versions without a tool set becomes incredibly complex. Fortunately, there are several utilities to help organizations manage Lambda code, versions and configurations.

Apex offers apex-shell, which enables arbitrary commands within a Lambda environment. It has a large focus on compatibility and uses a shell wrapper to allow the use of Lambda functions written in Go.

AWS Lambda interacts with other cloud services
AWS Lambda triggers events based on interactions with other AWS tools.

Apex focuses on two layers: the project layer and the function layer. Developers create a project, which is a group of functions. Some configurations are shared between projects, while individual functions can override configurations, as needed. Once configurations live in an Apex project directory, and have a project.json configuration and a functions directory with subdirectories for each function, Apex provides command-line tools for viewing logs, as well as deploying and invoking Lambda functions.

Apex is simple and provides little overhead for existing development. But because Apex packages each function separately, code that's shared between functions must be handled in a precommit hook. Apex also doesn't run commands, such as installing node modules, automatically. However, this is easy to add in the project.json file.

  "hooks": {

    "build": "npm install --production",

    "clean": "rm -rf node_modules"

  }

The biggest downside of Apex is, currently, there's no way to execute or test a function within its framework before deploying it to AWS Lambda. If development is done in Node.js, then it's fairly easy to accomplish this using npm test scripts. But within the Apex framework, its invoke function invokes the live code on AWS Lambda -- not local code.

Lambda's main advantage is simplicity, and companies don't need to spend money on unused resources when turning to serverless computing.

Serverless Inc. is a framework designed around AWS Lambda and Amazon API Gateway. Unlike Apex, Serverless offers many options for testing the framework offline; it also enables developers to easily integrate AWS Lambda with API Gateway. The framework enables IT teams to manage AWS Lambda functions, as well as an entire design methodology and framework for building a serverless application.

The Serverless framework replaces traditional back-end servers, allowing developers to build an entire web application using microservices architecture patterns by deploying individual functions to AWS Lambda. It allows an AWS user to place all code into a single repository and provides a simple way to deploy an update with one command.

Serverless is less useful for projects that aren't designed to use HTTP. Therefore, if an application isn't going to use API Gateway, it doesn't make much sense to use Serverless. But, overall, Serverless is worth considering based on the appeal of building and locally testing an application before deploying multiple functions to AWS Lambda.

Don't get locked in, find an AWS Lambda alternative

The biggest issue with tying a project into AWS Lambda is it locks that project to one provider. Applications using one of these frameworks may be stuck if organizational goals shift, but an enterprise can turn to an AWS Lambda alternative.

Google Cloud Functions launched shortly after AWS Lambda. Google released the new service and provided several open source tools to work with the API. As with AWS Lambda, IT teams can invoke functions directly or via events triggered from other sources. Google Cloud Functions is still in early beta, so developers need to request access before using it in development as an AWS Lambda alternative. As of now, Google Cloud Functions only supports Node.js.

Heroku, which runs on AWS, was incredibly popular before Docker was released. It's most comparable to Google App Engine, allowing a developer to build an entire application with multiple services in a more traditional environment. Heroku helps developers go from prototype to deployment, and it includes an autoscaling feature. Heroku could be a good fit for development teams getting started with a cloud-based framework.

Hook.io advertises itself as a web hook framework. AWS Lambda is essentially a way to run code in response to events, and a Webhook has the functionality. Hook.io supports Node.js, Python and an assortment of other programming languages that Lambda doesn't support. Hook.io is also open source, so it has less fear of vendor lock-in, but less corporate backing.

Many developers are starting to work with AWS Lambda. It's had more than a year to mature, and other cloud providers have essentially cloned its capabilities. And the addition of wrapper tools, like Apex and Serverless, make it easier to begin development of a serverless computing architecture with AWS Lambda.

Next Steps

AWS Lambda is head of the serverless pack

Avoid these common Lambda mistakes

Visualize a Lambda deployment to track serverless resources

This was last published in July 2016

PRO+

Content

Find more PRO+ content and other member only offers, here.

Essential Guide

AWS Lambda architecture brings serverless to enterprise cloud

Join the conversation

7 comments

Send me notifications when other members comment.

By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy

Please create a username to comment.

What functionality is AWS Lambda missing?
Cancel
The biggest thing is language support. For example, the EC2 SDKs support JavaScript (browser), Java, .NET, Node.js, PHP, Python, Ruby, Go, and C++ (as well as support for Android and iOS), whereas LAmbda currently supports only Node.js, Python, and Java.
Cancel
and now of course C#
Cancel
it will be interesting to see if they ever support the ability to support containers as the packaging of the function. 
Cancel
It sounds like Apex and Serverless have a lot to offer, but being able to use Serverless to test offline is a great benefit. Still, they both have a lot to overcome just because of the hype that currently surrounds Lambda.
Cancel
For me one of the missing pieces is the ability to handle binary data successfully. At re:Invent they announced that API gateway can now handle binary data and this can be passed through as Base64 encoded to Lambda function, but there is still the a restriction on the size of data that can be passed. So now you may be able to generate thumbnails for small images, but larger binary content is still off limits.
Cancel
The way to handle this is to upload that data to S3, and then send a redirect header to the S3 Signed URL from your lambda function.
Cancel

-ADS BY GOOGLE

SearchCloudApplications

TheServerSide

SearchSoftwareQuality

SearchCloudComputing

Close