A Weekly Newsletter By Jeremy Daly

Off-by-none: Issue #53

September 3, 2019

Has it already been a year?

Welcome to Issue #53 of Off-by-none. I’m so happy you joined us for this special issue! 🙌

Last week, we recapped the AWS Developer Influencer Summit and learned how to simplify publishing Lambda Layers. This week, we’re obviously celebrating our one year anniversary, so we’ve got some surprises for our loyal readers. And, of course, we have plenty of serverless content from the community.

There is so much to get to this week, so let’s get this party started. 🕺💃

It’s our party and we’ll give stuff away if we want to… 🍾🎉🎁

That’s right, we’ve got swag, and we want to give it to YOU! We’ve looked at the stats, and we’ve reviewed the creepy OPEN and CLICK data that Mailchimp collects, and it seems that many of you are very loyal readers. You’ve shared the issues on social media, encouraged others to sign up, submitted articles and suggestions, and helped to make the newsletter better each and every week. Some of you have even been here since the very beginning!

So as a proper thank you for spending (so much of) your time reading and sharing this newsletter, we’ll be sending swag bags to a whole bunch of you! We’ll reach out in the next few days to get your T-shirt size (oops, did I just give that away?) as well as a mailing address for shipping. I wish we could send gifts to everyone, but we’re still just a little community newsletter. Hopefully, with your continued support, we’ll keep growing this amazing community and help give the gift of serverless to everyone! (and maybe T-shirts)

Serverless News & Product Announcements 🚀

SAM v1.14.0 Release: API Key Authorization and API Resource Policies Support
This release includes the first step in supporting ApiGateway API Keys and Usage Plans in SAM as well as the first of two proposed changes to add support for ApiGateway resource policies.

Architect 6.0: Ruby, Python, and CloudFormation
Architect 6.0 now generates CloudFormation instead of using API calls to create AWS infrastructure. There are some other cool features, too, like writing zero-config Gatsby apps with the ability to augment them with dynamic runtime-powered routes.

Open-source serverless framework wants to pave the way towards serverless 2.0
“What we are missing is support for long-lived virtual stateful functions, a way to manage distributed—durable and ephemeral—state in a scalable and available fashion, ways to co-locate processing and data, and options for choosing the right consistency model for the job.” But are we missing those things? Or are we just too comfortable with the old way of doing things?

Lambda Layer Management with the IOpipe CLI
IOpipe’s new CLI lets you manage their no code instrumentation of your Lambda functions through your command line.

Making it easier to manage custom domains
Managing your custom domains in Seed is now a lot more easier and far more reliable.

Serverless Stories 📖

Serving my serverless personal website
Jordan Matelsky migrated his personal website to S3 and found some challenges using some serverless services. It’s an interesting story, and in my experience, indicative of what many first time users of these services face. This needs to be easier.

Let’s create a serverless notification system with Amazon API Gateway
This is sort of a story and tutorial wrapped up into one. In this post, beSharp will explain how they took a serverless approach to refactoring their notification system with realtime communications using API Gateway’s WebSocket support.

Building a truly global e-commerce platform
This is an interesting article that shares how Pim Vernooij and his team built out a e-commerce platform using AWS Lambda and API Gateway.

Building a Gitlab pipeline for serverless aka containerizing the Serverless Framework for the win.
If I said it once, I’ve said it a hundred times, I’ve never seen two serverless CI/CD pipelines that look the same. Similar, sure, but there’s always something different in every one I see. Here’s how Paul Heintzelman and his team does it.

Serverless at scale
Mathias from Freetrade shares how their move to serverless a year ago has benefited them, what they’ve learned, and what challenged them along the way. Still plenty of work to be done, but these stories are always encouraging.

How we made the return process more efficient thanks to an IPA beer notification hack
This is a fascinating look at how Daniel Wellington (the watch company) used Lambda and Amazon Rekognition to speed up their warehouse return process. Interesting to see real world problems being solved by serverless.

Serverless Use Cases 🗺

Serverless Data Extraction with AWS
This is a nice use case that grabs files from an S3 trigger, processes them with Lambda and Textract, then saves the data back to an S3 bucket.

Getting Started with Serverless Angular Universal on AWS Lambda
Here is an interesting way to develop and deploy an Angular application on AWS Lambda using Angular Universal for server-side rendering.

AWS Step Functions Gains Callback Patterns to Resume Paused Workflows
Steffen Opel has a nice overview of the new Step Function Callback Patterns that AWS released earlier this year. There are a lot of useful patterns here, so it is definitely worth understanding how these work.

