heroBackground

AWS Lambda

Failure Injection For AWS Lambda Azure Functions

dateIcon
durationIcon
1:30 PM
shareIcon
AWS Lambda

Creating modern applications using serverless technology and managed services means that anyone can build distributed and highly available systems without worrying about the underlying infrastructure. But it’s not all fun and games. This talk I did at AWS re:Invent 2019 with the title “Performing chaos engineering in a serverless world” explains some of the challenges with serverless, common weaknesses in serverless applications as well as challenges with using chaos engineering in serverless. Please refer the video.

Inject failure in our functions

AWS Serverless Hero Yan Cui has written several articles about latency injection for AWS Lambda, see “How can we apply the principles of chaos engineering to AWS Lambda?” (https://theburningmonk.com/2017/10/how-can-we-apply-the-principles-of-chaos-engineering-to-aws-lambda/) and “Applying principles of chaos engineering to AWS Lambda with latency injection” (https://hackernoon.com/chaos-engineering-and-aws-lambda-latency-injection-ddeb4ff8d983) from October 2017. These articles explain why we could and should use chaos engineering in our serverless applications as well as showing examples on how to do it.

AWS Principal Developer Advocate Architecture Adrian Hornsby expanded on this by first creating a Lambda layer and later a Python library for failure injection, chaos_lambda (https://github.com/adhorn/aws-lambda-chaos-injection), giving developers an easier way to get started with chaos experiments for AWS Lambda. Just install the library, wrap your functions with the appropriate failure mode and you are ready to start injecting failure!

To reach the same level of simplicity for NodeJS developers I late last year created an NPM package called failure-lambda (https://github.com/gunnargrosch/failure-lambda). The goal with failure-lambda is in short to have an easy way to do failure injection in AWS Lambda using several different failure modes. To make it even easier I decided to use a single wrapper and instead have the failure mode selectable. That way you don’t have to make code changes if you want to switch between for example latency or exception injection, you just change a setting.

As we know serverless isn’t just about AWS and chaos engineering for serverless isn’t only about AWS Lambda. For that reason, there are now also the same failure injection options for NodeJS developers building serverless using Azure Functions and Cloud Functions. This with the NPM packages failure-azurefunctions (https://github.com/gunnargrosch/failure-azurefunctions) and failure-cloudfunctions (https://github.com/gunnargrosch/failure-cloudfunctions).

Failure modes and rate of failure

Even though this all started with latency injection as in Yan Cui’s articles, latency is far from the only possible failure we can have in our serverless applications. In failure-lambda, failure-azurefunctions and failure-cloudfunctions there are now five different failure modes to choose from:

Latency - Injects latency to the executed function, controlled using a minimum and maximum span of milliseconds. This can for example be used to simulate service latency or to test and help set your timeout values.

Exception - Throws an exception in the function. Helps you test how your application and code handles exceptions.

Status code - Your function will return a status code of choice, for instance 502 or 404 instead of the normal 200. This gives you the possibility to test what happens when there are errors.

Disk space - Will fill your temporary disk with files to create a failure. If you’re using disk to store temporary files you can test how your application behaves if that disk gets full or you are unable to store to it.

Blacklist (courtesy of Jason Barto) - Blocks connections to specified hosts. Use to simulate services or third parties being unavailable.

All these failure modes can be used together with a rate of failure that you set. The default is to inject failure on every invocation but in reality, it is likely that for example a third party is unavailable on 50% of the calls made to that host or that an exception is thrown on a quarter of the invocations. Setting rate will allow you to achieve this.

Related Blogs
default
Monitoring as a Service
Monitoring as a Service in Cloud Computing: Maximizing ROI

In today's fast-paced business environment, cloud computing has become the backbone of modern IT infrastructure. But with great power comes great responsibility: reliable performance and uptime are critical to success. Opsio's Cloud Computing Monitoring as a Service provides an advanced solution that delivers actionable insights for managing your cloud-based systems, maximizing ROI and minimizing downtime in the process.

10:00 AM
default
Decoding Cloud Computing SLAs
Decoding Cloud Computing SLAs: A Comprehensive Guide
Opsio Managed Service Cloud Provider offers consulting services to help businesses modernize their IT infrastructure and applications with leading cloud providers such as AWS, Google Cloud, and Microsoft Azure. With a formal and professional tone, Opsio showcases their expertise and attention to detail in assisting companies to achieve their goals in scalability, flexibility, security, and cost reduction. They emphasize the importance of detailed reporting, remediation procedures, and escalation processes in ensuring minimal downtime and maximum system reliability in cloud computing environments. Opsio's team conducts thorough root cause analysis in the event of a major incident to prevent future occurrences, demonstrating their commitment to proactive measures. By leveraging the tools and services provided by cloud platforms, businesses can focus on their core activities while leaving their IT needs to the experts at Opsio Managed Service Cloud Provider.
10:00 AM
default
Navigating Your AWS Cloud Journey
Navigating Your AWS Cloud Journey: A Comprehensive Guide to Choosing the Right Managed Service Provider
Choosing the right managed service provider (MSP) is essential for businesses looking to modernize their IT infrastructure with AWS Cloud. This blog post highlights key factors to consider when selecting an MSP, such as long-term partnership potential, flexibility to adapt as the business evolves, and options for transitioning between cloud providers if needed. It emphasizes the importance of evaluating the MSP's expertise in managing AWS environments and their proven track record in implementing and optimizing AWS services. Additionally, the level of support and service provided by the MSP, including proactive monitoring, 24/7 technical assistance, regular performance reviews, and clear communication channels, should be assessed. By partnering with Opsio Managed Service Cloud Provider, businesses can benefit from their consulting services within this field. Opsio offers tailored solutions that align with specific business needs, ensuring ongoing support and driving success in the cloud journey.
10:00 AM
Unsure About Your Cloud Strategy? Let Us Guide You
Receive personalized guidance from our cloud professionals. Talk to an expert or schedule a meeting with our consultant today.
Talk To Our Cloud Experts
our services

These services represent just a glimpse of the diverse range of solutions we provide to our clients

Get in touch
Connect with us
Tell us about your business requirement - and let us take care of the rest.
INFORMATION

Phone


AuthorImg

Hello, I am Praveena - Country Manager of Opsio. Fill in the form below and I will reach out to you.

Tell us about your business requirement
And our team will get back to you.