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.
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.
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.
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 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.
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.
Share this newsletter with your friends and coworkers!
Off-by-none is a weekly email newsletter that focuses on the technical details of building applications and products in the cloud using serverless technology. Together we can become better developers and product people by making fewer mistakes as we learn from each other. Off-by-none is the idea that we can become exceptional at what we do, if we are willing to put in the work. Join me on this journey as we help the community work to develop best practices, share our ideas, and learn to build better cloud-based software.
I respect your privacy and I will NEVER sell, rent or share your email address.