All Posts

Featured

Takeaways from Programming AWS Lambda by Mike Roberts and John Chapin

Recently, Symphonia co-founders Mike Roberts and John Chapin wrote a book called Programming AWS Lambda: Build and Deploy Serverless Applications with Java. I personally abandoned Java long ago, but I knew full well that anything written by Mike and John was sure to be great. So despite the title (and my past war stories of working with Java), I picked up the book and gave it a read. I discovered that it’s not really a book about Java, but a book about building serverless applications with the examples in Java. Sure, there are a few very Java specific things (which every Java developer probably needs to read), but overall, this book offers some great insight into serverless from two experts in the field.

I had the chance to catch up with Mike on a recent episode of Serverless Chats. We discussed the book, how John and Mike got started with serverless (by building Java Lambda functions, of course), and what are some of the best practices people need to think about when building serverless applications. It was a great conversation (which you can watch/listen to here), but it was also jam packed with information, so I thought I’d highlight some of the important takeaways.

Continue Reading…

Featured

Making the Case for Serverless Use Cases

For quite some time, there was a running joke that “serverless” was just for converting images to thumbnails. That’s still a great use case for serverless, of course, but since AWS released Lambda in 2014, serverless has definitely come a long way. Even still, newcomers to the space often don’t realize just how many use cases there are for serverless. I spoke with Gareth McCumskey, a Solutions Architect at Serverless Inc, on a recent two part episode (part 1 and part 2) of Serverless Chats, and we discussed nine very applicable use cases that I thought I’d share with you here.

Continue Reading…

Featured

12 Important Lessons from The DynamoDB Book

Fellow serverless advocate, and AWS Data Hero, Alex DeBrie, recently released The DynamoDB Book, which ventures way beyond the basics of DynamoDB, but still offers an approachable and useful resource for developers of any experience level. I had the opportunity to read the book and then speak with Alex about it on Serverless Chats. We discussed several really important lessons from the book that every DynamoDB practitioner needs to know. Here are twelve of my favorites, in no particular order.

Continue Reading…

Featured

Takeaways from the State of Serverless Report

On a recent episode of Serverless Chats, I spoke with Stephen Pinkerton and Darcy Rayner of Datadog to dig into The State of Serverless report, which was released at the end of February 2020. After frequently fielding customer questions about the topic, Datadog looked at its data and customer use cases, and examined how they were using serverless. Datadog’s report is a way to break it all down, but it’s also an opportunity for its customers (and serverless users alike) to see how other people are using serverless in a data-driven way. I discussed methodology, findings, and key takeaways with Stephen and Darcy, and thought it’d be worthwhile to consolidate and share that insight.

Continue Reading…

🚀 Project Update:

Serverless MySQL: v1.5.4 released

This update includes a minor bug fix that automatically handles reconnections when receiving the occasional EPIPE error. Special thanks to @kernwig for the PR. Read More...
Featured

Verifying self-signed JSON Web Tokens (JWTs) with AWS HTTP APIs

“Trust no one.” Or at least that’s what Fox Mulder told me back in the 90s.

With the recent GA of HTTP APIs for API Gateway, I decided to start evaluating my existing API Gateway REST APIs to see if I could migrate them over to take advantage of the decreased latency and reduced cost of the new HTTP APIs. Several of them were disqualified because they utilize service integrations (a feature that AWS is working to add), but for one of my largest applications, the lack of Custom Authorizers is what brought me to a dead end. Or so I initially thought. 😉

After a bit of research (okay, it was actually several hours because I decided to read through a bunch of specs and blog posts and then run a ton of experiments), it turns out that hosting your own OIDC Conformant “server” to verify self-signed JSON Web Tokens with HTTP APIs is actually quite simple. So as long as you can use JWT for your bearer tokens, you can utilize your existing authentication service (and probably dramatically reduce your latency and cost).

In this post, I’ll show you everything you need to know to set this up yourself. We’ll generate certificates, create our OIDC discovery service, set up our HTTP API authorizers, generate and sign our JWTs, and protect routes with scopes.

Continue Reading…

🚀 Project Update:

Lambda API: v0.10.5 Released

Lambda API v0.10.5 has been released to fix a few minor bugs around ALB query string decoding and TypeScript definitions. Plus a new feature that allows you to disable error logging. Read More...
🚀 Project Update:

Data API Client: v1.0.1 Released

There was an issue with batch records via standard queries versus those wrapped in transactions. v1.0.1 includes a patch that checks the arguments and conditionally flattens the array for proper handling in each context. Read More...
Featured

Takeaways from AWS re:Invent 2019’s Amazon DynamoDB Deep Dive: Advanced Design Patterns (DAT403)

AWS re:Invent 2019 is a wrap, but now the real work begins! There are hundreds of session videos now available on YouTube. So when you have a few days (or weeks) of downtime, you can dig in to these amazing talks and learn about whatever AWS topics you fancy.

I was only able to attend a few talks this year, but one that I knew I couldn’t miss in person, was Rick Houlihan’s DAT403: Amazon DynamoDB deep dive: Advanced design patterns. At the last two re:Invents, he gave similar talks that explored how to use single-table designs in DynamoDB… and they blew my mind! 🤯 These videos were so mind-bending, that they inspired me to immerse myself in NoSQL design and write my How to switch from RDBMS to DynamoDB in 20 easy steps post. I was hoping to have a similar experience with this year’s edition, and I WAS NOT DISAPPOINTED.

As expected, it was a 60 minute firehose of #NoSQL knowledge bombs. There was A LOT to take away from this, so after the session, I wrote a Twitter thread that included some really interesting lessons that stuck out to me. The video has been posted, so definitely watch it (maybe like 10 times 🤷‍♂️), and use it to get started (or continue on) your DynamoDB journey.

Continue Reading…

Featured

Serverless Microservice Patterns for AWS

I’m a huge fan of building microservices with serverless systems. Serverless gives us the power to focus on just the code and our data without worrying about the maintenance and configuration of the underlying compute resources. Cloud providers (like AWS), also give us a huge number of managed services that we can stitch together to create incredibly powerful, and massively scalable serverless microservices.

I’ve read a lot of posts that mention serverless microservices, but they often don’t go into much detail. I feel like that can leave people confused and make it harder for them to implement their own solutions. Since I work with serverless microservices all the time, I figured I’d compile a list of design patterns and how to implement them in AWS. I came up with 19 of them, though I’m sure there are plenty more.

In this post we’ll look at all 19 in detail so that you can use them as templates to start designing your own serverless microservices.

Audio Version:

Continue Reading…

Off-by-none: Issue #91

Thinking about serverless complexity… 🤔

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

Last week, we looked at a “typical” serverless architecture.  This week, we see how that “typical” serverless architecture sparked some strong opinions on both sides of the serverless complexity debate. Plus, we’ve got plenty of awesome posts from the serverless community.

Serverless News & Announcements 📣

Webinar: How to Use Knative to Build Event-Driven Application Flows
Join Sebastien Goasguen, TriggerMesh co-founder, creator of Kubeless, and author of the Kubernetes Cookbook for a live webinar on June 11. Sebastien will demo how to use the Knative API and TriggerMesh to simplify building event-driven applications with any on-premises and cloud service. Learn more and register here. Sponsored

Microsoft Introduces App Service Static Web Apps in Preview at Build 2020
There were a lot of announcements at Microsoft Build last week, but this one is really interesting. The future of serverless will rely heavily on edge-optimized static assets, and Microsoft is building tools to take advantage of this.

v3.2.0 of dynalite released to support empty string and binary values
I’ve been using dynalite over DynamoDB local lately for simulating integration tests, and I’m a big fan. And now it supports the new empty value feature.

Microsoft Reimagines Azure
Here’s another wrap up of Microsoft Build. There are some really interesting things happening with serverless over there, and the fact that they are adapting quickly to this new wave of modern application development is awesome. Also, Cosmos DB is getting a serverless makeover.

Announcing Epsagon’s Official Integration with PagerDuty
I love seeing companies partner to create a better solution for customers. Epsagon monitoring coupled with PagerDuty alerts, does just that.

Aqua Security Raises $30 Million in Series D Funding to Fuel the Expansion of Its Cloud Native Security Platform
More investment into the cloud native and serverless security space. According to the press release, Aqua has more than doubled revenue and headcount in the last 12 months and have expanding to more than 400 customers.

Serverless Stories 📖

3 Things I Wish I Knew About AWS Lambda Functions Early On
Andrew Titenko points out a few gotchas that he found when working with Lambda functions. You do need to be careful of global variables, but they also come in really, really handy when used correctly.

Xinja almost abandoned serverless backend built for Apple Pay
Great story about Xinja being able to launch Apple Pay capabilities in just six weeks using serverless and why it made achieving PCI DSS compliance even easier. There’s also a great example of serverless components getting better without your team needing to do anything.

How AWS WAF saved us
Not specifically about serverless, but don’t forget, you can put AWS WAF in front of your API Gateways too. Riad Rifai tells the story of how AWS WAF helped mitigate a front-end bug, but of course, it’s applicable to many more situations.

A war story about COVID, cloud, and cost
Forrest Brazeal says that cloud cost-cutting stories are boring, yet somehow he’s made this one totally worth the read.

Serverless Use Cases 🗺

Expiration With DynamoDB TTL
Here’s a simple but powerful use case from Gavin Cornwell, using DynamoDB TTLs to trigger trial expirations on EC2 instances. The TTL feature isn’t as accurate as I’d like, but it works great for use cases like this.

Config Service using Google Sheet
While there are plenty of other ways to store configuration data, you have to appreciate the simplicity of just using a Google Sheet.

Serverless Concepts 🏗

Let Me Help You Build Serverless Well-Architected Systems With Proven Patterns
The cdkpatterns.com site by Matt Coulter is an awesome resource for the serverless community. And now he’s added a feature that lets you find a pattern by a AWS Well-Architected Pillar! Great stuff.

Roadmap to Backend Developer on Serverless Infrastructures
Another helpful post by Renato Byrro that should get you asking the right questions as you start your journey as a serverless developer.

Amplify, Amplify, and Amplify
Are you confused by all the things that have the name “Amplify” associated with them? You’re not alone, and Rowan Udell is here to help explain. Amplify (in all its parts) is extremely powerful, so long as you understand which part you’re actually using. 😉

3 Valuable Lessons Learned About AWS Lambda Destinations
Andrew Titenko provides a few quick tips for using Lambda Destinations. Also, +100 for adding asynchronous invocations to the AWS Lambda console “TEST” option.

Developing on AWS Lambda (Part 3): Some tips you can use!
Here are some more great AWS Lambda tips from George Mao. Lots of really useful information in here.

AWS Lambda Limits to Keep in Mind When Developing a Serverless Application
Emrah Samdan gives you some quick tips and tricks to avoid hitting different types of Lambda limits in your serverless apps.

Serverless Tutorials 👷‍♀️

AWS CDK for Beginners
Rani Lian has a great tutorial that gives you some background on the why of AWS CDK, and then walks you through launching a quick “hello world” project to show you the how.

How to Create and Use Layer for Python AWS Lambda Function
Simple and straightforward Lambda Layer tutorial from Ashutosh Karna using Python.

Reduce Lambda invocations and code boilerplate by adding a JSON Schema Validator to your API Gateway
Davide de Paolis has a great tutorial that’ll show you how to mitigate Lambda invocations by using schema validation on API Gateway. It might add a bit more complexity, but using this for mature routes can be very cost effective.