Building Serverless IoT Systems from Node-RED to AWS Lambda
IoT is another one of those perfect use cases for serverless. In this post, Sarjeel Yusuf gives a quick overview of how you can use AWS IoT to route incoming messages from your Node-RED MQTT broker to an AWS Lambda function.

Handling medium size files with Lambda
Great post by Gratus Devanesan that uses file streaming, Lambda, and SQS to build a serverless MapReduce architecture. As he states, this probably won’t work for really large (like 100GB) files, but would make sense for “medium size” files.

AI Automated dubbing : Building an end-to-end Youtube audio translation platform using AWS serverless architecture
How’s this for an interesting use case? Ramsri Goutham uses AWS Transcribe, Translate, and Polly to automatically translate audio in video files

AWS serverless scraping: randomising your ip.
Hmm, I’m a bit torn by this one. On the one hand, sometimes I need a good script to do some “crawling” of website data. On the other hand, there is a reason why sites block scraping bots. No matter how you feel, Pablo Voorvaart has a quick and dirty solution for you.

When you want to go deep on some serverless concepts… 🏗

How to use the power of CloudFormation custom resources for great good
Yan Cui has a great post that explains how you can include a custom resource’s Lambda function in the same CloudFormation stack that uses it.

Knative
There is (at least in my mind) a clear understanding that Kubernetes is NOT serverless. However, if a provider is managing that for you, and you’re simply running Knative on top of it, well, that’s a different story. This piece by Scott Weiss gives you some more details on Knative.

Kafka, RabbitMQ or Kinesis – Solution Comparison
This is a great post by Nitzan Shapira that scores these three message systems based on a number of factors including ease of setup and maintainability. Spoiler alert: Kinesis comes out on top, but mostly because it is so “hands off” in terms of ongoing maintenance. FYI, I’ve worked with RabbitMQ extensively (including for a current project), and I would definitely rate that lower than the other two as well.

Debugging Distributed Systems Using Logs
We get it! Epsagon is amazing! 😉 But seriously, all these observability tools that do distributed tracing are really very powerful and make debugging serverless applications much easier. If you’re not convinced, Ran Ribenzaft’s post gives you some good insight into why things can get very difficult without one of them.

Awfully Thorough Guide to Choosing the Best Serverless Solution
Ilya Kritsmer looks at serverless orchestration services from Google and IBM. According to this post, the options are really thin and aren’t ready for prime time. He doesn’t mention GCP’s AppEngine or IBM’s AppConnect, but I haven’t done enough with them to have an opinion.

If you’re just getting started with serverless… 🐣

How to configure the AWS CLI to your local environment?
The AWS CLI is a very powerful tool in your serverless development arsenal. This quick post from Suthar Prashant will get you up and running in just a few minutes.

Ask the expert: AWS serverless challenges and how to overcome them
Marko from ServerlessLife.com opines on some of the challenges of serverless and what you can do to work around them. There’s some architecture notes in here as well.

Serverless in AWS: Lambda vs. Fargate
Keilan Jackson gives a good overview of the differences between Lambda and Fargate and when you might use one over the other.

A shared-nothing approach to serverless microservice ecosystems on AWS
This is a good post by Kaveh Azad that might help you wrap your head around building loosely coupled serverless microservices. The shared nothing approach often makes people uncomfortable. One word: “denormalization”. 😉

Serverless Tutorials 🏗

Creating a serverless REST API with Node.js, AWS Lambda, API Gateway, RDS and PostgreSQL.
Giuseppe Picciano gives you a complete walk through for building a serverless API with a PostgreSQL backend. Great example of creating single purpose functions and using a database abstraction layer (though you might eventually want to roll your own). For production, use Parameter Store for your database secrets, and you’re good to go.

Express in AWS Lambda
So, I’m not a huge fan of using Express.js with Lambda, simply because there is way too much overhead involved. However, what I like about Ashiq Sultan’s post, is how he uses his lambda.js file as a port to his Express app. This allows him to run/test his app independently, but also invoke it through API Gateway. There’s some interesting hexagonal architecture thinking there.

Migrate a Simple SAM Application to the Serverless Framework
What if you start with SAM, but then decide to use the Serverless Framework instead? Fernando Corey has got you covered with this complete migration guide.

