Product Guy, Serverless Advocate & Startup Veteran

My name is Jeremy Daly. I appreciate the visit. 👍 I’ve been managing the development of complex web and mobile applications for businesses across the globe for over 20 years. I’m currently the Chief Technology Officer at AlertMe, but I always keep myself busy with several side projects and consulting clients. I’m also an AWS Serverless Hero.

I write a lot about serverless and I like to share thoughts and stories about programmingproduct managemententrepreneurship and productivity. Sometimes I’ll write reviews or have random thoughts that I need to get out of my head. I also like to post a how-to article every once in a while. Feel free to jump in to one of the categories above, view all my posts, or view my latest posts below.

If you want to keep up with what I’m working on, you can follow me on TwitterGithub and Facebook.

Also, if you’re interested in serverless, please subscribe to Off-by-none, a weekly newsletter that focuses on all things serverless, and be sure to listen to Serverless Chats, a weekly podcast that discusses all things serverless.


My Latest Posts:

Announcing the Serverless Reference Architectures Project

Serverless gives us the power to focus on delivering value to our customers without worrying about the maintenance and operations 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.

Almost 2 years ago now, I wrote a post on Serverless Microservice Patterns for AWS that became a popular reference for newbies and serverless veterans alike. The capabilities of serverless have changed dramatically since then, opening up a ton of new patterns and possibilities. Today I’m announcing the Serverless Reference Architectures Project. This project is intended to capture, share, explore, and debate the patterns and practices being used in serverless production applications today.

Continue Reading…

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…

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…

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…

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

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

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…

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…

The Simple Web Service

A basic of pattern for creating a serverless API or web service. This example uses DynamoDB as the database because it scales nicely with the high concurrency capabilities of AWS Lambda.

Interactive Reference Architecture

Click on the components or numbered steps below to explore how this architecture works.

This is the most basic of patterns you’re likely to see with serverless applications. The Simple Web Service fronts a Lambda function with an API Gateway. I’ve shown DynamoDB as the database here because it scales nicely with the high concurrency capabilities of Lambda.

Deploy this Pattern

Below are the basic configurations for deploying this pattern using different frameworks and platforms. Additional configuration for your environment will be necessary. The source files and additional examples are available in the GitHub repo.

  • Are you a CDK Guru?
    Would you like to contribute patterns to the community?
    Check out the Github repo!

The Scalable Webhook

Simple pattern for handling high-velocity or unpredicatable workloads while mitigating downstream pressure.

Interactive Reference Architecture

Click on the components or numbered steps below to explore how this architecture works.

If you’re building a webhook, the traffic can often be unpredictable. This is fine for Lambda, but if you’re using a “less-scalable” backend like RDS, you might just run into some bottlenecks. There are ways to manage this, but because Lambda supports SQS triggers, we can throttle our workloads by queuing the requests and then using a throttled (low concurrency) Lambda function to work through our queue. Under most circumstances, your throughput should be near real-time. If there is some heavy load for a period of time, you might experience some small delays as the throttled Lambda chews through the messages.

You’ll also want to handle failed messages using a Dead Letter Queues (DLQ). The SQS Poller will adjust its polling frequency based on your Lambda function’s concurrency. You’ll need to configure your redrive policies to appropriately handle failed messages.

Deploy this Pattern

Below are the basic configurations for deploying this pattern using different frameworks and platforms. Additional configuration for your environment will be necessary. The source files and additional examples are available in the GitHub repo.

  • Are you a CDK Guru?
    Would you like to contribute patterns to the community?
    Check out the Github repo!

The Strangler Pattern

This pattern lets you route requests to your legacy APIs, while allowing you to direct specific routes to new serverless services as you add them.

Interactive Reference Architecture

Click on the components or numbered steps below to explore how this architecture works.