Cooking Serverless with AWS Amplify
If you want to get started with AWS Amplify really quickly, this simple tutorial from Shehan Wisumperuma will get your first project up and running in no time.

Building scalable serverless applications with Amazon S3 and AWS Lambda
Another incredibly helpful post from James Beswick that shows you how to build a serverless system that can quickly and reliably process S3 data with Lambda functions.

Serverless Security 🔒

DevSecOps report: Cloud IT complexity creates ‘immutable’ security issues
Tying the idea of immutable infrastructures to security is an interesting take. This also reinforces the notion that cloud deployments create a lot of complexity that needs to be managed and audited by someone, especially around security.

Serverless Reads 🤓

Why I’m excited about serverless as a frontend engineer
Tomasz Łakomy is definitely on to something. The idea of a full stack serverless developer is something we’re already starting to see, both through front-enders implementing serverless backends, to some seasoned backend devs moving down the stack. If you are a front-end engineer, start taking a look at things like Amplify, Vercel, and other platforms enabling this capability.

A day in the life of a serverless developer on AWS
Ryan Jones lays out some of the common tasks performed regularly by a serverless developer on AWS. I find that my work varies day to day, sometimes spending a day or two on IaC and experiments, then buckling down for a few days to work on implementation details, tests, and documentation. One thing is for sure, I spend a lot less time writing code.

Cloud Adoption in 2020
Interesting data provided here by O’Reilly, especially the fact that “serverless” adoption is “stagnant” according to their numbers. In terms of complexity, the article poses this question: “Is it possible that the complexity of microservice architecture, serverless computing, service mesh architecture, and other next-generation patterns is contributing to (if not driving) interest in SRE?” Good question.

AWS Kendra is the Google to all of your organization’s knowledge
I really love the idea of Kendra, and the power and efficiency that it could bring to a lot of businesses. Unfortunately, the $5,000/mth price tag probably prices out many of the companies that desperately need a technology like this. I’m sure it’s expensive to run, but it would be great to see this cost come down to make it more accessible.

Podcasts, Videos, and Presentations…

Serverless Chats – Episode #50: Static First Using Serverless Front-ends with Guillermo Rauch
In this episode, I chat with Guillermo Rauch about the difference between front-end and backend serverless, how we should think about and build for scale, why latency down to the first contentful paint is so important, and so much more. Watch on YouTube!

Freedom! Bring custom binaries and runtimes to serverless using Cloud Run — Serverless Toolbox
Got to love the Bret McGown/Martin Omander duo. On this episode of Serverless Toolbox, they take you through importing custom binaries and runtimes into your Cloud Run containers.

TriggerMesh’s new EveryBridge: Event-driven apps are the endgame of serverless
Stu Miniman interviewed Mark Hinkle and Sebastien Goasguen from TriggerMesh to discuss their new EveryBridge product. I think most of us cloud natives don’t worry too much about legacy on-prem systems, but the fact that this aims to solve a missing piece for the vast majority of companies looking to bridge that gap, is pretty cool.

Patterns and practices for building resilient Serverless applications
Yan Cui gave a marathon session at the AWS User Group Delhi the other day, and it is chockfull of some amazing serverless know-how. It’s almost two hours long, but is worth the time. The slides are available too.

New from AWS 🆕

Amazon DynamoDB local adds support for empty values for non-key String and Binary attributes and 25-item transactions
Amazon DynamoDB local has been updated to support the new empty values feature that was just released. Make sure to update to the latest version so you have parity with the actual cloud version.

AWS Solutions: Serverless Bot Framework adds a remastered user interface and uses AWS Amplify
The solution now makes use of User Pools to allow users to securely sign in to the chatbot with Amazon Cognito. The web interface is re-implemented using ReactJS and AWS Amplify and uses Amazon CloudFront to securely deliver application web assets from Amazon S3 to the user.

Amazon Transcribe now supports vocabulary filtering for real-time transcription
This is a cool feature added to Amazon Transcribe. Being able to filter out words as well as mask or tag them during real-time transcription can be quite handy. I haven’t check in on the transcription quality lately, but all these new features might make me take another look.

AWS Global Accelerator is Now Available in Two Additional Regions
I’m sure that the AWS Global Accelerator could get a bit expensive, but the latency compared to standard routing is incredible. If you have to home run some of your data calls, this is definitely something you should look at.

Serverless Tools 🛠

dynamodb-size
Here’s an interesting tool from Chris Armstrong that will calculate the size of your DynamoDB payload. I can see this being useful in testing applications to help calculate costs.

I Built a Simple Serverless Storage Solution
Sometimes you need to scratch or own itch, and Eldad Bercovici did just that with his Cloud Local Storage project. There are lots of ways to implement something like this on your own (and likely a bunch of security requirements to think about as well), but you’ve got to love the level of abstraction.

Thoughts from Twitter 🐦

“Can someone explain Serverless to me like I’m 5?” ~ James Tucker
This question by James Tucker triggered a series of hilarious explanations. Some of them are dead on.

“Crying at this typical Serverless infrastructure. wtf happened to the “simple” functions-as-a-service idea?” ~ Paul Biggar
Well, that escalated quickly! This post by Paul Biggar sparked a series of reactions about whether or not serverless is more complex than some other traditional architectures. Much of the complexity is abstracted away for you through reusable components, though I still believe a new type of configuration complexity now exists. But it’s still 1000% easier than the old way.

Serverless Jobs 👩‍💻 Sponsored

Serverless Engineer – stedi.com
At Stedi, we’re working in one of the biggest markets on the planet – EDI, the technological backbone of the physical product economy. We’re building a next-generation platform: a ubiquitous commercial trading network to automate the trillions of dollars in B2B transactions exchanged by nearly every company on Earth. If you’re interested in what we’re building and how we’re building it, we’d love to hear from you.

Have a job listing you’d like to share? Please contact me for more information. 

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.

May 27, 2020 – Serverless London May Meetup (Virtual)

May 28, 2020 – Serverless-First Function by AWS

May 28, 2020 – Modernizing applications with serverless: Scale higher, ship faster, and reduce TCO up to 90%

June 4, 2020 – ServerlessDays Milan (Virtual)

June 9, 2020 – The State of Serverless in 2020

June 10 & 11, 2020 – AWS Virtual Amplify Days

June 26, 2020 – AWS Serverless Community Day

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 Charity Majors (@mipsytipsy). Charity is the co-founder of Honeycomb, a tool designed for engineers to debug platforms, microservices, and serverless apps, enabling collaborative problem solving. Prior to Honeycomb, Charity was a former systems engineer and manager at Facebook, Parse, and Linden Lab, and the co-author of Database Reliability Engineering. She’s spoken at several ServerlessDays conferences, and offers advice and writes about serverless (and the Tiger King 🐅) on her personal website. Thank you, Charity, for making the serverless world better and brighter with your contributions! 🙌

Final Thoughts 🤔

I find this whole serverless complexity debate to be quite fascinating. The point of serverless has always been (at least in my opinion) to reduce undifferentiated heavy-lifting, freeing up engineers to work on things unique to your business that add customer value. This certainly reduces some of the complexity, but also adds new complexity as we create more complex systems. Serverless is certainly easier, but that doesn’t mean it’s easy.

If any of you missed the AWS Serverless-First Function last week, you should definitely check out the recap and sign up for Day 2 on Thursday. I’ve watched a lot of presentations (especially virtual ones) and I really enjoyed the mix of content from the speakers and the witty banter between hosts Eric Johnson and Chris Munns. And… getting a shout out to my patterns post from Adrian Cockcroft was pretty darn cool as well.

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.

Until next week,
Jeremy

P.S. 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.

Off-by-none: Issue #90

Is Serverless a Silver Bullet? 🐺

Welcome to Issue #90 of Off-by-none. Thanks for stopping by!

Last week, we took a crash course on monitoring serverless apps, got a lesson in response times from the cloud architect, and learned a bit about serverless developer culture. This week, we see what a typical serverless architecture looks like, learn how to #SingleTable with AppSync, and take a quick trip to Deno Land.  Plus, we’ve got plenty of amazing posts from the serverless community.

Serverless News & Announcements 📣

TriggerMesh Cloud Native Integration Platform
TriggerMesh provides a platform to trigger functions on any cloud or on-premises from virtually any source that can provide a message, including legacy applications and enterprise service buses. Use one platform for AWS Lambda, Google Cloud Functions, Azure Functions, Knative, or Kubernetes workloads. Learn more and try for free. Sponsored

Lambda Store Developer API
This is a really great feature that allows you to provision Lambda Store via an API. They are working on Infrastructure-as-Code support, which could be really handy as well.

Serverless Stories 📖

Is Serverless with Lambda, the “silver bullet”?
Arnaud Charlier tells the story of his company’s serverless journey and recounts the successes and failures they had along the way. Overall, it seems the experience was a relatively good one, despite that recursive Lambda function mistake 😬. I think most of us can relate to that.

Serverless Content Management System for Websites using Vue.js and AWS
While building a content management system can be a daunting task, Dan Bartlett decided to do it anyway. The end result is a full-blown serverless CMS that’s available to you on GitHub.

Serverless Use Cases 🗺

Create Kinesis Firehose Data Stream from IoT Core to S3 using Serverless framework
I don’t do anything with IoT, but these use cases are everywhere nowadays. I’m a big fan of using Kinesis Data Firehose for capturing stream data like this and stuffing it into S3, so if your source is an IoT device, Toru Eguchi has got you covered.

Automating Cross-Account Role creation to access users’ account
Here’s a great use case by Yossi Ittach, generating AWS roles and then persisting the information back to the partner account. More and more companies are building solutions that need some level of access to your AWS account, so automating this process with Lambda and SNS is pretty slick.

A Basic Solution to Shutting Down AWS Infrastructure on a Schedule
This is one of my favorite serverless use cases, and Joonas Laitio gives you a sample script to easily schedule shutdowns and startups of ECS services, Auto Scaling Groups and RDS clusters.

Developing a Serverless solution to detect people without masks
Here’s another interesting serverless use case, detecting those folks not wearing masks in public places. Ritesh Modi has a very in depth post about a system he creating using Azure to accomplish this.

Why we don’t use Lambda for serverless machine learning
This should fall under the “Not Serverless Use Cases” section. Sure, some ML workloads can run on Lambda, but I tend to agree with Caleb Kaiser on this one: “Lambda is fantastic – just not for ML.”

Serverless Concepts 🏗

Best practices for organizing larger serverless applications
Great piece by James Beswick that lays out some simple rules for organizing your serverless applications. I’m not a fan of the repo-per-function approach, and there are plenty mono versus multi-repo arguments to be made, but overall, this is some excellent advice for teams building with serverless, especially those that want flexibility as they grow.

What a typical 100% Serverless Architecture looks like in AWS!
Love this article by Xavier Lefèvre that shows a full-blown serverless architecture on AWS and explains how each section works. The more patterns like this are visible, the easier it is for others to understand how best to architect their systems.

Infrastructure-as-Code is the linchpin practice for successful serverless teams
Paul Swail highlights the benefits and drawbacks of Infrastructure-as-Code, but ultimately points out its necessity for building robust and repeatable deployments in the cloud. Unfortunately, I think point and click is still a very popular option. 🤦‍♂️

Testing in Deno: the basics
Brian Leroux gives you a quick lesson on how to build tests in Deno, which just so happens to support testing as a first class citizen.

Serverless Tutorials 👷‍♀️

How to build an AppSync API using a single table DynamoDB design
Awesome post by Rich Buggy that shows you how to build a generic single table DynamoDB solution for AWS AppSync. I think you all know by now that I’m on #TeamSingleTable, so seeing the possibilities with AppSync is very exciting.