Scalable image classification with ONNX.js and AWS Lambda
Nico Axtmann gives you a quick tutorial (along with the git repo) on how to use Lambda and ONNX.js. If you want to up your serverless machine learning game, this might be a good start.

Multiple Environments with AWS Amplify
Jan Hesters teaches you how to use Amplify’s env command to implement either sandboxes or shared environments to help teams collaborate on Amplify projects.

Serverless Security 🔒

Going Serverless? Common Serverless Security Issues and Best Practices
As I was reading Aaron Chichioco’s post on serverless security, my first thought, was that it didn’t really make sense in the context of AWS. However, if you are running your own K8s cluster, or using some other provider that is rolling their own serverless stack, some of these threats could be very real.

Serverless Reads 🤓

Modern applications at AWS
Ever wonder how AWS builds their own modern applications? This post from Werner Vogels outlines the approach that AWS takes to build highly scalable services that allow for rapid development and releases.

Beyond The Browser: Getting Started With Serverless WebAssembly
The promise of WebAssembly in the browser fascinates me, but using it to power serverless functions? That’s just crazy talk. Robert Aboukhalilich has a great article that shows just how real this is.

Don’t get locked up into avoiding lock-in
Gregor Hohpe has a brilliant article that analyzes lock-in and how we can make better decisions about it using simple models. Do yourself a favor and just read this.

Serverless computing innovations will drive the next great evolution in storage
Though I find Grant Gumina’s predictions about adoption to be a bit pessimistic, I think he’s right about the technology hurdles with regards to adding state to serverless applications. However, this might just be the point. There are benefits to statelessness, so perhaps rethinking design patterns would eliminate the need to fill the deficiencies he points out? 🤔

Why doesn’t anyone weep for Docker?
So, this isn’t really about serverless, but I found the article interesting. Matt Asay does a great job of pointing out the challenges that all open source technology companies face. How do you monetize your work while still embracing the community? I’d venture a guess that “building your own cloud” is likely not the best approach.

Self-Serverless: Why Run Knative Functions on Your Kubernetes Cluster?
Two Knative articles in one newsletter!?! I know what you’re thinking, but if you’ve been paying attention, you’ve noticed that LOTS of enterprises are adopting Kubernetes. Layers and layers of abstraction seem counterproductive to me. But K8s may be the hybrid cars of cloud technology. Sure it bridges the gap for awhile and makes you feel good about yourself, but ultimately you’ll realize that it was just a ploy by Big Oil to keep us hooked on fossil fuels, and now we have all these dead batteries lying around. I think I got off topic there, but maybe you get my point.

Choosing a cloud DBMS: architectures and tradeoffs
Adrian Colyer recaps “Choosing a cloud DBMS: architectures and tradeoffs Tan et al., VLDB’19” in The Morning Paper. His key takeaways note that the database is less important than the storage format. I’ve been playing around with Athena lately, and I agree that it wins hands down.

How Serverless Computing Is Reshaping the Business World
If you’re trying to convince your boss to let your team go serverless, send them this article from BOSS Magazine.

Migrating legacy apps to serverless platforms doesn’t have to be painful
Not an entirely accurate article as most limits can be raised and there are other ways to share data across functions. But the overall sentiment seems right. Lots of “peripheral” use cases for serverless that can compliment an existing software stack.

When you need something to listen to on your commute… 🎧

Serverless Chats – Episode #12: Reducing MTTR in Serverless Environments with Emrah Şamdan
In this episode, I chat with Emrah Şamdan about discovering problems before they cause issues, what constitutes signals of failure in serverless applications, and how we can be better prepared to respond to incidents.

When you’re curious what the AWS devs have been working on… 👷‍♀️

Now forward traffic between a local and remote port using Session Manager
I really love the work being done with this. You still need to have an EC2 instance running behind the scenes, but using Session Manager to control access, PLUS being able to do port forwarding now, is so much easier than VPNs and previous workarounds. More info here.

AWS X-Ray Now Supports Amazon SQS
This is another great feature that should help you get more observability out of the box from AWS. Tracing headers are sent automatically with the AWS SDK if your functions are X-Ray tracing enabled. Looks like there is still some work required to recover the tracing context when receiving messages, but it seems fairly trivial.

Take the AWS Certified Cloud Practitioner Exam in Your Home or Office 24/7
“You’ll need a reliable internet connection, a webcam, and a quiet, private place to test.” I haven’t had a “quiet, private place” since my first kid was born 13 years ago. But for those of you that can find some peace and quiet, this is probably easier (and less stressful) than the alternative.

