🚀 Project Update:

Lambda API: v0.9.2 Released

Lambda API v0.9.2 has been released and contains additional updates and fixes for the index.d.ts TypeScript declarations file. Thanks again to @hassankhan and @Wintereise for submitting the changes. The release is immediately available via NPM. Read More...

Off-by-none: Issue #12

Leaving on a jet plane (to re:Invent)… ✈️

Welcome to Issue #12 of Off-by-none. I’m glad to see all the new faces here and I can’t wait to meet several of you at re:Invent next week!

Last week we looked at a number of resources for serverless beginners as well as some advanced topics for devs looking to level up. This week we’ll continue to dig deeper and explore more about microservices and step functions, plus we’ll look at how startups can benefit from using serverless.

Before we jump in, I wanted to mention Mark Hinkle’s post that compiles a bunch of serverless survey results. Serverless Adoption by the Numbers is a great overview of the serverless landscape. Some key takeaways include: searches for the term “serverless” have increased 20x in the last 3 years, serverless will overtake containers-as-a-service in 2018, and many companies are leveraging multiple cloud providers. There’s also a list of resources at the end if you want to check out the different surveys. Very encouraging news.

Okay, there is a ton to get to today. Let’s get started! 🤘🏻

What to do when you want to take serverless to the next level… ⛷

Toby Fee from Stackery has a great post that outlines 6 Best Practices for High-Performance Serverless Engineering. Lots of useful tips in here.

A few weeks ago I went to ServerlessNYC and outlined a few key takeaways from Gwen Shapira‘s talk about handling data in serverless applications. Mark Boyd from The New Stack has written a post about her talk that goes into a little more detail. You can watch her talk as well.

Thinking about doing some queue processing with your serverless application? Mikhail Shilkov ran some experiments and documented them in his post From 0 to 1000 Instances: How Serverless Providers Scale Queue Processing. He compares Lambda, Google Cloud Functions and Azure Functions to see how they handle 100,000 messages flooded into a queue. The results are very interesting.

Are you prepared to build a production-ready serverless application? Yan Cui (aka @theburningmonk) has completed his Production-Ready Serverless video course! If you want to get a complete overview of testing, debugging, CI/CD, monitoring, error handling, and more, check out his serverless course.

When you realize the power of Step Functions… 🔌

If you’re still using servers, like Chad Van Wyhe at PCI, you can reduce AWS Costs with Step Functions simply by automating the shutdown and snapshotting of your instances. This is an interesting use case that could be applied to a number of applications.

Paul Swail discovered how to Schedule emails without polling a database using Step Functions. I thought this was quite clever, so I posted the link on Twitter.

Apparently other people thought it was clever as well. 😉 Perhaps this use case was already discovered, but thanks to Paul for documenting it. Plus, there are plenty of applications that would be perfect for. This is most likely going to be my go to strategy for building scheduling services.

When you’re curious what all the fuss is about microservices… 🤓

I’m a huge fan of microservices and have written extensively about them (see here and here, oh and here). So whenever I find content about microservices, I have to take a look. There were a few good resources I came across this week that I wanted to share.

Kyle Galbraith tells us 6 Interesting Things You Need to Know from Creating Serverless Microservices. Kyle is just building a small application, but many of his observations are spot on. I’m not sure I would start by creating separate AWS accounts for each microservice, but it certainly is a valid approach for fine-grained scoping of resource limits plus avoiding other services being noisy neighbors and exhausting concurrent executions.

I recently went down the YouTube rabbit hole when I discovered a talk by Sam Newman from GOTO Berlin earlier this month. Sam Newman is the author of Building Microservices, which is a must read, btw. Anyway, his talk, Insecure Transit – Microservice Security, dives deep into things like the Confused Deputy problem and proposes solutions (like using an internal JSON Web Token to pass context to downstream services). Really good stuff.

I then found a talk he did at GOTO Amsterdam called, Confusion in the Land of Serverless, which is another excellent talk. This ultimately led me to his course: Serverless Fundamentals for Microservices: An Introduction to Core Concepts and Best Practices. I didn’t get a chance to watch this yet, but it looks like a really good, in-depth courses for building microservices with serverless.

When you’re considering what tech to use for your startup… 👨🏻‍💻

James Beswick‘s new post, Serverless for startups — it’s the fastest way to build your technology idea, is a great overview of how serverless can be used to quickly and inexpensively test your product concept. Unless your application needs to do something that serverless can’t do (🤔), there really isn’t a better way to build a greenfield application.