Getting started with serverless on AWS
Emily Shea has compiled a list of resources and tutorials for common serverless use cases on AWS. With information overload everywhere, it’s very helpful to have guides like this that establish a learning path.

Deploying a serverless application using AWS CDK
For all you CDK fans out there, here is a complete tutorial by Georges Leschener and Luis Lopez Soria that shows you how to deploy a full serverless application including the provisioning of an Amazon Aurora Serverless cluster.

Ensuring Resolvers Aren’t Rejected
This is pretty cool. Rick Foxcroft shows you how to test your VTL templates so that you can speed up your feedback loop and have some more confidence when deploying to AppSync.

Deno on Cloud Run
Deno is all the rage (and probably for good reason), so being able to start using it (and run TypeScript directly) on Cloud Run, sounds like a lot of fun. Grant Timmerman gives you a quick and easy set up.

Chaos Engineering with Serverless
Whether you use Thundra to do this or not, injecting latency and other types of failures into your applications to test their resiliency is becoming an incredibly important tool. Emrah Samdan gives you some tips and shows you how to do it.

Serverless Reads 🤓

Why I think GCP is better than AWS
This isn’t specifically about serverless offerings, but I think the author makes a number of valid points in here. There is a clear difference between offering primitives versus more abstracted solutions. I’m not sure either one is better than the other, and may just be a matter of personal preference. Either way, this is a very thoughtful article and worth the read.

7 Major Trends for Cloud Native in 2020: Serverless
I somehow missed this post from a few months ago, but it recently caught my attention. I think there are a lot of really excellent (although hopeful) predictions in here. I’m not sold on Java or Knative, but WASM? Yes, please!

The case for serverless and hiring serverless consultants
Ryan Jones makes a pitch for hiring consultants to speed up your serverless adoption, but at the same time, makes a pretty good case for building with serverless regardless of your company size. Serverless is getting more and more complex every day, so having people that know their way around is usually not a bad thing.

How AWS Lambda team made my two years old talk completely irrelevant
One of the greatest benefits of using serverless (and many cloud services in general) is that it just gets better without you needing to do anything. Serhat Can explains how much Lambda has changed over the last two years and how all of the major roadblocks he faced back then have all been addressed.

When you’re sick of Netflix… 🍿

Serverless Chats – Episode #49: Things I Wish I Knew Before Migrating to the Cloud with Jared Short
In this episode, I chat with Jared Short about why you shouldn’t try to master every cloud service, what’s wrong with the “lift and shift” approach, why thinking about transparency right from the beginning will result in better applications, and a lot more. Watch on YoutTube!

Upload Images to S3 and Store Metadata with GraphQL to DynamoDB (using AWS Amplify and AppSync)
In this video, Marcia Villalba shows you how to upload files to S3 with AWS AppSync in an Amplify project.

New from AWS 🆕

Amazon DynamoDB now supports empty values for non-key String and Binary attributes in DynamoDB tables
This is a new feature that some should find quite handy. I prefer to remove empty attributes, but I can see there being use cases that require empty lists or maps. Also, if you don’t feel like checking every field for empty values in your code, then this might alleviate some of those frustrations.

Announcing major enhancements to Amazon Macie, an 80%+ price reduction, and global region expansion
When I first looked at Amazon Macie, I was immediately turned off by the price (because it was expensive). This massive overhaul and 80%+ price reduction might finally make it more accessible to small and medium sized companies. Read more here.

Serverless Tools 🛠

Cleaner async JavaScript code without the try/catch mess.
I thought this was an interesting tool by David Wells that wraps your awaits for better error handling. If you’re a JS developer, you might want to take a look at his “safeAwait” pattern.

Thoughts from Twitter 🐦

“What tool would you recommend to a product company that wants to start building serverless services on AWS? Any alternatives to AWS SAM or Serverless Framework? Taking into account the learning curve and the number of online resources.” ~ Maciej Winnicki
Good conversation around this Twitter post by Maciej. It’s hard to remember what it was like when I first started exploring serverless (although I do remember there were a lot fewer options), so for newcomers to the space, seeking an answer to this question can be overwhelming.

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.

April 2-May 31, 2020 – Sessions with SAM: Live Twitch sessions by Eric Johnson (every Thursday at 10AM PDT)

May 20, 2020 – Designing for DynamoDB Success (webinar)

May 21 & 28, 2020 – Serverless-First Function by AWS

May 27, 2020 – Serverless London May Meetup (Virtual)

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 Patrick Steger (@StegerPatrick). Patrick is an AWS Certified Solutions Architect who also ran his own application development company, IDMA Solutions. Patrick is a co-organizer for Triangle Serverless, based out of Raleigh, NC, and participates in other serverless meet-ups in the area. You can find him on Twitter regularly commenting about the latest in his serverless journey. Thank you, Patrick, for being a part of the community! 🙌

Final Thoughts 🤔

I hope you’re all staying safe and healthy as things are starting to reopen again. I would personally suggest staying away from Jeep Weekend, but, hey, to each their own.

I’ve been using this extra time to move some projects forward, which I hope to share soon. Also, my daughters were at it again and came up with an idea for a Serverless Chats promo video. Like a good dad, I helped them execute.

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.

Cheers,
Jeremy

P.S. 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.

Off-by-none: Issue #89

A Serverless Monitoring Guide… 👀

Welcome to Issue #89 of Off-by-none. Thanks for being here!

Last week, we explored the super powers of API Gateway, discussed the proper microservice size, and let Forrest Brazeal serenade us. This week, we look at a crash course on monitoring serverless apps, get a lesson in response times from the cloud architect of all cloud architects, and learn about serverless developer culture. Plus, we have tons of great content from the serverless community.

Serverless News & Announcements 📣

Analyze and debug Lambda performance in Datadog
Collect custom metrics from serverless functions and correlate them with cold starts to identify patterns of customer-facing latency. Start optimizing your serverless applications with a free Datadog trial today. Sponsored

Boomi launches EventBridge iPaaS platform connector
The movement in this space is fascinating, and this integration with EventBridge is huge. Data exchange via EDA and EDI is rapidly evolving, so it’ll be interesting to see if this motivates other providers to create EventBridge integrations as well.

Converge Technology Solutions Corp. Forms Preferred Partnership with Trek10
Congratulations to Trek10 for their continued growth and success. It’s good to have smart professionals that can help teams implement serverless quickly and correctly.

Serverless Stories 📖

How we built a multiplayer card game in 1 week
I love this story, because it perfectly captures the promise of serverless. Thomas Recouvreux and a friend built a real-time, multi-player online game in 5 days, and it’s 100% serverless. Sure it’s not a full-blown enterprise application, but for startups and PoCs, is there a better way?

Dashbird’s Lessons Learned from Launching a SaaS Application
I always enjoy hearing directly from the people in the trenches, an although this article from Dashbird isn’t specifically about serverless, the experiences and insights from their developers as they pushed to launch their new platform is worth a quick read.

An AWS Lambda Serverless Journey – Part 1 and Part 2
Mitul Patel has a series on building a serverless application using Java. There’s a lot of information in these first two parts, but I liked these articles because they not only give you the technical details, but also explain the reasoning behind the choices.

Serverless Use Cases 🗺

How to write a TLDR chat bot
Loved this post by Chris Ismael! He shows you a hybrid approach to implementing a machine learning model that uses Lambda and SQS to do the majority of the application work, while relying on an EC2 instance to do the inferencing. Great use case in general, but also an excellent example of how serverless components make the overall implementation easier.

Combining the Best of AWS EventBridge and AWS Kinesis
Interesting pattern described here by John Gilbert. There are a lot of benefits to consuming events from Kinesis versus subscribing directly to an EventBridge bus, so I can see this being effective under the right circumstances.

Making a custom DynamicDNS service with Cloudflare Workers
A simple serverless use case that could be applicable in a number of scenarios. As the author mentions, there are plenty of services like this out there already, but the fact that it’s so easy to build with serverless says something.

Provisioning Trial Environments With Step Functions
Very cool serverless use case outlined by Gavin Cornwell, as well as a perfect use case for Step Functions.

Serverless Concepts 🏗

Serverless Monitoring Guide
If you are responsible for monitoring a serverless application, or you soon will be, this is a great primer post from Tj Blogumas. Besides all the excellent detail provided on what to monitor, I love that there is an emphasis on Ops people getting closer to the code, and in the same vein, developers embracing repeatable deployment processes.

Why are services slow sometimes?
If there is anyone you should listen to about cloud architecture, it’s Adrian Cockcroft. This excellent piece explains a number of reasons (and the theories behind) why services can experience lower response times and what you need to think about to design around it.

The Cost of Monitoring Microservices: Managed Solutions vs. In-house
TLDR; Don’t build something that isn’t core to your business. This post by Ran Ribenzaft does a great job pointing out the “build vs. buy” argument, which is at the heart of the serverless mindset. And yes, you also need a monitoring tool.

Benefits of Serverless, and Event Driven Design
I’m sure most of you are well aware of the benefits of serverless, but this post by Craig Godden-Payne might be a good one to share with your skeptical coworkers. Simple explanations with a couple of basic patterns to tie it all together.

A tl;dr guide to Serverless Framework
I don’t think there is a shortcut to learning serverless and the cloud, but this post at least attempts it. Lots more to know than what’s included in here, but for those looking for a really quick start, this might help.

Serverless Tutorials 👷‍♀️

Build a Serverless Simple Flask Application with Kubeless on top of Kubernetes
I think I’m going to start embracing a few of these “serverless on top of Kubernetes” posts since they seem to be growing in popularity. Next step is to convince people that they don’t actually need Kubernetes to run their functions. Baby steps.

⚡️ 5 Minute Tutorial: Deploying a Next app with AWS Amplify Hosting
Nader Dabit wrote a tutorial for deploying a Next.js app and using Amplify to host it. It’s written by Nader, so you know it’s awesome.

Build a Slackbot with AWS SAM Application
Here is this week’s edition of “How to build a Serverless Slackbot”, this time with Hongbo Liu using AWS SAM with some local debugging.

AWS Amplify Video
Alex Patterson has an excellent tutorial that shows you how to add video for live streaming or Video-on-Demand to your next Amplify project. Very cool stuff in here.

Serverless Security 🔒

Securing Serverless Applications
The rules for securing your serverless applications are quite straightforward (good AppSec practices and all that), but I like that Thundra has built in some additional tools to give you more peace of mind. Serkan Özal outlines a few of the recommended approaches and then highlights the added features of Thundra.

21 Best Practices for AWS Cloud Security
Establishing good security practices should be table stakes for anyone building applications in the cloud. There is some good advice in here, even though not all applicable to serverless.

Serverless Reads 🤓

Register for the first-ever, completely free AWS Serverless-First Function
The AWS Serverless-First Function is a set of two free-of-charge virtual events that offer the latest education and thought leadership material about serverless approaches on AWS. Happening on Thursday, May 21 and Thursday, May 28, the event agenda includes sessions with AWS leaders like VP of Serverless, David Richardson, VP of Cloud Architecture Strategy, Adrian Cockcroft, customer speakers like Workgrid Software Head of Cloud Engineering, Gillian McCann, and an introduction by Amazon CTO, Dr. Werner Vogels. Sponsored

Serverless Exists In The Cloud and Both Need Servers
You know I love to share stories that are critical of serverless, because it’s important to get as much perspective as possible. And while there are several things I don’t agree with in this article (like the inaccurate definition of serverless), us advocates need to remember that perception is reality, and articles like this feed the narrative. One thing I do agree with is the challenges around understanding costs in an on-demand world.

