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…

Off-by-none: Issue #97

Serverless Reference Architectures for the Rest of Us… 👩‍🏫

Welcome to Issue #97 of Off-by-none. Thanks for joining us this week!

Last week, we learned how serverless applications can be truly vendor neutral and how EFS is finally makes serverless ML a reality. This week, we announce a new way to explore serverless architectures, learn how to debug and load test serverless applications, and we finally get “connection pools” from Lambda. Plus, we have lots of awesome content from the serverless community.

Serverless News & Announcements 📣

Webinar: Building Intelligent Application Flows in the Cloud and On-premises with TriggerMesh
Join us July 30 as we build some example Bridges. One will perform sentiment analysis on ZenDesk tickets using AWS, another will execute an Oracle Cloud function in response to a change in an on-premises OracleDB. See you there! Sponsored

Announcing the Serverless Reference Architectures Project
Shameless plug here for the new Serverless Reference Architectures Project that I just launched. I have been sharing and discussing serverless microservice patterns for years, and finding a better, more interactive way to share them has been a goal of mine for quite some time. This is just the first step, but I hope people find it useful and will contribute their own patterns and examples to help others.

Fauna Raises $27 Million to Continue Providing Cutting Edge Solutions for Developers
I love seeing companies in the serverless space raising money. It’s inevitable, serverless will (someday) take over the world. Will Fauna be the global datastore of choice when that happens?

Vendia raises $5.1M for its multi-cloud serverless platform
No surprises here. Tim Wagner, and the former head of blockchain at AWS, Shruthi Rao, are the ultimate serverless dream team. This is another company/space to pay attention to.

Dfinity demo’s its TikTok clone, opens up its ‘Internet Computer’ to outside developers
Speaking of blockchain, what do you get when you cross serverless with blockchain, and then mix in some WebAssembly? Apparently an “Internet Computer” that can run distributed applications without servers, databases, or firewalls.

Production-Ready Serverless is back (with improved curriculum)!
Yan Cui’s course was groundbreaking when it first launched, now it has the benefit of feedback and iteration on its side. Not only that, but he’s offering it in a much more interactive way. This is probably the best serverless training resource out there.

Gartner Names Lumigo a Cool Vendor in Performance Analysis for Cloud-Native Architectures
When you’re working hard behind the scenes to try and build something amazing, getting positive feedback like this is important. And for the record, Lumigo has been in my “Cool Vendor” column for quite some time. 😉

Epsagon Achieves Privacy Shield Framework Certification
Certifications like this are a sign of maturity, so congrats to Epsagon for doing the work to not only bring you an awesome product, but also to bring it up to the highest standards of security and privacy.

Serverless Stories 📖

Serverless Web Apps in Python
A good collection of tips and tricks based on what Sanjay Siddhanti learned while using Zappa to build serverless applications.

Serverless-Side Rendering With Lambda at Edge
Great use case and example explained by Joe Duran that uses Lambda@Edge to render static pages for their application. Interesting note in there about solving the problem of competitors scraping their public API. SPAs can be great for many reasons, but making data easily accessible via an API, might not be the best strategic choice.

Serverless Use Cases 🗺

Monitor & Debug Serverless with 30-Second Auto-Instrumentation
Complete observability over your serverless environment with no code changes required. With one-click distributed tracing, Lumigo lets you effortlessly find & fix issues in serverless and microservices environments. Get serverless-specific smart alerts before they impact performance or cost. Sign up for a free account and get up & running in minutes. Sponsored

Serverless BERT with HuggingFace and AWS Lambda
Awesome post by Philipp Schmid that shows you how to build a serverless question-answering API with BERT and HuggingFace. These ML use cases for serverless are great.

Create a COVID-19 dashboard with Angular 9+Serverless+AWS Lambda
Angular would not be my first choice, but to each their own. This post shows how to create a server-side rendered backend that loads a datasource and generates graphs using AWS Lambda.

Send Emails Serverlessly With Node.js, Lambda, and AWS SES
Another serverless use case that is becoming a standard go-to solution. Angad Singh shows you how to set up and test this in a sandbox environment. This post just scratches the surface of what’s possible.

Serverless Concepts 🏗