Along the same lines, Necmettin Karakaya wrote a piece that gives you a Full-Stack Serverless MVP recipe for cash-trapped Startups. This might not be the perfect recipe for your use case, but it shows you that there are enough tools and services out there to build your applications without the need to manage servers.

Finally, a while back I wrote a fictional story about two different startup teams. One chose serverless technology, the other did not, and the outcomes are very different. A Tale of Two Teams is a fun read that draws from real experiences that I’ve had over the course of my 20 years spent writing software and building applications.

When you want to get started with serverless… 🚼

New Relic gives us some Tips and Practical Guidance for Getting Started with AWS Lambda. There is plenty of good bits of information in here. Worth the read if you’re new to Lambda and serverless.

It’s amazing how many open source serverless platforms there are. In 7 open source platforms to get started with serverless computing, Daniel Oh lays out a number of popular choices. He also gives a great overview of Knative. Helpful if you’re interested in orchestrating and serving up your own serverless function containers.

When you want to bring serverless workflows to the enterprise… 🏢

Forrest Brazeal and Chris Munns put on a great webinar on Serverless Workflows for the Enterprise. There were some excellent ideas in there for segregating shared services accounts and setting up Dynamic Feature Pipelines. There were also lots of best practices for testing, secrets management, and multi-account security. You can watch the video and download the slides.

You can also listen to Forrest and Jared Short talk about the Future of FaaS  (and Jared’s new role at Serverless, Inc.) on the Think FaaS podcast.

When AWS makes it impossible for you to keep up with their product updates… 🤯

And I thought there were a lot of updates last week! AWS is continuing to pump out new features before re:Invent next week. Below is just a sample of some announcements that make their total serverless offering even better.

Also, Forrest Brazeal noticed this in the CloudFormation schema for AppSync the other day:

Looks like we might be getting RDS HTTP Endpoints after all. #gamechanger 👍

Project Update: Lambda API v0.9 Released 🚀

This past week I finally released Lambda API v0.9. Lambda API v0.9 adds new features to give developers better control over error handling and serialization. A TypeScript declaration file has also been added along with some additional API Gateway inputs that are now available in the REQUEST object. You can contribute to the project on GitHub or install it via npm.

Serverless Star of the Week ⭐️

There is a very long list of people that are doing #ServerlessGood and contributing to the Serverless community. These people deserve recognition for their efforts. So each week, I will mention someone whose recent contribution really stood out to me. I love meeting new people, so if you know someone who deserves recognition, please let me know.

This week’s star is Paul Swail (@paulswail). Paul is a full-stack web developer/cloud architect from Northern Ireland who has a consulting company called, Winter Wind Software. He’s got a great blog about serverless and a weekly newsletter. He also built this handy Lambda Scaling Calculator. Earlier we mentioned his latest article, Schedule emails without polling a database using Step Functions, but it is worth mentioning again. It’s use case ideas like this that help developers and businesses realize the power of serverless. Keep up the great work, Paul!

Final Thoughts 🤔

That was a lot to get through, but I hope you’re encouraged (as I am) by all the progress being made with serverless. Some new patterns are starting to emerge that are expanding use case examples, plus more experiments and tales from developers using it in production are making the case for serverless even stronger. There’s always more to do, plus with re:Invent next week, we’re sure to see a number of great new features.

I’ll be at re:Invent next week, so I look forward to sharing all the things I learn! And please ping me if you want to meet up to chat about serverless or grab a drink. 😀🍻

I hope you’ve enjoyed this issue of Off-by-none. Please send me your feedback and suggestions. They are always welcome and appreciated. It helps me make this newsletter better each week. Please feel free to contact me via Twitter, LinkedIn, Facebook, or email and let me know your thoughts, criticisms, and if you’d like to contribute to Off-by-none.

Now go build some amazing serverless apps! ⚡️

Take care,
Jeremy

P.S. If you liked this newsletter, please share with your friends and coworkers. I’d really appreciate it. Thanks! 😉

🚀 Project Update:

Lambda API: v0.9 Released

v0.9 adds new features to give developers better control over error handling and serialization. A TypeScript declaration file has also been added along with some additional API Gateway inputs that are now available in the REQUEST object. Read More...

Off-by-none: Issue #10

Do you hear what I hear? 👂

Welcome to Issue #10 of Off-by-none. Thanks for joining us! 👍