The Strangler is another popular pattern that lets you incrementally replace pieces of an application with new or updated services. Typically you would create some sort of a “Strangler Facade” to route your requests, but API Gateway can actually do this for us using “AWS Service Integrations” and “HTTP Integrations”. For example, an existing API (front-ended by an Elastic Load Balancer) can be routed through API Gateway using an “HTTP” integration. You can have all requests default to your legacy API, and then direct specific routes to new serverless service as you add them.

Deploy this Pattern

Below are the basic configurations for deploying this pattern using different frameworks and platforms. Additional configuration for your environment will be necessary. The source files and additional examples are available in the GitHub repo.

  • Are you a CDK Guru?
    Would you like to contribute patterns to the community?
    Check out the Github repo!

Off-by-none: Issue #96

Serverless, distributed, and vendor neutral applications… 🚀

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

Last week, we saw how EFS integration makes serverless even better, got a lesson in why serverless is for everyone, and looked at the internals of DynamoDB. This week, we learn how serverless applications can be truly vendor neutral, see how EFS finally makes serverless ML a reality, and we get a master class in building serverless applications for the experts at AWS. Plus, we have a plenty of great content from the serverless community.

Serverless News & Announcements 📣

Check out the TriggerMesh guide “What Every CIO Needs to Know about Serverless” for feature comparisons of major offerings and an introduction to basic concepts like cloud native and microservices. Use it to inform your peers / managers on serverless benefits and available options. Sponsored

Introducing Vendia Share
When Tim Wagner launches something new, it’s probably best that we all pay attention. His new project, Vendia, is now in preview and it looks like it could solve a lot of problems for a lot of people.

Announcing Redis as a Code! Lambda Store Terraform Provider
You can now create your serverless Redis using Terraform. IaC is a must have, so it’s good to see them moving in that direction.

State of Serverless 2020
Coding Sans is running a State of Serverless 2020 survey. It only takes about 8 minutes to fill out, so give it a look when you get a chance.

Fastly, Inc. (FSLY) announces extension of its platform’s observability features to its Compute@Edge serverless compute environment
Like I said last week… pay attention to Fastly. Lots of really cool stuff happening there.

Serverless Stories 📖

Building Firewatch Australia
Mike Leonard has a great series on how he built a serverless app using Cloudflare and GCP to help others navigate the Australian bushfires.

How Liberty Mutual’s Cloud Journey Led to Going Serverless
Great piece with Dave Anderson discussing how and why Liberty Mutual decided to move towards serverless. My favorite line in here is “Code is a liability. The less code we write the better.” Totally agree.

The Ultimate AWS Gotcha to watch out for when launching a product
Brian Foody spent some time trying to figure out why 2FA verification codes were no longer being sent to his users. After some digging, he figured out the problem had to do with AWS service availability based on regions. He offers some good learnings at the end, especially the bit about not feeling bad if you don’t understand all of AWS. I don’t think anyone does.

Serverless Use Cases 🗺

Why use AWS Lambda for Data Science?
Dave Parr explains why Data Science and AWS Lambda work well together, and even gives you a quick tutorial for building a “hello world” data science function.

Who Said That: A tweet guess game implemented with serverless stack on Netlify
No one ever said serverless use cases had to be boring, and as Sven Anderson shows us with his “Who Said That” game, serverless likely makes for a great tool for little one-offs like this. If your game goes viral, I wouldn’t want to be the one trying to scale that with EC2 instances.

AWS Automation: Narrowing security group rules
Ed Reinoso is using Lambda to automate closing all potential threatening rules that might jeopardize the security of his EC2 instances. And you can too.

Serverless Concepts 🏗

Automated end-to-end observability for microservice environments
Epsagon enables full-depth observability of complex serverless and containerized architectures, delivering the automation needed to instantly identify, troubleshoot, and resolve issues before they affect production. Try free today. Sponsored

Managing backend requests and frontend notifications in serverless web apps
Another excellent post by James Beswick and an absolute MUST READ for anyone building applications with serverless backends. He walks you through moving from the common synchronous model to a much more resilient asynchronous one, and includes real-time communication just for good measure.