How to Debug AWS Lambda Performance Issues
Latency can have a huge impact on the business metrics of your applications, so making sure you are achieving an acceptable level of performance is hugely important. Yan Cui has another excellent post that dives deep into how to debug these issues and optimize your use cases.

Protect your RDS MySQL DB from AWS Lambda Scalability
Matt Coulter has added a new pattern to his CDK Patterns site that implements the new RDS Proxy service. The code is available in Python and Typescript. Good stuff.

Deletion Policy To Keep Serverless Stack Safe
Simple, yet powerful reminder by Rajesh Kankran to set deletion policies for production AWS services so that you don’t accidentally lose data. It’s okay to admit that it happened to you.

Challenges of Going Serverless (2020 edition)
This is a good overview by Mariliis Retter that outlines some of the common challenges of developing serverless applications. I totally agree that serverless has many challenges and causes for confusion due to the unknowns. But it’s still totally worth it.

Disaster Recovery strategies using AWS Serverless Services
This is a good read by Harshavardhan Ghorpade that explains the importance of Disaster Recovery and how serverless helps us achieve that at a much lower cost that traditional serverfull environments.

Serverless Tutorials 👷‍♀️

Build serverless apps that seamlessly connect to MySQL & PostgreSQL databases
Amazon RDS Proxy is a fully managed, highly available database proxy that allows applications to pool and share database connections, improving database efficiency, application scalability, and security. Previously launched in Preview at AWS re:Invent in 2019, RDS Proxy is now generally available and can be enabled for MySQL and PostgreSQL workloads through both the Amazon RDS and AWS Lambda consoles. Sponsored

Load testing a web application’s serverless backend
It’s all fine and good to say that serverless can easily scale, but do you know if your architecture actually can? This is why load testing is so important to confirm your system’s scalability before you realize it during a Black Friday sale. James Beswick has another excellent post that walks you through setting up the tools and running the experiments to make sure you serverless system will handle anything you throw at it.

It’s simple with AWS: A step by step serverless fan-out architecture guide
Rafael Rodriguez has a great tutorial that shows you how to implement the fan-out pattern using AWS serverless services. He’s using an SNS topic in this example, but EventBridge could also be another effective way to implement it.

Handling webhooks with EventBridge, SAM and SAR
Slobodan Stojanović explains the evolution of webhook implementations at Vacation Tracker and then shows you how to create a SAR app that publishes incoming message to an EventBridge event bus for further processing.

Deploying Serverless Golang APIs With The AWS CDK
Go is screaming fast on Lambda, so it’s becoming a popular choice for developers building serverless applications. Dennis O’Keeffe has created a tutorial that shows you how to deploy a Golang API using the AWS CDK.

Chromium and Selenium in AWS Lambda
Headless browser running in an AWS Lambda function? No problem. Vittorio Nardone shows you how to get Chromium up and running and then how to use Selenium to run some tests.

Serverless Reads 🤓

The GoLD Stack
We don’t see enough articles that look at serverless from a management perspective, and as we see more developers adopting it, I think it’s wise to be able to effectively communicate the value “up-the-stack”. Zef Hemel put some thoughts out there on this as it relates to using Go with Lambda and DynamoDB.

The truth about Serverless
How can you not click on a title like this? But seriously, Gareth Thomas outlines the perceived pros and cons of serverless and then offers a reality check for each one.

You’re not ready for feature flags
Another batch of good advice from Forrest Brazeal about making sure you nail down the basics of cloud deployments before you go ahead and try getting all fancy-like.

Why do so few vendors in the serverless space offer metered billing?
Interesting observation by Paul Swail about why most third-party serverless products are using a quota-based billing model instead of a more “serverless” pay-per-use model. He partially answers his own question, but definitely something to think about if you’re building a business in this space.

My Time as a Black Woman Software Engineer at Capital One
Though it isn’t about serverless, I had to include this incredibly brave post that recounts the horrific experience suffered by a black woman working as a software engineer. As I read this, my heart sank to the floor. The ideas and contributions of underrepresented people are far too often marginalized or hijacked by the current culture in tech. If you witness anything like this (even the things that may seem small to you), please speak out and stand up for changing toxic cultures.

Podcast, videos, and more… 🎧