Last week we talked about how serverless was starting to gain quite a bit of momentum with things like the announcement of more tools and conferences. However, my attendance at the ServerlessNYC conference was a bit of an eye-opener for me. I spoke with a lot of people about a “serverless bubble” (although echo chamber is probably a better way to describe it). I knew that the serverless community was still relatively small, but have we gotten to the point where we’re just feeding the community and not doing enough to expand it?

This week we’re going to explore the topic of serverless adoption and offer up some resources to help companies and developers get started with this amazing technology. Let’s go! 🏎

When you realize you might be in a serverless echo chamber… 🙉

I posted this tweet a couple of days after the ServerlessNYC conference and I got quite a bit of feedback. There were several people pushing back on the idea, but I think many of those who did are in the “serverless echo chamber” themselves. There was a lot of discussion here that needs to be boiled down and researched a bit more, but I think it is clear that there are a number of factors that are hampering serverless adoption. I’d love to know your thoughts on this, so please weigh-in on the Twitter thread, or send me a note.

When you’re sad that you missed ServerlessNYC… 🗽

It really was a great event. But cheer up, my friend, there’s no need for #FOMO. I’ve put together a recap of the event with all the key takeaways and lessons learned.

TLDR; Kelsey Hightower made you rethink the barriers to serverless adoption, Jason Katzer told us that unlimited still has limits, Gwen Shapira gave us new ways to think about serverless data flow, Ben Kehoe made us adopt a new serverless native mindset, Tyler Love showed us that serverless can easily handle billions of requests, Chase Douglas filled some gaps for us in the serverless development lifecycle, and an open source serverless panel told us we need to work on standardization.

When you realize that serverless is more than functions… 🎉

Epsagon recently launched their distributed tracing product for serverless applications, and decided to kick it off with a star-studded webinar (plus me 🤣). But seriously, Shannon, Nitzan and Ran are doing some great things around serverless observability. This discussion, with insights from Yan Cui and Corey Quinn, was really interesting. You can watch, listen, or read it here.

Speaking of webinars, Forrest Brazeal is hosting an AWS Online Tech Talk called Serverless Workflows for the Enterpise on November 14, 2018 at 12pm ET. This will focus on how to seamlessly build and deploy serverless applications across multiple teams in large organizations. Should be a great intro for enterprises looking to adopt serverless.

When you’re still on the fence about adopting serverless… 🎓

7 tools that ease serverless adoption outlines a few of the tools we’ve been talking about for a while. While this isn’t an exhaustive list, the article does give recommendations for the three major areas of serverless applications: development, monitoring and security. There are a lot of other tools out there (like the Serverless Framework) that can help you jump into the serverless waters, but this is a good list to get you started. ⚡️

Ben Kehoe was interviewed by the Wall Street Journal about serverless computing requiring a shift in mindset. I like the way Ben thinks about serverless, especially when he says things like, “Your developers should care about solving business problems and not solving technology problems, but we’ve been solving technology problems for so long that that’s what we tend to care about first.” (🎤 drop)

Another key component to adopting a tech like serverless, is to make sure that developers can leverage their existing skills. Programming language options are a big piece of that. Yan Cui’s new AWS Lambda Programming Language Comparison post gives us a great overview of supported languages and the pros/cons to think about when choosing a serverless runtime. ⚖️

Finally, security tends to be a sticking point (especially with SysAdmins) when it comes to adopting serverless (and the cloud in general). Luckily for us, Ory Segal at PureSec has put together some AWS Security Best Practices for AWS Lambda. Serverless gives us the ability to develop applications that are more secure and more resilient if designed properly. Also check out my Securing Serverless: A Newbie’s Guide for an overview of serverless security in general.

When you discover the meaning of Occam’s razor

“The simplest solution tends to be the correct one.” I’ve talked to a lot of people this past week about serverless adoption, and it wasn’t surprising to hear what the use case was for most early adopters. According to The New Stack, 73% of people using serverless are using it for HTTP REST APIs and web applications. This was echoed by many of the people I spoke with, and also evident from a number of candidates I recently screened that had listed “serverless” as one of their skills.

It seems that “migrating an Express.js app to Lambda with a [pick your favorite database] backend” is how most people tend to get started. Of course, migrating a monolith to a serverless function might not be the best (or most efficient) use of serverless (read Yan Cui’s: AWS Lambda — should you have few monolithic functions or many single-purposed functions?). However, it is familiar enough to lower the bar for adoption. But once we’ve taken that step, how do we start optimizing our applications?

There are a ton of options, and I know that many people (including myself) love GraphQL. AWS even has their AppSync service that can make building GraphQL endpoints much easier, but like everything managed, it comes with a cost. Plus, sometimes our APIs go beyond simple CRUD operations and we need something more expressive, powerful, and familiar. If you’re looking for an alternative, check out the open source Lambda API project.