Can Lambda and RDS Play Nicely Together?
Serkan Özal explains possible problems that can occur when using RDS with Lambda, and offers some solutions and alternatives.

Lambda Cold Starts, why I don’t see the problem
Gert Leenders has some thoughts on cold starts and points out that it’s possible that Lambda might not be the solution to your problem.

Enterprise Serverless 🚀 (Series)
Lee James Gilmore put together an excellent series on Enterprise Serverless that covers tooling, architecture, AWS limits & limitations, and more. Plus there’s an awesome list of useful resources. 😉

6 Tips for Deploying AWS Serverless Node.js Applications to Production
Leroy Chan wrote an in depth article that offers a number of tips for building production-ready serverless applications along with a boilerplate template to get you going. I’m still 50/50 on the right use cases for Lambda Layers, but overall, I think this is a good set of tips.

Serverless Tutorials 👷‍♀️

Interactive Slack bot using AWS Serverless
Simple walkthrough for setting up a Slack bot using AWS Lambda and API Gateway by Aswin Kumar Rajendran.

Automatic file splitting on S3 buckets at $0 cost
Cool trick by Dimitris Traskas that shows you how to use a Lambda function with a bash custom runtime to stream large files from S3, split them into smaller files, and push back to another S3 bucket.

Contact Forms with Netlify Serverless Functions
Building HTML forms is the worst, amiright? Luckily, services like Netlify have this functionality built in. Chris Held walks you through it.

How to Create Serverless Functions with OpenFaaS in 17 Steps
I like to sprinkle things in here for the k8s crowd every once in awhile, and I thought this was a good article to share. I’m not going through all these steps, but they are very well documented if you want to.

Building a Conversational AI Chatbot With AWS Lambda Function and Amazon EFS
EFS integration with AWS Lambda opened up quite a few new use cases, and Machine Learning is a big one. Yi Ai shows you how to use SageMaker exports to EFS to build a conversational chat bot with Lambda.

Serverless Reads 🤓

Automate code reviews and identify expensive lines of code with Amazon CodeGuru
Previously launched in Preview last re:Invent, Amazon CodeGuru is now generally available. CodeGuru uses machine learning to perform automated code reviews and recommend application optimizations. With CodeGuru, you can identify your most expensive lines of code and find and fix code issues such as resource leaks, potential concurrency race conditions, and wasted CPU cycles—faster and with less frustration. Sponsored

Using Microservice Patterns in an increasingly Serverless world
Craig Godden-Payne outlines three different patterns, ultimately landing on orchestration via Step Functions as a preferred solution. Step Functions certainly have their place, but I wouldn’t be so quick to dismiss the power and autonomy of an event-driven, asynchronous approach.

Serverless and the future of computing
Great write up by Erik Stadigh of the London Enterprise Tech Meetup. Lots of smart serverless people talking about what serverless means for companies and the cloud, and what it’s going to look like in the future.

Applying the Well-Architected Framework, Small Edition
Awesome post by Mark Nunnikhoven that explains why there are no silver bullets with cloud. Using the Well-Architected Framework to evaluate your project can help give you new perspective, which means you might actually choose the right tool for the job.

What problems does serverless solve?
Um, all of them? Slobodan Stojanović has a great piece that explains the value of serverless using Wardley Maps in the context of a small start up. Lots of insight in here in regards to what your startup should be spending their time on.

The three Fs of cloud pricing
Not particularly about serverless, but a worthwhile read nonetheless. I’ll be interested to see what David is working on that addresses some of these issues.

Podcasts, videos, and more… 🎧

Episode #55: Serverless PHP using Bref with Matthieu Napoli
In this episode, I chat with Matthieu Napoli about why PHP is still an important part of the web landscape, how Bref can help you make existing PHP workloads serverless, and whether or not PHP devs will embrace serverless design patterns. Watch on YouTube.