3 Guiding Principles for Building New SaaS Products on AWS
I really liked this piece by Jared, because I think it extends well beyond just building SaaS products. One of the most important points in here is about documentation, because even though we want to move quickly, poorly documented applications make everything harder, including onboarding new developers to grow your application.

Multi-Source Processing v2.0
As of this writing, this post only had 1 clap on Medium, but it is a brilliant piece by James Gimourginas where he reimagines his architectural decisions from 10 years ago and provides an updated solution using modern cloud and serverless services. It’s a long read, but it’s incredibly insightful to see just how far we’ve come in the last decade.

Talking Serverless with Nader Dabit
Ryan Jones recently interviewed Nader Dabit on the Talking Serverless Podcast. It’s always great getting insights from Nader, so I think you’ll find some good takeaways in this summary of their discussion.

Cloud-Native Development Survey Details Kubernetes, Serverless Data
If you ask a developer what their favorite flavor of Kool-Aid is, you’ll likely get “Kubernetes” as the answer. I think we’re going to be seeing a hybrid approach for many, many years to come.

Future of backend development
I thought this piece was an interesting read, as well as the discussion that follows. The move to serverless (and microservices, to a similar extent) seems obvious to me. I can certainly understand the hesitance from others, but I also think the term “laggards” will be true for these people in every sense of the word. 🤷‍♂️ Just one man’s humble opinion.

Serverless Podcasts… 🎧

Serverless Chats – Episode #48: Serverless Developer Culture with Linda Nichols
In this episode, I chat with Linda Nichols about why modern cloud developers should be writing less code, how new deployment processes affect the testing culture, why Ops teams are still really important, and much more. Watch on YouTube!

Real World Serverless – Ep. #10: Serverless at DAZN with Daniel Wright and Sara Gerion
Yan Cui speaks with Daniel Wright and Sara Gerion about the state of Serverless adoption at DAZN, how they use serverless in a high-scale, high-uptime environment, and how they mix serverless and containers in a hybrid environment.

New from AWS 🆕

Control your email flows in Amazon WorkMail using AWS Lambda
Amazon WorkMail announced that you can now control email flow of your organization using AWS Lambda functions when using Email Flow Rules. With this, you can build powerful email flow control system with completely customizable conditions.

Amazon CloudWatch Logs Insights now allows you to save queries
Amazon CloudWatch is introducing Saved Queries, a new feature that makes it easier for CloudWatch Logs Insights users to save queries. They can organize these queries in folders and easily run them again for different purposes by team, application, or runbook.

Introducing the new AWS SaaS Competency
The AWS SaaS Competency was created to support AWS customers looking for APN Consulting Partners with deep specialization and expertise in designing and building Software-as-a-Service (SaaS) solutions on AWS.

AWS announces Amazon Elasticsearch Service UltraWarm general availability
Amazon Elasticsearch Service UltraWarm is now generally available. UltraWarm is a performance-optimized warm storage tier that lets you store and interactively analyze your data using Elasticsearch and Kibana while reducing your cost per GB by up to 90% over hot storage options. Read more here.

AWS Step Functions now supports AWS CodeBuild service integration
AWS Step Functions is now integrated with AWS CodeBuild, making it faster to build continuous integration workflows for your applications. Read more here.

Amazon Kendra is now generally available
Amazon Kendra is now generally available to all AWS customers. It provides customers with a highly accurate and easy to use enterprise search service powered by machine learning. Read more here.

Serverless Tools 🛠

How to succeed with Serverless? Automate best practices.
I really like the direction that Ben Ellerby and his team are taking the sls-dev-tools library. I totally agree that education is one of the biggest blockers to serverless adoption. This new Guardian tool is opinionated, but that’s not always a bad thing, especially if people don’t have enough experience to form their own opinions just yet.

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.

April 2-May 31, 2020 – Sessions with SAM: Live Twitch sessions by Eric Johnson (every Thursday at 10AM PDT)

May 13, 2020 – Full stack development with AWS Amplify (Cloud and Serverless Turkey)

May 13, 2020 – AWS Summit Online 2020: Empowering Tech Startups To Scale Sustainably

May 14, 2020 – Virtual Meetup: Serverless Fail Day! 🗣

May 16, 2020 – Patterns and Practices for Building Resilient AWS Serverless Applications

May 20, 2020 – Designing for DynamoDB Success (webinar)

May 21 & 28, 2020 – Serverless-First Function by AWS

May 27, 2020 – Serverless London May Meetup (Virtual)

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 Jennifer Davis (@sigje).  Jennifer is a Senior Cloud Advocate at Microsoft, but has held previous roles with Chef and Yahoo, among others. Jennifer has spoken about the “Ops in Serverless” at SRECon, Velocity Conf San Jose, and Serverless Week last summer. She’s also spoken at ServerlessDays London, and joined Microsoft Ignite in Toronto and London. Jennifer also organized AWS Community Day in Silicon Valley, as well as Serverless Days Seattle. Thanks, Jennifer, for taking serverless across the globe with you! 🙌

Final Thoughts 🤔

I hope you’ve all made it safely through another week. It looks like a lot of places are starting to relax the #StayAtHome orders, so just be sure to stay safe out there. I know I really need a haircut, but it’s certainly not worth risking anyone’s life over (even though it’s getting really long and out of control 💇‍♂️).

If you’re still looking for things to keep you busy, you can do like my daughters and put on a Serverless Fashion Show. Or maybe check out the latest release of DynamoDB Toolbox. 😉

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.

See you next week,
Jeremy

P.S. 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.

Off-by-none: Issue #88

API Gateway deserves some love too… 😢

Welcome to Issue #88 of Off-by-none. Thanks for being here!

Last week, we had too many releases from AWS to list, some really great EventBridge posts, and a debate about where serverless is in the technology adoption lifecycle. This week, we explore the super powers of API Gateway, answer the question of whether microservice size matters, and get a new song about S3 stuck in our heads.  Plus, we have lots of content from our amazing serverless community.

Serverless News & Announcements 📣

Monitor all your Lambda functions, API Gateways, SQS queues, DynamoDB tables, and more, straight from Datadog
Natively create real-time serverless metrics at one-second granularity for your errors, cold starts, memory used, estimated cost, and more. Datadog’s AWS Lambda integration enables you to monitor all of your serverless metrics, plus logs and traces in one, unified platform, so you can get full context when troubleshooting an issue. Try it for free today. Sponsored

Serverless Events
AWS Serverless Hero, Gunnar Grosch, has put together a curated list of upcoming serverless events. If you know about an upcoming conference, meetup, podcast, webinar, or other awesome serverless event, make sure to add it.

A brand new primitive for your Begin apps: event functions!
I really like the simplicity of the Architect Framework, and Begin has been adding some pretty cool features lately. This new “event” primitive should make building your event-driven systems even easier.

And… A bunch of the usual suspects achieved the new AWS Lambda Ready designation. Congrats to all these excellent companies: Lumigo, Thundra, Epsagon, Dashbird, and Stackery (and any others I may have missed).

When API Gateway doesn’t want to be left out…

There were several posts this week that pointed out the benefits of using API Gateway service integrations to bypass Lambda. And since we called out AppSync a few weeks ago, I figured API Gateway deserved some attention as well.

Using API Gateway to run Database Queries
Renato Byrro advocates for using a service integration to query data directly from API Gateway to DynamoDB. Benefits included.

AWS API Gateway integration with DynamoDB
Hareesh Veduraj has a similar post to Renato’s, but this one goes into more detail and shows you how to set up a service integration to retrieve data from DynamoDB.

Don’t use Lambda to move data! API Gateway can help
And Richard Fan goes a step further and shows you how to put data INTO DynamoDB, complete with permissions and input validation.

Can AWS API Gateway Act as a Load Balancer?
And rounding out our API Gateway section, is another post by Renato Byrro, this time comparing ALB to API Gateway. Strangler patterns apply.

Serverless Stories 📖

Your Worst-case Serverless Scenario Part III: The Invisible Process
Niels van Bree wraps up his excellent series on how one mistake turned 100k records into 56M records and brought down their production environment. This post talks about the effects of partition key design and index replication.

Using DynamoDB as a calculator
This is what happens when you indulge Corey Quinn’s curiosity, a bit of insanity, but also what turned out to be a brilliant experiment. Alex Chan wrote a DynamoDB calculator, a self admitted terrible idea, but certainly worth the effort.

Serverless Use Cases 🗺

Continuous Deployment with Semantic Release and GitHub Actions
Brett Andrews shows you how to automate deployments and changelogs using Semantic Release and GitHub Actions. I love the idea of this, though I’m still not sure I’m ready to fully trust my semantic versioning and NPM publishing to an automated process.

Backing up Auth0 to GitHub using AWS Lambda
Here’s a straightforward, highly adaptable use case by John Wheeler. Use AWS Lambda to backup third-party service configuration information.

Dog Bark Detector – Serverless Audio Processing
Can you think of a better serverless use case than detecting when your dogs bark? Well, maybe, but this post by Nathan Glover will give you some really good insights into processing audio with serverless.

Making the Case for Serverless Use Cases
This is an article I wrote as a follow up to my Serverless Chats conversation with Gareth McCumskey. Newcomers to the space often don’t realize just how many use cases there are for serverless. This post makes the case for nine of them.

A Serverless Cloud for Stateful Applications
Rodric Rabbah (one of the creators of Apache OpenWhisk) took a slightly different approach to serverless with his company Nimbella. In this post he shows how to create a stateful stock trading application.

Serverless Concepts 🏗

Leveraging Lambda Cache for Serverless Cost-Efficiency
For most experienced AWS serverless devs, using global variables in our Lambda functions is second nature. If you’re still not sure what global variables afford you, take a look at this post by Renato Byrro.

Aurora Serverless: Data API vs Connection pools
I thought this was an interesting approach by Murali Allada. I really love the Data API, but I can see using it for user-facing, synchronous operations being a problem. But why not just use it where it makes sense?

How to trim your cloud infrastructure costs
Being cost-conscious is never a bad thing, especially when it comes to the cloud. This becomes even more important due to the economic impact of the current COVID-19 situation. This article had a few interesting cost-cutting measures that can hopefully save you a few bucks so you can better weather this storm.

13 Most Common Google Cloud Reference Architectures
Priyanka Vergadia compiled a list of her #13DaysOfGCP mini series on Twitter. In each video, she outlines a use case and a reference architecture using GCP. These might not all be applicable to you, but you know me, I’m a sucker for serverless patterns.

Deploying Microservices Using Serverless Architecture
I’m not 100% in sync with Dorival Querino’s depiction of using a Lambda function as an orchestrator in a serverless microservice architecture. However, assuming there was a message bus or Step Function to bridge that gap, the overall intent is similar to my thinking on the subject.

Serverless Tutorials 👷‍♀️

Creating a scalable serverless import process for Amazon DynamoDB
Great post by James Beswick that shows you how to use S3 as a staging environment to import datasets of any size into DynamoDB. This is a very useful pattern for either preprocessing data or database migrations.

Creating a local testing environment for AWS Lambda with Express and Typescript.
Joan Gil shows you another way to test your AWS Lambda-backed API locally. This example uses a combination of swagger-routes-express and the AWS SDK to load your API Gateway routes. It’s an interesting, albeit, complicated approach, but it apparently works for them.