Episode #56: Accelerating DynamoDB Workflows using Dynobase with Rafal Wilinski
In this episode, I chat with Rafal Wilinski about the challenges developers face when using DynamoDB, why DynamoDB makes sense for applications big and small, and why we need more tools like Dynobase to make working with your data easier. Watch on YouTube.

How Vendia’s founders aim to leverage serverless and blockchain to solve data sprawl
As I said before, Tim Wagner and Shruthi Rao are a serverless force to be reckoned with. This is a good article (and video interview) that goes much deeper into their vision and what Vendia is capable of.

New from AWS 🆕

Amazon RDS Proxy is Generally Available
Amazon RDS Proxy, a fully managed, highly available database proxy for Amazon Relational Database Service (RDS), is now generally available with MySQL and PostgreSQL compatibility. I think this is a good solution for those that need a better way to manage their connections from Lambda. Read more here

Amazon QuickSight now supports Lake Formation–protected Athena data sources
QuickSight users can now visualize their Lake Formation–protected Athena data, natively using the benefits that come with Lake Formation, including table and column-level access controls.

AWS AppSync introduces new 12xlarge instance for server-side API caching
AWS AppSync is a managed GraphQL service that simplifies application development by letting you create a flexible API to securely access, manipulate, and combine data from one or more data sources.

Amazon Elastic File System increases file system minimum throughput
Amazon Elastic File System (Amazon EFS) file systems using the default bursting throughput mode now have a minimum throughput of 1 MiB/s.

Amazon DocumentDB (with MongoDB compatibility) now supports T3 medium instances
Amazon DocumentDB (with MongoDB compatibility) is a fast, scalable, highly available, and fully managed document database service that supports MongoDB workloads. Amazon DocumentDB makes it easy and intuitive to store, query, and index JSON data. Amazon DocumentDB now supports t3.

Serverless Tools 🛠

DRY (Don’t Repeat Yourself) on the cloud with Pulumi
This is a nice write up about using Pulumi to build repeatable cloud deployments. If you’re not familiar with Pulumi, it’s like a CDK for all major cloud vendors.

serverless-ghost
Jeshan Babooa ported the Ghost project to Lambda, which should give you a way to run the blogging platform serverlessly. It is very early on and there are some expected issues, but it’s a good start.

Koyeb Serverless Data Processing Platform Early Access
I came across this article about a new tool for easily building serverless workflows. Looks really interesting.

Thoughts from Twitter 🐦

So, I was going to write up a whole blog post about DynamoDB performance in Lambda with Deno. But ultimately the whole things can be represented by this picture. ~ Matthew Bonig
Click to see the picture, but it doesn’t take a thousand words to describe it. Deno is not ready for primetime with Lambda and DynamoDB.

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 9, 2020 – Debugging AWS Lambda Performance Issues

July 9, 2020 – Good Morning Serverless with Tom McLaughlin (I’ll be his guest)

July 30, 2020 – Building Intelligent Application Flows in the Cloud and On-premises with TriggerMesh (Webinar)

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 Josh Carlisle (@joshcarlisle). Josh is a Senior Sales Engineer – Partner Channel for AppDynamics, and a Microsoft MVP (Azure). In his role at AppDynamics, Josh provides technical and sales enablement to strategic partners implementing AppDynamics on the Azure platform. Based in Raleigh, he’s active in the local serverless community, co-organizing and participating in meet-ups, user groups, and code camps. Josh has also spoken at conferences around the country, including ServerlessDays events in Austin, Nashville and Amsterdam. Thank you, Josh, for sharing your knowledge and passion! 🙌

Final Thoughts 🤔

I mentioned in tweet that it’s getting harder and harder to narrow down all the amazing serverless posts that are being published every week. As you’ve probably noticed, this newsletter gets quite long, and I’m only including a fraction of the posts that I collect and review. I have a lot of ideas about how to make this better, so stay tuned for some upgrades to the Off-by-none experience coming soon.

In the meantime, be sure to check out the Serverless Reference Architectures Project and contribute your thoughts, ideas and patterns. The more examples, the better, so people can learn and experiment with the tools and languages they are comfortable with. #ServerlessForEveryone

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.

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.

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!