The infrastructure that runs your applications can be nearly as complex as the applications it supports.
This complexity generally scales with the resilience of the architecture of your application, the scaling needs, and any security concerns. Thus, successful infrastructure for traditional applications often relies on a comprehensive tooling suite that allows the infrastructure engineers to iterate upon and improve your application’s resources.
A serverless approach mitigates some of this complexity by removing the need to control your hardware configuration, but the various triggers and functions that comprise your functional software will have their own configuration and settings files that can rival any application in complexity.
In this article, we’ll take a look at some of the must-have tools for serverless developers. These tools will primarily focus on orchestration, maintenance, and deployment of your assets, but with a serverless approach you’ll be able to store this infrastructure configuration as code alongside your functional application releases, implementing your full software development lifecycle in the same way you implement your functionality and specify your application architecture.
Applications built on top of AWS services will often have a number of configuration and initialization files that are needed to connect to the products that let the code run successfully. Each product often has its own configuration conventions, and while there are many cases where the services share either configuration entries or patterns, there still ends up being a lot of configuration data that needs to be maintained as institutional knowledge, due to how infrequently it’s truly needed during the maintenance phase of an application.
The AWS Serverless Application Model (SAM) is the first tool on our list, and addresses exactly this complexity issue. It is an open-source framework published by Amazon that is intended to help developers build serverless applications more quickly and reliably. The AWS SAM solves an initial problem of duplication in your function configurations – as you begin writing functions, you end up needing to build and upload definition and resource files to AWS services, some of these with complex syntax that can be challenging to understand and maintain. AWS SAM addresses this issue by providing a powerful shorthand syntax that you can use to quickly establish functions, databases, event mappings, and other interfaces within AWS for your application, allowing you to keep your infrastructure configuration as code.
Rapid iteration in serverless development depends on a robust and comprehensive local framework that gets close to a production environment in isolation. The docker-lambda github repo helps make this easier by providing Docker containers that emulate the production environment of AWS Lambda functions. This sandboxed local execution environment mirrors the configuration of Lambda function execution containers almost identically. This includes the installed libraries and APIs, usernames and permissions, and calling context for your Lambda functions. The docker-lambda containers give you the environment needed to understand how your code will behave in production before each release, increasing your serverless application’s reliability and maintainability.
For more on serverless testing – and why you shouldn’t rely exclusively on offline mocks – read ‘Serverless Testing: Adapt or Cry‘
The Lumigo-CLI builds on top of the tools available in AWS SAM and Serverless Framework by expanding the number of AWS services with which your deployment process can integrate. It gives you a console-friendly interface through which you can list your lambda functions, browse SNS topics for message troubleshooting, track events in a Kinesis or DynamoDB stream, and much more. This open-source tool is easily-integrated into your build pipeline, and can help further centralize the definition and maintenance of your serverless architecture.
The AWS Serverless Developer Tools page is not a tool per se, but rather a compilation of useful serverless development resources curated by AWS itself. This includes a compendium of serverless application frameworks, featuring highlights from AWS itself, open source tools, and third parties. Continuous integration/deployment tools are also highlighted, along with best practices for monitoring, logging, and debugging. With appropriate research using AWS Serverless Developer Tools, you should be able to find nearly anything you might need to improve the efficiency of your serverless development process.
With the relative youth of the serverless development community, there are still a lot of best practices that have yet to be discovered . As the technology is so new, there is a unique opportunity for any developer looking to make their mark on a new technology, and developers have responded enthusiastically. If you’re having trouble finding a tool to fill a specific need in your application stack, the benefit of the open-source nature of the serverless tool chain is that you have the capability to write your own extensions, modifications, and tools as needed. By leveraging the work already available on the web, you can solve pain points common across the serverless domain, and potentially discover new revenue streams in the process.
While ephemeral hardware makes deployment of serverless applications easier in many ways than their traditional counterparts, orchestrating the deployment and communication between the various nodes of your distributed architecture can prove challenging without additional support. Your engineers, by spending a few hours searching on the web, can add tools to your chain that make serverless development as seamless as traditional CI/CD. Additionally, the open source nature of these tools give you the power to modularize and expand your toolchain, allowing you to customize the tooling to your needs while demonstrating thought leadership and building trust with the serverless community. With a focus on the right tool chain to support your serverless application, your developers will be able to focus their talents in the right direction.
Do you have a serverless tool you can’t live without? Share your favorite and we’ll update our list with the most popular.