Developing a Serverless Backend API using Flask
If you’re looking for a way to quickly make your Flask app serverless, this tutorial from Sourabh Mokhasi should get you there. This is an easy onramp to serverless, but once you’re up and running, start thinking about strangling some of those routes to separate Lambda functions.

Measuring Performance with CloudWatch Custom Metrics and Insights
Michael Bahr has a great post that shows you four approaches to generating metric data. Each approach has trade offs, but the post outlines when and why to use CloudWatch Insights versus asynchronous log analysis.

AppSync: how to compare strings lexicographically in VTL
Yan Cui gives you a simple solution for lexicographical string comparisons in VTL. More importantly is the way he figured it out, by getting help from an amazing #serverless community.

Serverless Security 🔒

How Compliance Standards See Serverless in Production?
Ah compliance standards, the bane of almost every fast moving developers. The good news is, that with serverless, lots of these things are handled for you. Emrah Samdan has a great post that outlines some common standards and their considerations when using AWS Lambda.

Serverless Reads 🤓

How to Remain Agile with DynamoDB
Excellent post by Rob Cronin that points out three common hurdles that new DynamoDB developers often face. As he points out, there is a tremendous amount of agility available to you if you start with the proper techniques and use DynamoDB for what it was intended.

5 AWS Services You Should Avoid!
This article has been making the rounds, so without piling on additional criticism, I’ll just say this: if you use cloud services poorly, you’re likely going to be the victim of poor outcomes (and then write posts like this).

Do not follow Hype of Serverless Blindfolded
And while we’re dumping on serverless, I figured I’d include this piece from Ashish Singh. Besides the fact that his cost estimates don’t include the engineer(s) that needs to maintain his three t3.2xlarge EC2 instances, I’m thinking that 50M (25 second long) requests/month spread across three servers means each one has to handle ~160 request per second. Probably fine if the traffic is evenly distributed, but how often does that happen?

ServerlessDays virtual wrap up
I had a blast hosting the first ever ServerlessDays Virtual conference, and thanks to Nick Van Hoof, we have a great write up for you to enjoy.

Serverless Needs Standards to Be the Future of Application Infrastructure
Thoughtful piece by Gadi Naor that makes the point that serverless adoption is likely being hurt by the lack of standardization across serverless providers. While I tend to agree with his analogy to the early days of web standards, there was also a tremendous amount of innovation that happened during that time. Too quickly standardizing on something like Kubernetes, could prove to be terribly inefficient in the long run.

Serverless Music, Podcasts, and more…

Durably: The Ballad of S3
Every day it becomes more and more apparent that Forrest Brazeal has few limits. He says he can’t dance, but that remains to be seen. 🕺

Serverless Chats – Episode #47: Programming AWS Lambda with Mike Roberts
In this episode, I chat with Mike Roberts about his new book, why Java shops should be just fine moving to AWS Lambda, how we need to approach testing serverless applications, and much more. Watch on YouTube.

How Big Should Microservices Be?
Not really about serverless, but whenever Sam Newman talks about microservices, I like to listen. I think this is probably the most common question, and while Sam’s answer might not be exactly what you were hoping for, it’s probably exactly what you needed to hear.

Observability in serverless applications – the Serverless Coffee Break
Ran Ribenzaft from Epsagon joins James Beswick to discuss how to bring observability to serverless applications, and shares some best practices in running serverless apps at scale.

Talking Serverless with Ryan Jones
Ryan Jones from Serverless Guru has started his podcast up again. Lots of great guests on here.

New from AWS 🆕

Amazon EventBridge schema registry is now generally available
The schema registry is such an awesome tool for all of us lazy developers that don’t want to document anything. And if you run this in your dev or staging environment, it’s basically free. Read more here.

Amazon Translate now adds support for Mexican Spanish
I know my Spanish isn’t very good, so let’s hope AWS can do a better job. And just in time for Cinco de Mayo!

Amazon S3 Batch Operations adds support for S3 Object Lock
You can now perform S3 Object Lock operations using Amazon S3 Batch Operations to apply or change legal holds or retention periods across many objects with a single API request or a few clicks in the S3 Management Console.

AWS WAF now supports migration wizard for converting WAF rules from AWS WAF Classic
I love easy upgrade paths, so it’s good to know that AWS WAF now provides a simple way to migrate your WAF rules from AWS WAF Classic.

Amazon Relational Database Service (RDS) Data API Client Library for Java now generally available
I’m a big fan of the Data API, so if you’ve been missing out because someone forced you to write your code in Java, at least now you have some good news.

NoSQL Workbench for DynamoDB adds support for Linux
Real devs use Linux! Not me, but this is something I (and apparently the NoSQL Workbench team) hear all the time.

Amazon CodeGuru Reviewer launches new, more cost-effective pricing model
I still haven’t played around with, but now revisions to a pull request are only charged for changed or newly added lines of code.

Serverless Tools 🛠

Aurora Serverless Data API with TypeORM
Lots of people have asked if you could use an ORM with the Data API, and now you can. Goje Dan shows you how to use the typeorm-aurora-data-api-driver package to integrate with TypeORM. And if you dig deep enough, you’ll find that it’s using my data-api-client package under the hood. 😉

Thoughts from Twitter 🐦

It’s that time again again. Sitting virtually with the Lambda PM + DA team talking about 2021. What do YOU want to @awscloud to build? #serverless #awsLambda #serverlessforeveryone ~ Chris Munns
If you have serverless requests, Chris is the person to send them to! Check out this post for some really great ideas.

Question for all you @dynamodb hackers out there. Is there ever a reason to store an attribute with a ‘NULL’ value, or should you just remove the attribute entirely? Please explain your answer. ~ Jeremy Daly
I always remove NULL attributes in DynamoDB, but apparently there are lots of people who see the value in storing them. Interesting discussion around this poll I posted.