It’s an alternative to Express.js, Koa, Restify and other Node.js web frameworks, and is built specifically for serverless applications. There are a lot of built-in features to get you up and running fast, plus support for things like middleware, logging, and much more. We’re always looking for contributors, so please give it a try and help us make adopting this type of serverless use case even easier.

When you finally have a reason to try serverless… 👩‍💻

Serverless, Inc. (creators of the fabulous Serverless Framework) are hosting the #NoServerNovember Challenge this month. Every week they will be releasing a series of serverless challenges that will help experienced users level up, and brand new users get started. If you’ve been wanting to try serverless, these challenges will give you something a little more interesting to do than following a “hello world” tutorial. Plus there’s some swag in it for the winners.

Serverless Star of the Week ⭐️

There is a very long list of people that are doing #ServerlessGood and contributing to the Serverless community. These people deserve recognition for their efforts. So each week, I will mention someone whose recent contribution really stood out to me. I love meeting new people, so if you know someone who deserves recognition, please let me know.

This week’s star is Soenke Ruempler (@s0enke). Soenke is the co-founder of , a cloud and serverless consulting firm in Hamburg, Germany. He’s also an organizer for  as well as the . He recently shared his slides from his talk at code.talks last month. Serverless vs. (Backend) Developers is a really interesting look at the state of serverless adoption and provides some great insights for serverless 🥑s to change the way they are advocating.

Final Thoughts 🤔

As much traction as serverless has gained, there is a loooooong way to go. Information Technology is a multi-trillion dollar market and public cloud computing is only a tiny fraction of that. According to Chris Munns, “MOST cloud is still VM. On prem most compute is still bare metal. Containers adoption at scale is still so so so tiny.” So where is serverless in all this?

Lots of people are experimenting with containers, but the vast majority of companies and developers are still using traditional architectures (on-prem or cloud-based VMs) to build their applications. It’s very possible that serverless could completely leapfrog containers in terms of adoption if it evolves to support both startup and enterprise use cases. Is the echo chamber that is the serverless community making the case to help expand serverless adoption, or are we simply feeding on our own hype? I’d love to know your thoughts.

I hope you enjoyed this issue of Off-by-none. Feedback and suggestions are always appreciated and help to make this newsletter better each week. Please feel free to contact me via Twitter, LinkedIn, Facebook, or email and let me know your thoughts, criticisms, and if you’d like to contribute to Off-by-none.

Now go spread the word by telling your friends about serverless. See you next week! 👋

Thanks again,
Jeremy

🚀 Project Update:

Lambda API: v0.8.1 Released

Lambda API v0.8.1 has been released to patch an issue with middleware responses and a path prefixing options bug. The release is immediately available via NPM. Read More...
🚀 Project Update:

Lambda API: v0.8 Released

Lambda v0.8 is finally here and was well worth the wait! New features include allowing middleware to accept multiple handlers, new convenience methods for cache control and signing S3 URLs, and async/await support for the main function handler. And best of all, new LOGGING and SAMPLING support for you to add more observability into your APIs and web applications. Read More...

How To: Build a Serverless API with Serverless, AWS Lambda and Lambda API

AWS Lambda and AWS API Gateway have made creating serverless APIs extremely easy. Developers can simply create Lambda functions, configure an API Gateway, and start responding to RESTful endpoint calls. While this all seems pretty straightforward on the surface, there are plenty of pitfalls that can make working with these services frustrating.

There are, for example, lots of confusing and conflicting configurations in API Gateway.  Managing deployments and resources can be tricky, especially when publishing to multiple stages (e.g. dev, staging, prod, etc.). Even structuring your application code and dependencies can be difficult to wrap your head around when working with multiple functions.

In this post I’m going to show you how to setup and deploy a serverless API using the Serverless framework and Lambda API, a lightweight web framework for your serverless applications using AWS Lambda and API Gateway. We’ll create some sample routes, handle CORS, and discuss managing authentication. Let’s get started.

Continue Reading…

🚀 Project Update:

Lambda API: v0.1.0-beta released

I made a few changes to support empty response and automatic string conversion. There were some minor documentation updates as well. Almost ready for a stable version. 🎸 Read More...
🚀 Project Update:

Lambda API: v0.1.0-alpha released

This is the first initial release of this project. It's been in testing for quite some time, so I'm hoping to get some others using it to help debug and recommend features. 🤞😀 Read More...