Lower Threshold for AWS WAF Rate-based Rules
According to AWS, this lets you protect against low-volume brute force logins, scrapers and more. I also like the use case for rate limiting per-user API calls. Throw this in front of an ALB and now you have automatic quota management without API Gateway.

Serverless Tools 🛠

A SAR app to propagate CloudFormation tags to unsupported resources
CloudFormation tags don’t automatically propagate to some resource types, including CloudWatch log groups. This is especially frustrating if you want to include them in your cost monitoring. Yan Cui and the team at Lumigo have you covered with this new SAR app.

s3redirect – A #Serverless and #Databaseless URL Shortner
Ric Harvey created a full fledge serverless and databaseless application that allows users to create a tiny URL by creating “Web Site Redirects” using Amazon S3, Lambda and Cloudfront.

Thoughts from Twitter 🐦

TIL the first automobiles were described as “horseless”, like the first cellphones were called “wireless phones”. Good reminder that terms describing transformational transitions often describe the absence of something, till the durable description inevitably emerges. #serverless ~Ajay Nair
Interesting way to think about the term “serverless” from Ajay. It may not be the best name, and people love to argue semantics, but what it describes is a way of building software that has completely changed the way I approach solving problems. So, yeah, pretty transformational if you ask me.

Following the news around a certain large tech company’s conference this week and their numerous k8s announcements furthers my view that #serverless is the future of things. (a thread) ~ Chris Munns
“k8s is the last hill for traditional Ops/IT to die on. Above that on the stack is basically all things serverless.” Preach.

I’m amazed what people will put up with to be 100% X (where X might be #serverless or $onlyOneLanguage, merely as examples but widely applicable). And then I remember how easy it is to think everything neatly fits in this one perfect box. ~ Susan Potter
Valid point. Most things don’t fit neatly into a box, and serverless is no exception. There are plenty of use cases that containers are better suited for, but imagine if one day, everything could be serverless?

Upcoming Serverless Events 🗓

There are a lot of upcoming serverless events, webinars, livestreams, and more. If you have an event you’d like me to mention, please email me.

September 4, 2019 – Serverless Done Right (webinar)

September 4-6, 2019 – Production-ready Serverless Workshop – Full Stack Fest

September 19, 2019 – IOpipe and Mapbox Webinar: Visualizing critical, location-based metrics on serverless

September 20, 2019 – Serverless Transformation: An Online Panel Discussion

October 7-9, 2019 – Serverlessconf 2019 in New York City

October 14-16, 2019 – Serverless Architecture Conference Berlin

October 24, 2019 –  ServerlessDays Stockholm

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 YOU. I don’t want to get all sappy here, but I cannot express how important you all are to the community. You are the bloggers that write amazing serverless content. You are the open-source creators and contributors that build tools and frameworks to make serverless better every day. You are the companies and developers that are working to bring new products into the serverless ecosystem. You are the people that fuel serverless innovation with your ideas, your curiosity, and your feedback. Without all of you, there would be no serverless community, and no place for me to share my ideas. And for that, I thank all of you. 🙌

Final Thoughts 🤔

So much has happened with serverless since I started this newsletter last September. It’s mind-boggling just how far we’ve come in only a year. And I’m more excited about the future of serverless now than I’ve ever been. This last year has also given me the opportunity to meet so many amazing people from the serverless community. It has been an honor, and a gift, and I am eternally grateful for all the support I’ve gotten from all of you. I’m looking forward to another year of Off-by-none, and I hope you are too.

I hope you enjoyed this issue of Off-by-none. Please send me your feedback and suggestions as they help to make this newsletter better each week. You can reach me via Twitter, LinkedIn, Facebook, or email and let me know your thoughts, criticisms, or (perhaps) even how you’d like to contribute to Off-by-none.

If you like this newsletter, and think others would too, please do me the honor of sharing it with friends and coworkers who are interested in serverless.

Thanks again,
Jeremy

Share this newsletter with your friends and coworkers!


Off-by-none is a weekly email newsletter that focuses on the technical details of building applications and products in the cloud using serverless technology. Together we can become better developers and product people by making fewer mistakes as we learn from each other. Off-by-none is the idea that we can become exceptional at what we do, if we are willing to put in the work. Join me on this journey as we help the community work to develop best practices, share our ideas, and learn to build better cloud-based software.

Sign up below and get Off-by-none delivered to your inbox every Tuesday.

I respect your privacy and I will NEVER sell, rent or share your email address.