12 ms·
Launch HN: Seed (YC W21) – A Fully-Managed CI/CD Pipeline for Serverless
Hi HN, we are Jay and Frank from Seed (https://seed.run 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 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 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!
- dataminded 6y agoNice. Very real problem. I'm excited to check this out.
- jayair 6y agoAwesome, would love to hear what you think once you get a chance to take a look. jay@seed.run
- jayair 6y agoJust to add, if you have any questions about Seed or need some help with your serverless apps, send me an email: jay@seed.run or just put something on my calendar: https://calendly.com/jayair https://calendly.com/jayair
- PaywallBuster 6y agotbh, 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-monorepo-3a3ff672056a https://pedrogomes.medium.com/gitlab-ci-cd-serverless-monore...
- jayair 6y agoYeah 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.
- seanemmer 6y agoDo you plan on supporting Google Cloud Functions?