ICYMI: Serverless-First Function
Here are all the recordings and slides from the recent AWS Serverless-First Function event. Lots of great stuff in here!

The Cloudcast: Building a Next-Generation of Serverless
Tim Zonca talks about the next evolution of the serverless developer experience, the maturity of customer adoption, how much customers appreciate not having to manage infrastructure, and how to manage the journey to serverless.

Patterns and Practices for Building Resilient Serverless Applications
Excellent presentation by Yan Cui from a recent AWS Community Day that gives you a solid overview of how to build resilient serverless applications.

New from AWS 🆕

Find your most expensive lines of code and improve code quality with Amazon CodeGuru – now generally available
Amazon CodeGuru is a developer tool powered by machine learning that provides intelligent recommendations for improving code quality and identifying an applications’ most expensive lines of code. Read more.

Announcing Amazon Aurora Serverless with MySQL 5.7 compatibility
Amazon Aurora Serverless is now available with MySQL 5.7 compatibility. MySQL 5.7-compatible Aurora offers enhancements such as JSON support, spatial indexes, and generated columns, and is up to 5X faster than MySQL 5.7.

Amazon Rekognition Custom Labels now supports single object training
Amazon Rekognition Custom Labels is an automated machine learning (ML) feature that enables customers to quickly train their own custom models for detecting business-specific objects and scenes from images – no ML experience is required.

Amazon DocumentDB (with MongoDB compatibility) adds sixteen additional Amazon CloudWatch metrics for monitoring MongoDB opcounters, connections, cursors, operations on documents and index cache hits
For all of you that can’t let go of MongoDB.

Amazon Athena adds support for Partition Projection
Amazon Athena has added support for Partition Projection, a new functionality that you can use to speed up query processing of highly partitioned tables and automate partition management.

User management and other improvements added to Serverless Developer Portal
You can now manage users of the Amazon API Gateway Serverless Developer Portal directly from the portal’s admin interface.

Announcing Amazon Honeycode
Amazon Honeycode, which is available in beta, is a fully managed service that allows customers to quickly build powerful mobile and web applications – with no programming required. There have been some opinions on this. Read more.

Amplify Console adds support for automatically creating and deleting custom sub-domains for every branch deployment
Another very cool feature from the Amplify Console team.

Serverless Tools 🛠

Run Serverless Deno With Vercel
I’m a big fan of Deno and Vercel, and now you can use the new vercel-deno runtime to make it super easy to deploy serverless functions implemented using Deno.

SAMBER, a Full-Stack developer’s dream come true
SAM + Ember.js? 🤷‍♂️

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.

July 6, 2020 – Serverless for Frontend Developers (Course)

October 1-2, 2020 – ServerlessDays Hamburg 2019

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 Sander van de Graaf (@svdgraaf). Sander is a Principal Solutions Architect at Ookla, the global leader in internet testing, data and analysis. Sander also is the owner of 42Unicorns, acting as architect, developer and advisor for several clients. Though he has more than 15 years of experience with building and deploying large scale applications, his most recent focus and roles have been in serverless solutions. Sander has written many pieces about serverless on his personal website, and he’s also been a prolific speaker across the globe. He’s presented at Serverless Conf in New York, participated in serverless meetups in his home country, the Netherlands, and spoken at other events like Python Rotterdam, PyAmsterdam, and eqNation about serverless. Thank you, Sander, for being a part of this great community! 🙌

Final Thoughts 🤔

I recently launched the Serverless Chats Insiders program that allows listeners to submit questions for upcoming guests. If you’re a podcast listener (or you just want to see who my future guests are), then make sure you sign up. In addition to that, I have a lot of stuff in the pipeline that I hope to share soon. Stay tuned.

I hope you enjoyed this newsletter. We’re always looking for ideas and feedback to make it better and more inclusive, so please feel free to reach out to me via Twitter, LinkedIn, Facebook, or email.

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.