Running a serverless insurance startup, selling home, auto, renters, and umbrella in five states (http://ourbranch.com ) on AWS. April AWS bill was just under $740. DynamoDB – $202 CodeBuild – $116 Cloudwatch – $100 S3 – $66 AWS Directory Service – $36 ~ Joe Emison
How much does it cost to run a fully serverless startup on AWS? Joe Emison gives you some of his numbers, with plenty of commentary from others.

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.

April 2-May 31, 2020 – Sessions with SAM: Live Twitch sessions by Eric Johnson (every Thursday at 10AM PDT)

May 7, 2020 – Building a social network in under 4 weeks with Serverless and GraphQL

May 8, 2020 – ServerlessDays Amsterdam 2018 (online edition)

May 14, 2020 – Virtual Meetup: Serverless Fail Day! 🗣

May 16, 2020 – Patterns and Practices for Building Resilient AWS Serverless Applications

May 21 & 28, 2020 – Serverless-First Function by AWS

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 Belinda Vennam (@BeeMarieV). Belinda is an Advisory Software Engineer and Developer Advocate for IBM Cloud Functions and Apache OpenWhisk. Belinda led her team to deliver the functionality for the Templates feature in Cloud Functions, and has worked on and delivered a number of Open Source Apache projects, including a package for deploying serverless functions from a manifest file. Belinda has taken serverless cross-country, speaking at ServerlessDays Seattle and ServerlessDays NYC, among many other serverless events. Thanks, Belinda, for helping to make serverless better! 🙌

Final Thoughts 🤔

It looks like it was another busy week for all the stay-at-home serverlessers out there. I hope creating all this amazing serverless content is keeping you relatively sane. #StayAtHome is wearing really thin here at the Daly household, but we’re staying healthy. I hope you all are too.

Just an FYI, I’m planning on launching the next version of DynamoDB Toolbox this week, so stay tuned for that. Check it out if you get a chance.

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.

Until next time,
Jeremy

P.S. 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.

Off-by-none: Issue #87

Crossing the Chasm with Serverless… 🍿

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

Last week, we wondered why AppSync was so popular and saw a new serverless Redis solution. This week, we have too many releases from AWS to list, some really great EventBridge posts, and a debate by the InfoQ editors about where serverless is in the technology adoption lifecycle. Plus, we have lots of awesome content from the serverless community.

There is a ton to get to today, so let’s jump in!

Serverless News & Announcements 📣

Monitor all your Lambda functions, API Gateways, SQS queues, DynamoDB tables, and more, straight from Datadog
Natively create real-time serverless metrics at one-second granularity for your errors, cold starts, memory used, estimated cost, and more. Datadog’s AWS Lambda integration enables you to monitor all of your serverless metrics, plus logs and traces in one, unified platform, so you can get full context when troubleshooting an issue. Try it for free today. Sponsored

Vercel raises $21 million to transform JavaScript front-end development
It’s been fascinating watching what ZEIT (now Vercel) has done for serverless over the last few years, so this is exciting to see them get this round of funding. Definitely something to keep your eye on!

Announcing sls-dev-tools v1.0.0!
This tool has been on 🔥 lately. Lots of great things you can do with this tool, so I’m happy to see the v1.0 designation. Check it out if you haven’t already.

Announcing HTTP API Troubleshooting
More great features from the Serverless Framework Pro. Now you can get automatically instrumented monitoring and debugging tools on top of your HTTP APIs right out of the box.

Serverless Stories 📖

Lessons I learnt while building Slack apps
I really liked this article by Vinodhini Chockalingam (even though she trashed my lambda-warmer project 😂) because it was a detailed account of her thought process when building a serverless backend. It’s interesting to get a look into how people approach solving problems with serverless.

Japanese with AWS Fargate and why you should try AWS Rekognition Custom Labels
Performing OCR and translating Japanese characters makes for an interesting serverless use case, but reading this post by Daniel Skoczny as he recounts his experimentation process and the joy he found with each small win, was a great reminder of why I love serverless so much.

Serverless Use Cases 🗺

Using AWS CodeBuild to execute administrative tasks
This is a really interesting use case by Gojko Adzic. Rather than using Lambda or Fargate to run occasional admin tasks, you can configure an AWS CodeBuild job to pull the scripts from your source control and execute them with a ton of processing power. He outlines some downsides too, but makes a compelling case otherwise.

Using lambda@Edge for Server-Side Rendering
Really well-written post by Mohamed Elfiky that shows how his team used Lambda@Edge to render React pages at the edge. Lots of good detail in here, and it also happens to be an excellent serverless use case.

Use serverless to serve your server-side rendering project (Vue, Quasar)
Like doing SSR on Lambda@Edge, using a regular Lambda function is also an option. In this post, Gordon Lam explains how to use SSR with a Vue.js app.

Removing Vulnerability From API Keys Using Serverless Functions
Here’s a super simple use case, using a serverless function as a proxy to keep an API Key hidden from the frontend. For something as straightforward as this, the author could have probably just used API Gateway as an HTTP PROXY and accomplished the same thing.

Serverless Concepts 🏗

Decoupling larger applications with Amazon EventBridge
Great post by James Beswick about Amazon EventBridge. There are lots of app workflows where Step Functions are required, but in many cases, loosely coupled systems choreographed with EventBridge will accomplish what you need with greater independence and autonomy.

Building Blocks for AWS Lambda
Serkan Özal has a good post that gives you a quick firehose of serverless features, patterns, and limitations. It’s so easy to miss interesting serverless news, so reading quick reminder posts like this every now and again can’t hurt.

Keep track of your cloud computations
This article outlines a variation of the fan-out/fan-in pattern and uses an observer function to poll job status. This seems like a job for Step Functions, but the overall pattern is quite common in serverless architectures.

Everything we are doing wrong with AWS Lambda.
I started reading this article with high hopes, but as soon as I got to the second point, the author started to lose me. Way too much to dissect here, but there is some good advice mixed with some really bad advice in this article. I’d suggest taking a look at the AWS Well-Architected Lens for Serverless before making some of these assumptions.

Serverless Tutorials 👷‍♀️

How to Provide Static IPs to AWS Lambdas in a Fault-Tolerant Way
It would be great to see a simpler static IP solution for Lambdas, but until then, this implementation from Ivam Luz seems like a fairly robust solution.

Continuously deploying Serverless Applications
Another week, another serverless CI/CD pipeline design. This one from Sabarish Sekar uses CodePipeline and CodeBuild along with the AWS CDK.

Deploying Serverless Backends to AWS with Gitlab CI/CD
And here’s another CI/CD setup from Michael Timbs. This example uses the Serverless Framework and the Gitlab CI/CD system to deploy to AWS.

How to build your own serverless WeTransfer clone on AWS?
This is a great post by Jakub Kapuscik that gives you a full tutorial using the Amplify Framework to build a completely serverless front and backend application.

Building an automated knowledge repo with Amazon EventBridge and Zendesk
This is an awesome tutorial that shows you how to implement a bidirectional event orchestration pattern between AWS services and Zendesk using Amazon EventBridge’s third-party integrations. In this example, it uses support ticket events to build a customer self-service knowledge repository.

Serverless Security 🔒

How to address and mitigate serverless security issues
There are several good points in this article by Dave Shackleford, but I’m not a fan of the “sky is falling” approach to highlighting serverless security best practices. Event injection, denial of wallet, and other risks pointed out are certainly possible, but following good application practices and the principle of least privilege, will often put you in a much better security posture than more traditional architectures.

Another one-line npm package breaks the JavaScript ecosystem
So this happened, and it highlights one of the main security concerns of serverless functions, third-party modules. This is certainly not an issue unique to serverless, but it should be a reminder that third-party modules can easily publish breaking changes, or worse, malicious code that can compromise your serverless functions. Package locks and regular dependency scans should be on your security checklist.

Serverless Reads 🤓

Register for the first-ever, completely free AWS Serverless-First Function
The AWS Serverless-First Function is a set of two free-of-charge virtual events that offer the latest education and thought leadership material about serverless approaches on AWS. Happening on Thursday, May 21 and Thursday, May 28, the event agenda includes sessions with AWS leaders like VP of Serverless, David Richardson, VP of Cloud Architecture Strategy, Adrian Cockcroft, customer speakers like Workgrid Software Head of Cloud Engineering, Gillian McCann, and an introduction by Amazon CTO, Werner Vogels. Sponsored

3 Big Things I Wish Someone had Told Me When I Started Using AWS
Great post by Jared Short that should provide comfort (and perhaps a little stress) to those that are starting their cloud journeys. The AWS ecosystem is a complex beast, and trying to understand it all is a full-time job in and of itself. Jared provides some excellent advice for anyone feeling overwhelmed by even the thought of it.

Functionless S3 Integration inside a Serverless Casserole-Part 1
Sheen Brisals has started a new blog series on building “Functionless” applications with serverless components. Perhaps it’s too much self-isolation, or just a clever way to make it more relatable, but either way, I’m hungry for more functionless recipes after reading this post.

Serverless Well-Architected – Reconciling Resilience and Cost-Optimization
I’ve been enjoying these posts by Renato Byrro, and I think this is a good topic to consider when building out your serverless systems. I’ve seen more and more patterns that “modify” the infrastructure based on alerts or other triggers, and I’m still trying to decide if this is something we should be encouraging. On the one hand, I like the idea of dynamic infrastructure, but then again, lots of things can probably go wrong with this approach.

Software Architecture and Design InfoQ Trends Report—April 2020
The editors of InfoQ kept serverless in the “Early Adopter” phase, which I tend to agree with. But this comment from Thomas Betts is mind boggling: “A year ago, people were talking about building systems that were entirely serverless, and that hype has diminished. Individual serverless features, such as AWS Lambda or Azure Functions, may have crossed the chasm, but completely serverless architecture has not, and possibly won’t ever achieve majority adoption.”

The DynamoDB Tools Gap
This is a good article by Paul Swail that points out the recent surge in DynamoDB interest, and the lack of tooling available to developers to work with complex single table designs. There are libraries out there (like DynamoDB Toolbox 😉) and tools like the NoSQL Workbench and Dynobase, but I do agree that more tools are always welcome.

Firebase vs. Vercel (aka Zeit) Now (2020)
It’s probably super important to remember that there are a lot of serverless services and abstractions out there. This is a great article by Ozan Tunca that does an honest comparison of these two services.

Podcasts and Videos…

Episode #46: Serverless Use Cases with Gareth McCumskey (Part 2)
In this episode, I finish my chat with Gareth McCumskey about serverless use cases including parallel compute, email processing, cron jobs, offline/async processing, machine learning and more. Watch on YouTube.

Serverless Transformation Podcast
Ben Ellerby chats with Nicole Yip and Sheen Brisals from The LEGO Group about deployment pipelines, EventBridge, TCO, tooling and much more.

Real World Serverless – Episode #7/8: Serverless at LifeWorks with Scott Smethurst and Diana Ionita
Great two part conversation from Yan Cui with Scott Smethurst and Diana Ionita about their work at LifeWorks. I love listening to these stories from developers on the frontlines!

Keeping up with the Cloud with Jeff Barr – How to stay up to date with all the cloud launches?
Marcia Villalba interviews the Wizard of AWS himself, Jeff Barr, about what he does to keep up-to-date with everything that AWS launches, plus how he got into developer relations.

New from AWS 🆕

AWS was busy last week. Here is just a handful of recent releases.

AWS AppSync enables support for generic WebSockets clients with GraphQL real-time subscriptions
This sounds pretty cool: “AppSync allows to easily make any of its supported data sources real-time, with connection management, scaling, fan-out and data broadcasting handled automatically between the service and the clients, enabling developers to focus on the business differentiators for their real-time applications instead of WebSockets operations and infrastructure management.”

Introducing Amazon AppFlow
Amazon AppFlow is a fully managed integration service that enables you to securely transfer data between Software-as-a-Service (SaaS) applications like Salesforce, Marketo, Slack, and ServiceNow, and AWS services like Amazon S3 and Amazon Redshift, in just a few clicks. Read more here.

Amazon Kinesis Data Firehose adds support for streaming data delivery to an Amazon Elasticsearch Service domain in an Amazon Virtual Private Cloud (VPC)
Amazon Kinesis Data Firehose can now deliver streaming data to an Amazon Elasticsearch Service domain in an Amazon VPC.

Custom dictionary files now supported on Amazon Elasticsearch Service
Still not serverless, but Amazon Elasticsearch Service now offers support for adding custom dictionary files to your domains. Now you can specify synonyms, stop words, and segmentation files to improve your indexing, matching, and search relevancy.

AWS Chatbot Now Generally Available
AWS Chatbot is now generally available for all customers. AWS Chatbot is an interactive agent for “ChatOps” that makes it easy to monitor and interact with your AWS resources in your Slack channels and Amazon Chime chat rooms.

AWS Glue now supports serverless streaming ETL
This feature makes it easy to set up continuous ingestion pipelines that prepare streaming data on the fly and make it available for analysis in seconds. Read Danilo Poccia’s post.

Amazon CloudWatch Synthetics is now generally available
Amazon CloudWatch Synthetics is a new feature that supports monitoring your REST APIs, URLs, and website content every minute, 24×7, and alerts you when your application endpoints don’t behave as expected. Read Jeff Barr’s post.

Introducing Multi-Region User Pools
The Multi-Region User Pools solution helps ensure reliability in the event of service or infrastructure disruptions by automatically provisioning and configuring the Cognito service in a multi-region, high reliability architecture.

Amazon Route 53 supports Domain Name Transfer between AWS accounts
Amazon Route 53 Domains now lets you transfer domain registrations between AWS accounts using the Route 53 API.

Amazon Keyspaces (for Apache Cassandra) is now generally available
Amazon Keyspaces (formerly know as Amazon Managed Apache Cassandra Service during preview), is a scalable, highly available, and fully managed Apache Cassandra–compatible database service, and is now generally available.

Serverless Tools 🛠

Improving your Serverless feedback loop with sls-dev-tools
We’ve been mentioning sls-dev-tools over the last few weeks (which is now at a stable v1.0 release) since the feature improvements keep coming. This post by Mansur Pasha outlines a few of the main features.

A new view for Begin Data
This is a useful tool for Begin users. Begin Data is a fast, durable key value store that runs on top of AWS DynamoDB. It provides a simplified data API that makes interacting with your data much easier.

Thoughts from Twitter 🐦

“First glance differences and similarities between @dynamodb and #Cassandra in @awscloud Keyspaces flavor, a thread!” ~ Rafal Wilinski
This thread by Rafal Wilinski gives a great overview of the differences between DynamoDB and the new Cassandra Keyspaces.

“All: if you were going to build a better AWS console (third party product), (1) web-based or electron? (2) which service(s) would you do first?” ~ Joe Emison
This post by Joe Emison sparked a really good conversation. Lots of insights for the AWS product teams, but also some thoughts around the value of building tooling to automate or simplify common workflows without needing the console.

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.

April 2-May 31, 2020 – Sessions with SAM: Live Twitch sessions by Eric Johnson (every Thursday at 10AM PDT)

April 22, 2020 – From Monolithic to Modern: MasterStream’s Serverless Transformation with Stackery (webinar)

April 22, 2020 – Building Your First Application with AWS Lambda (Tech Talk)

April 23, 2020 ServerlessDays Vienna (Rescheduled to September 24th)

April 24, 2020 ServerlessDays Paris (Canceled)

April 28, 2020 – Choosing Events, Queues, Topics, and Streams in Your Serverless Application (Tech Talk)

April 29, 2020 – ServerlessDays Virtual (I’m hosting this!)

May 4, 2020 – Production Ready Serverless – new instructor-led online workshop

May 7, 2020 – Building a social network in under 4 weeks with Serverless and GraphQL

May 16, 2020 – Patterns and Practices for Building Resilient AWS Serverless Applications

May 21 & 28, 2020 – Serverless-First Function by AWS

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 Nick Van Hoof (@TheNickVanHoof). Nick is a Cloud Developer at Cloudway, which helps companies by providing a cloud native approach to application development. Nick’s a former math teacher turned cloud evangelist who has spoken at the Serverless Architecture Conference and the API Conference, is part of the ServerlessDays Belgium virtual meet-up, and will be an upcoming speaker at ServerlessDays in Hamburg this fall. In addition to his prolific work on the serverless event circuit, Nick frequently writes about serverless and the cloud around the web, on his personal website, and on his new, aptly named blog, The Cloud Developer. Thank you, Nick, for living the serverless life! 🙌

Final Thoughts 🤔

Another week has gone by, and like the great Yogi Berra once said, “It’s deja vu all over again.” But even though we’re all stuck at home, it seems as though many in the serverless space have continued to be productive (especially the teams at AWS). Personally, I’ve been pouring my heart and soul into v0.2 of the DynamoDB Toolbox. Plus, I created the Route 53 Database Fixer Chrome Extension just for fun.

Hopefully you’re all staying safe and healthy. Wishing you all another productive week!

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.

Cheers,
Jeremy

P.S. 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.

Off-by-none: Issue #86

Why is AppSync suddenly so popular? 🤔

Welcome to Issue #86 of Off-by-none. Thanks for being here!

Last week, Fargate got an overhaul, we did some EventBridge storming, and we learned some rules for DynamoDB modeling. This week, we have an unusually high number of AppSync posts, some good serverless fundraising news, and a new serverless Redis solution. Plus, we have plenty of amazing posts from the serverless community.

Serverless News & Announcements 📣

Monitor all your Lambda functions, API Gateways, SQS queues, DynamoDB tables, and more, straight from Datadog
Natively create real-time serverless metrics at one-second granularity for your errors, cold starts, memory used, estimated cost, and more. Datadog’s AWS Lambda integration enables you to monitor all of your serverless metrics, plus logs and traces in one, unified platform, so you can get full context when troubleshooting an issue. Try it for free today. Sponsored

Serverless monitoring startup Dashbird raises $2.1m and releases new features for serverless monitoring
Congratulations to Taavi and the team over at Dashbird. It’s always great to see serverless vendors getting funding so they can continue to innovate and move the ball forward.

Serverless Redis Is Here!
I have yet to try this, but a Serverless Redis implementation has been needed for quite sometime. I’m still wondering if an HTTP interface might make more sense, but it’s hard to compete with native Redis speeds. I definitely need to take this thing for a spin.

Cloudflare goes retro with COBOL delivery service – Older coders: Who’s laughing now? Turns out we’re still vital
Using the GNUCobol project, you can compile COBOL code to C and then use Emscripten to compile the C code to WebAssembly. Then you can run it on a Cloudflare Worker. How about that?

Serverless Stories 📖

How serverless tools helped us make good architecture decisions under time pressure
Phil Sarin talks about a recent project he worked on and how they built it using a serverless stack on AWS in only two weeks. He also points out that besides the more well-known benefits of serverless, forcing yourself to think in terms of events, can make it easier to adopt event-driven architectures under time and budget pressure.

Lessons learned building serverless data pipelines
Nathan Pointer points out (sorry, couldn’t resist) a few lessons he’s learned while working with serverless data pipelines. The information is relatively straightforward, but the pun alone made it worth including. 😉

Serverless Use Cases 🗺

Netflix Images Enhanced With AWS Lambda
Resizing images is a classic serverless use case, but did you know that Netflix is now using it to generate their images? This is a great post that shows the comparison between their EC2 and Lambda approaches and why Lambda comes out on top with a landslide victory.

How to trigger AWS Lambda by SMS?
Mohammed Lutfalla presents you with the simple use case of triggering a Lambda function with an SMS message received by AWS Pinpoint. Lots of ways to implement this, including using services like Twilio, but there are plenty of cool tools that could be built using this pattern.

Recipe for Resilient Engineers: Resilient, Scalable, Cloud-Native AWS SFTP for < $300/Month
This is another really great use case that takes advantage of a number of AWS services. In this post, Mark Fowler shows you how to set up a fully-managed SFTP solution. I’m not sure how he’s calculating the costs exactly, but either way, for a system under heavy load, the TCO is quite attractive.

Designing a serverless video streaming pipeline
This is a very cool serverless use case. Thomas Schoffelen explains how he build a video conversion and streaming pipeline using serverless services from AWS.

Export CloudWatch Logs to S3 using Lambda
Here’s a straightforward DevOps use case for serverless. Omar Dulaimi explains how to run a scheduled Lambda function to copy your CloudWatch Logs over to an S3 bucket.

Serverless Concepts 🏗

The Hitchhiker’s Guide to S3 Access Controls
Awesome resource created by Matt Tyler that gives you pretty much all you need to know about S3 Access Controls as well as some strategies for choosing the right access level.

Services, Microservices and Stacks
Like Paul Swail, I too tend to be a stickler for semantics, especially when it comes to communicating technical concepts. You won’t get all your questions answered with this post, but Paul does a good job giving us clear and useful definitions of these terms.

Asynchronous client interaction in AWS Serverless: Polling, WebSocket, Server-Sent Events or AppSync?
Xavier Lefèvre shows us different ways to push data to your client applications. AppSync is one of the choices, but Xavier prefers WebSockets, and explains why in this post.

Why Serverless Apps Fail and How to Design Resilient Architectures
Renato Byrro points out a common architectural design problem that often creeps up in serverless applications. When you have dependent downstream systems that do not have the same scaling characteristics, using proper mitigation techniques is essential.

How AWS Lambda Retry really works
Enrico Portolan lays out some of the retry mechanisms that AWS makes available when interacting with Lambda functions. There’s a discussion of swallowing errors in there, plus the coupling effects of Step Functions. I wouldn’t suggest following all the guidelines in here, but the need to learn failure modes in the cloud is the big takeaway.

How to tame GraphQL: AWS AppSync, Amplify and Cloudformation to the rescue!
This post gets into the weeds a bit, but is a good overall intro to GraphQL and AWS AppSync. I really love the idea of AppSync, but I still find it less than ideal for stitching together multiple microservices. I think I just need to spend some more time with it.

Serverless Tutorials 👷‍♀️

The Serverless Chats Podcast
Geek out on everything serverless! Each week, Jeremy Daly, serverless advocate, AWS Serverless Hero, and Off-by-none founder, chats with another serverless champion to explore and do a deep-dive into specific topics in the serverless space. Sponsored

AppSync With The AWS Cloud Development Kit
For more insight into AppSync, this post by Ken Winner gets into some of the challenges with building and maintaining AppSync configurations and how there are some tools that can help with that. Unfortunately, as you can see from the article, there’s still the need for some duct tape and popsicle sticks to use some of these features outside the CLI

AppSync: how to error on DynamoDB conditional check failures
If you’re using AppSync to interact with DynamoDB, make sure you check out this post by Yan Cui. Apparently the resolver doesn’t throw an error when condition checks fail, so you have to deal with this in your response mapping template.

Deploy an Angular application on AWS using serverless
Despite the fact that it’s using Angular as the frontend framework (kidding 😉), this is a great little tutorial by Marco Zuccaroli that shows you how to deploy your SPA to CloudFront using the Serverless Framework and the single-page-app plugin. No Lambda functions required.

Tutorial: Refactor Your Node.js and Express APIs to Serverless APIs with Azure Functions
In this tutorial, John Papa shows you how to convert your Express.js API into Azure Functions. It’s another example of a monolithic function (Azure Functionlith?), but again, a straightforward way to get your serverless on.

How to create a Selenium web scraper in Azure Functions
If your AWS IP addresses get blocked, maybe you could build your web scraper using Azure Functions instead? 🤷‍♂️ René Bremer teaches you how.

Serverless Reads 🤓

12 Important Lessons from The DynamoDB Book
I spoke with Alex DeBrie about his new DynamoDB Book, and we discussed twelve important lessons for anyone working with DynamoDB modeling. Lots of good lessons in here for anyone approaching DynamoDB.

Building a Serverless Web App: Why You Should Consider the Monolith
Ashan Fernando encourages the use of a Lambdalith as an easy path to serverless. I favor the single-purpose function approach, but this isn’t the worse pattern if you’re just getting started. Plus, he mentions my Lambda API project, so I don’t want to be overly critical. 😉

Serverless + GraphQL = Developer Nirvana
Hyperbole be damned! I obviously agree that serverless is a major game changer for speed and innovation, and clearly many companies have had great success with GraphQL. Although Tj Blogumas doesn’t mention it directly, I still think AppSync needs some work before it becomes my go-to.

4 Things you must know before using Firebase Cloud FireStore in 2020
I really appreciate this article by Shawn Wu, however, I think this type of developer confusion is becoming more prevalent as NoSQL databases like DynamoDB and Firebase become more popular. You can’t use NoSQL like a relational database, that’s not the point. So if you approach it with that mindset, like Shawn, you’re going to be sorely disappointed.

Podcasts and Videos… 📹

Serverless Chats – Episode #45: Serverless Use Cases with Gareth McCumskey (Part 1)
In this episode, I chat with Gareth McCumskey about a number of production-ready serverless use cases including RESTful APIs, GraphQL, WebSockets, and capturing clickstream data in PART 1 of this two-part conversation. Watch on YouTube!

Foobar: Optimize Your Lambda Functions with Alex Casalboni
Marcia Villalba hosts Alex Casalboni to talk about optimizing your Lambda functions to minimize costs and maximize performance.

New from AWS 🆕

AWS X-Ray SDK for Go is now generally available
AWS X-Ray SDK for Go is now generally available, enabling Go developers to get an end to end view of requests as they travel through their applications.

Exporting HTTP APIs as OpenAPI 3.0 Now Supported by Amazon API Gateway
You can now export an OpenAPI 3.0 compliant API definition file from HTTP APIs in Amazon API Gateway.

Amazon Redshift announces general availability for federated querying
This is really cool. With Amazon Redshift Federated Query, you can query live data in Amazon RDS for PostgreSQL and Amazon Aurora PostgreSQL and integrate it with the data in your Amazon Redshift and Amazon S3 environments.

Introducing AWS Elemental Link: A Device to Send Live Video to AWS
I know it has nothing to do with serverless, but as someone who has been doing a lot with video lately, this thing looks pretty cool.

Serverless Tools 🛠

Dealing With Webhooks Sucks But There’s Something You Can Do About It
This actually looks like a great tool if you are dealing with lots of incoming webhooks. Add some throttling capabilities in there and this could be very useful for lots of people.

5 Open Source Tools to Improve Your Serverless Development Experience
Ben Ellerby has a list of open source tools that will make your serverless development experience much better.

Run multiple instances of Serverless Offline like a pro and watch for changes
George McCreadie built a cool little tool called serverless-offline-multi that lets you run multiple serverless-offline emulators in the same shell. Running serverless locally is still a pain, but this might make it a little easier for you.

Thoughts from Twitter 🐦

What’s your preferred way to reference DynamoDB Tables that have auto-generated names when the tables and functions are in separate stacks/#serverless services? Outputs? Environment Variables? Parameter Store? ~ Brett Andrews
Great discussion on this post by Brett. I think there are a lot of different factors to consider, but it seems that SSM Parameter Store has the most support.

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.

April 2-May 31, 2020 – Sessions with SAM: Live Twitch sessions by Eric Johnson (every Thursday at 10AM PDT)

April 22, 2020 – From Monolithic to Modern: MasterStream’s Serverless Transformation with Stackery (webinar)

April 22, 2020 – Building Your First Application with AWS Lambda (Tech Talk)

April 23, 2020 ServerlessDays Vienna (Rescheduled to September 24th)

April 24, 2020 ServerlessDays Paris (Canceled)

April 28, 2020 – Choosing Events, Queues, Topics, and Streams in Your Serverless Application (Tech Talk)

April 29, 2020 – ServerlessDays Virtual (I’m hosting this!)

May 4, 2020 – Production Ready Serverless – new instructor-led online workshop

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 Brett Andrews (@AWSbrett). Brett is a Staff Software Engineer at Wizeline where he helps improve the performance of software teams. Prior to Wizeline, Brett was a Front-End Engineer for AWS where he was instrumental in shaping the direction of serverless. He lead the UI teams for API Gateway and the Serverless Application Repository, along with the Open Source Software team for SAM and aws-serverless-express. In addition to his influential run at AWS, Brett has some great articles published on his personal site and LinkedIn, and can always be counted on to tweet about the latest in serverless. Thanks, Brett, for your part in the rise of serverless! 🙌

Final Thoughts 🤔

#StayAtHome, Day 342 😷 (at least it feels like it). I just found out that the Stay at Home order has been extended in Massachusetts, and that schools are closed for the rest of this school year. At least I can look forward to learning some more #COVIDskills and forcing my daughters to make thank you videos for people who send us free stuff. Oh, and maybe I’ll be able to finish v0.2 of this project sooner rather than later.

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.

Stay safe out there,
Jeremy

P.S. 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.

Off-by-none: Issue #85

Fargate says ‘goodbye’ to Docker Engine… 😱

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

Last week, we shared some new books and a YouTube channel for serverless fanatics. This week, Fargate gets an overhaul, we do some EventBridge storming, and learn some rules for DynamoDB modeling. Plus, we’ve got a ton of great posts from the serverless community.

Serverless News & Announcements 📣

Natively Debug AWS Lambda on your IDE!
Thundra allows you to natively debug your serverless applications on the cloud with their own permissions. Thundra’s online-debugger sets up a secure bridge between your AWS Lambda environment and your IDE. VSCode and IntelliJ IDEA are natively supported with plugins. For other IDEs, Thundra provides a portable client to foster the integration with any IDEs. Start debugging Node.js, Python and Java functions for free today! Sponsored

AWS revamps Fargate serverless containers, but wait – where’s Docker Engine? Ah, ‘deemed unnecessary’
No more Docker Engine and added support for EFS. If you’re building a containerized application, this is a good place to start.

Stackery Expands Serverless Security and Continuous Delivery Capabilities
I love seeing platforms like Stackery starting to handle automated deployments. Setting up CI/CD with serverless always seems to be a patchwork of duct tape and popsicle sticks, so having trusted platforms manage it for you, is a huge win for any serverless developer.

Good Morning Serverless Guest Signup
Do you have something to say about serverless? Sign up to be a guest on on Tom McLaughlin’s Good Morning Serverless Show.

Serverless Stories 📖

Going Serverless with Node.js and Clean Architecture
I like this post by Everton Nishiyama because it perfectly captures how I feel every time I start to build a new serverless application and am staring at a blank canvas. I have several standards and practices that I follow, but every app is an evolution for me, and I’ve yet to find myself using the exact same structure more than once.

Reducing Serverless Integration Test Runtime on CI
Rob Cronin recounts how his team dramatically reduced their integration tests from 40 minutes to only 7 by implementing strategies like stack reuse and parallelization.

A serverless app that texts me positive COVID-19 news
Gwyneth Pena takes you through her process for creating a serverless app using Azure Functions and Twilio to only text her COVID-19 stories with a positive sentiment.

Serverless Use Cases 🗺

Building a netlify lambda function to turn twitter lists into email digests
This is a great example of simple automation that’s a perfect use case for serverless. A little bit of Lambda and some managed services can produce all kinds of interesting tools.

Send Organizational AWS Health Events to Amazon Chime or Slack
This is another great solution that aggregates all your AWS Health alerts using a scheduled Lambda function and then sends them to your Chime or Slack channel.

emailThis bookmark using serverless API
Thought this was a clever hack for circumventing ads within your link collector. Shantanu Oak created a simple bookmarklet and serverless API to forward urls to his bookmarking service.

Host a Podcast with Airtable and Serverless Framework
I’m clearly partial to podcasts, so I like this use case using Airtable as the backend datastore. Not sure I’d want to build my own solution in this case, but there are plenty other things that an Airtable/Serverless duo could handle.

How to fix Cloudfront CORS font Issue with AWS Lambda@Edge
Highly specific use case here, but whether it’s Lambda@Edge, Cloudflare Workers, or any serverless edge provider, there are so many more possibilities beyond just simple header manipulation.

Serverless Concepts 🏗

S3 Uploads
Very informative post by Zac Charles that fully explains different ways to handle S3 uploads and gives a comparison of proxies vs presigned URLs vs presigned POSTs.

Hit the 6MB Lambda payload limit? Here’s what you can do.
If you’re interested in more info about uploading S3 files, check out Yan Cui’s post.

Testing Serverless Workflows
Joel Lutman makes the case for adding regression tests to your serverless applications and provides some detail as to how one might achieve that. I’ve always loved how easy it is to spin up separate test stacks with serverless.

Handling large Step Function payloads
If you are passing really large payloads between transitions in Step Functions, G.J. den Hertog shows you a small trick to avoid hitting the 32,768 character limit.

Lambda Data Stores: Which One to Pick
Serkan Özal enumerates the datastore options that you can use with Lambda. Although this isn’t an exhaustive list, the major players are outlined. He also gives you a few guidelines for when you might use each.

Serverless Tutorials 👷‍♀️

EventBridge Storming
Great article by Ben Ellerby about “EventBridge Storming” to help teams define events and service boundaries for their serverless apps. I think I’ve tried every “method” for doing this, and ones similar to Ben’s workshop approach have been most effective.

Getting started with Microsoft Azure
If AWS went away tomorrow, at least we’d have Azure. Amber Wilkie does an excellent job outlining the the basics of building serverless apps using Microsoft Azure. Great introduction if you want to see what Azure has to offer.

Right Way to implement a Serverless Node.js application on AWS (Part 1)
So, I’m always suspicious of blog posts that describe the “right way” to do something, and my spidey sense was not wrong this time either. It’s good to see that the team at Zolo is starting to build serverless applications, but like many a first attempt, they are building Lambdaliths. Not the worst way to get started, but far from the “right way”, for many reasons.

Translating documents at enterprise scale with serverless
Great use case from James Beswick. The best thing about posts like this are the repeating patterns that can be used for various types of workloads.

Serverless Reads 🤓

The Ten Rules for Data Modeling with DynamoDB
If you want to get a taste of the amazing content in Alex DeBrie’s new DynamoDB book, take a look at this post he wrote for the Trek10 blog.

Platforms for Serverless at Edge: A comparison
Davide Taibi and his research team compare the characteristics and issues of the major edge computing platforms that provide serverless compute support, outline some considerations for each, and point out some open issues. Excellent read.

I/O Runtime and the Future of Serverless at Adobe
I thought this was an interesting read to see how Adobe is thinking about serverless. There’s an incredibly important point they make, which is the need to move away from Docker to more densely pack compute (like Cloudflare and Fastly do). If you’ve been paying attention, you may have noticed that more and more “serverless” implementations are moving to this type of isolation model. Of course, there is still one very popular container orchestration system that isn’t following suit. 🤷‍♂️

Open source worse practices? Serverless Inc. as an example of what can go wrong when you don’t keep up with your developer community
I think Stephan Schulze makes some valid points, but at the same time, there is more context that needs to be considered here. I’m a big fan of the Serverless Framework, and my experience has always been positive. I also know how hard it is to maintain an OSS project. The free version of the Framework is truly a gift to the serverless community, and like all startups, limited resources force you to make hard choices. Maybe a better protocol for faster responses is warranted, but I think the vast majority of developers are happy with the management of the framework.

Videos, Podcasts, and Live Streams… 📹

Watch at your leisure: Optimize Lambda Performance for your Serverless Applications – Tech Talk
In less than 45 minutes, AWS Serverless expert James Beswick shows you how to fine-tune your Lambda functions to get the most out of your applications. He offers ways to improve your application throughput, reduce latency, and lower overall cost. He also dives in to some of the newest features that allow you to find the most precise fit for your application’s needs, including improved VPC networking and Provisioned Concurrency. Sponsored

Serverless Chats – Episode #44: Data Modeling Strategies from The DynamoDB Book with Alex DeBrie
In this episode, Jeremy chats with Alex DeBrie about why he wrote the DynamoDB Book, what are some key concepts to keep in mind when modeling data, and how using the right strategies can help you create more powerful single table designs. Watch on YouTube.

Foobar: Let’s practice together for the AWS Cloud Practioner Certification
Marcia Villalba takes a group of live viewers through practice questions for the AWS Cloud Practitioner Certification. It was really fun to watch, so check out her channel to find out when the next one is.

Real World Serverless – #6: Serverless at TotallyMoney with Nick Blair and Steve Westwood
Another great episode with Yan Cui chatting with the team at TotallyMoney. Lots of really great info in here about troubleshooting Provisioned Concurrency.

Migrating existing monolith to serverless in 8 steps
Can’t get enough Yan Cui? Watch this excellent presentation that goes through the steps to migrate your existing monolithic application to serverless.

New from AWS 🆕

Amazon Cognito Identity Pools now supports Sign in with Apple
Amazon Cognito Identity Pools now supports Sign in with Apple, providing another social identity provider for customers who use Cognito for receiving temporary AWS credentials.

Amazon ECS and AWS Fargate support for Amazon EFS File Systems now generally available
Amazon Elastic Container Service (ECS) tasks running on both Amazon Elastic Compute Cloud (EC2) and AWS Fargate can now mount Amazon Elastic Filesystem (EFS) filesystems.

Amplify Framework announces new, rearchitected UI Component and modular JavaScript libraries
A new, rearchitected Amplify UI component library that enables JavaScript developers to easily add authentication scenarios to their web apps is now available.

AWS Fargate launches Platform Version 1.4
This latest version enables several new Fargate features including EFS endpoints, 20 GBs of ephemeral storage, and new network performance metrics in Amazon CloudWatch Container Insights.

Amazon RDS Proxy with PostgreSQL Compatibility (Preview)
Amazon RDS Proxy is now in preview for Aurora PostgreSQL and RDS PostgreSQL. I have some clients that’ll be very happy about this.

Serverless Tools 🛠

Off to a great start with AWS Organizations
This is a great article by Olaf Conijn that discusses strategies for setting up and managing AWS Organizations, but even better is the tool his team built for managing orgs using Infrastructure-as-Code.

Examples of various Lambda function integrations with API Gateway and CORS enabled
Having trouble with CORS from your frontend apps? Nader Dabit open sourced starter functions with CORS enabled for GO, Node, Python, .NET, and Java.

SAR Application to Bootstrap an AWS Cloud9 IDE
Need to bootstrap an AWS Cloud IDE? Thanks to Richard Boyd, there’s a SAR app for that.

Thoughts from Twitter 🐦

I’m stacking up a lot of #serverless content in the coming weeks across all levels, everything from getting started to the deepest of dives! I hope you’ll join me for some (or all!) of these sessions ~ Rob Sutter
Rob always delivers amazing serverless content. This tweet lists out a bunch of upcoming things he’s working on and how/when you can access them.

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.

April 2-May 31, 2020 – Sessions with SAM: Live Twitch sessions by Eric Johnson (every Thursday at 10AM PDT)

April 22, 2020 – From Monolithic to Modern: MasterStream’s Serverless Transformation with Stackery (webinar)

April 20, 2020 ServerlessDays Auckland (Postponed – new date pending)

April 21, 2020 – Failover CONF: A virtual event on reliability 🗣

April 21, 2020 – Nordic Serverless Observability Special Meetup (virtual)

April 23, 2020 ServerlessDays Vienna (Rescheduled to September 24th)

April 24, 2020 ServerlessDays Paris (Canceled)

April 29, 2020 – ServerlessDays Virtual

May 4, 2020 – Production Ready Serverless – new instructor-led online workshop

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 Metin Kale (@awsserverless). Metin is a Cloud Engineer at Generali Global Assistance North America, and an AWS Certified Developer. You might be familiar with Metin’s tweets (he’s the man behind the All Serverless Twitter account) posting about the latest news, tools, events, and other exciting developments happening in the serverless community. He’s also presented at AWS community events, and has been involved in various serverless meetups within the Chicago area. Thanks, Metin, for helping us grow the serverless community! 🙌

Final Thoughts 🤔

I hope you’re all staying safe out there. I know my family has started to go a bit stir crazy (and please don’t ask about the 2,000 piece puzzle we put together that was missing 10 pieces! 😡), but hopefully we’ll see brighter days soon.

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.

Take care,
Jeremy

P.S. 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.