Live data from Hacker News

Launch HN: Seed (YC W21) – A Fully-Managed CI/CD Pipeline for Serverless

news.ycombinator.com

1–10 of 109 posts

Launch HN: Seed (YC W21) – A Fully-Managed CI/CD Pipeline for Serverless

#1
Hi HN, we are Jay and Frank from Seed (https://seed.run).

We've built a service that makes it easy to manage a CI/CD pipeline for serverless apps on AWS. There are no build scripts and our custom deployment infrastructure can speed up your deployments almost 100x by incrementally deploying your services and Lambda functions.

For some background, Serverless is an execution model where you send a cloud provider (AWS in this case), a piece of code (called an AWS Lambda function). The cloud provider is responsible for executing it and scaling it to respond to the traffic needs. And you are billed for the exact number of milliseconds of execution.

Back in 2016 we were really excited to discover serverless and the idea that you could just focus on your code. So we wrote a guide to show people how to build full-stack serverless applications — https://serverless-stack.com. But once we started using serverless internally, we started hitting all the operational issues that come with it.

Serverless Framework apps are typically made up of multiple services (20-40), where each service might have 10-20 Lambda functions. To deploy a service, you need to package each Lambda function (generate a zip of the source). This can take 3-5 mins. So the entire app might take over 45 mins to deploy!

To fix this, people write scripts to deploy services concurrently. But some might need to be deployed after others, or in a specific order. And if a large number of services are deployed concurrently, you tend to run into rate-limit errors (at least in the AWS case)—meaning your scripts need to handle retries. Your services might also be deployed to multiple environments in different AWS accounts, or regions. It gets complicated! Managing a CI/CD pipeline for these apps can be difficult, and the build scripts can get large and hard to maintain.

We spoke to folks in the community who were using serverless in production and found that this was a common issue, so we decided to fix it. We've built a fully-managed CI/CD pipeline specifically for Serverless Framework and CDK apps on AWS. We support deploying to multiple environments, regions, using most common git workflows. There's no need for a build script. You connect your git repo, point to the services, add your environments, and specify the order in which you want your services to be deployed. And Seed does the rest. It'll concurrently and reliably (handle any retries) deploy all your services. It'll also remove the services reliably when a branch is removed or a PR is closed.

Recently we launched incremental deploys, which can really speed up deployments. We do this by checking which services have been updated, and which of the Lambda functions in those services need to be deployed. We internally store the checksums for the Lambda function packages and concurrently do these checks. We then deploy only those Lambda functions that've been updated. We've also optimized the way the dependencies (node_modules) in your apps are cached and installed. We download and restore them asynchronously, so they are not blocking the build steps.

Since our launch in 2017, hundreds of teams rely on Seed everyday to deploy their serverless apps. Our pricing plans are based on the number of build minutes you use and we do not charge extra for the number of concurrent builds. We also have a great free tier — https://seed.run/pricing

Thank you for reading about us. We would love to hear what you think and how we can improve Seed, or serverless in general!

Re: Launch HN: Seed (YC W21) – A Fully-Managed CI/CD Pipeline for Serverless

#5
tbh, didn't run into this problem yet.

Half of my project is being developed in serverless (the microservices) that add to the big monolith application.

I've basically implemented a "monorepo CI/CD" which mostly works fine for our needs. (With some limitations/bugs in Gitlab CI due to the monorepo design)

For the most part we probably don't get so many functions bundled together, thus avoiding the deployment limitations referred.

Only one serverless app is reaching any kind of limits (200 resources per Cloudformation template if I remember correctly)

https://pedrogomes.medium.com/gitlab-ci-cd-serverless-monore...

Re: Launch HN: Seed (YC W21) – A Fully-Managed CI/CD Pipeline for Serverless

#7

tbh, didn't run into this problem yet. Half of my project is being developed in serverless (the microservices) that add to the big monolith application. I've basically implemented a "monorepo CI/CD" which mostly works fine for our needs. (With some limitations/bugs in Gitlab CI due to the monorepo design) For the most part we probably don't get so many functions bundled together, thus avoiding the deployment limitati…

Yeah that makes sense. That's basically how Seed started. Thanks for sharing.

What we started noticing with teams that we were talking to (and our own experience) was that the build process started limiting our architecture choices. For example, we want functions packaged individually because it reduces cold starts. But because the builds take long we had to make a trade-off. And that didn't make sense to us.

Re: Launch HN: Seed (YC W21) – A Fully-Managed CI/CD Pipeline for Serverless

#9
I loved reading serverless-stack a couple of years ago; it was really helpful & convinced me to use serverless for a side-project that’s still going (with almost no expenses!).

I’m surprised to hear how many separate lambda functions each service in your example had. I understand the need to deploy each service independently... but to have +10 deployments within each service seems crazy to me. Is there a reason each service needs so many lambdas (vs deploying the service code as a single lambda function with different branches)?

Fwiw, I found it possible to get quite far with a single monolithic lambda function that defined multiple “routes” within it, similar to how an Express server would define routes & middleware.

Anyways, thanks for writing that PDF, and good luck with Seed!

Re: Launch HN: Seed (YC W21) – A Fully-Managed CI/CD Pipeline for Serverless

#10
Well done, and thanks for Serverless Stack! Awesome tutorial!

I completed it and it was excellent, and a lot of fun.

The only thing I would say is that a section on public user uploads would be amazing (e.g. avatars) as the perms and CDK stuff is a bit knotty for that (I eventually figured it out but it took a bit of trial and error).

Post reply on HN