aayushshah15
How Blacksmith runs more than 10M CI jobs a day
This is on our radar! The primitives mentioned in this blog post are fairly general and allow us to support various types of artifact storage and caching protocols.
How we built a logging platform for GitHub Actions with ClickHouse
[cofounder of blacksmith here]
This is exactly one of the symptoms of running CI on traditional hyperscalers we're setting out to solve. The fundamental requirement for CI is that each job requires its own fresh VM (which is unlike traditional serverless workloads like lambdas). To provision an EC2 instance for a CI job:
- you're contending against general on-demand production workloads (which have a particular demand curve based on, say, the time of day). This can typically imply high variance in instance provisioning times.
- since AWS/GCP/Azure deploy capacity out as spot instances with a guaranteed pre-emption warning, you're also waiting for the pre-emption windows to expire before a VM can be handed to you!
Fun fact, we decided to call it "sticky disks" as a result of this old HN comment thread: https://news.ycombinator.com/item?id=39957753
Show HN: Sticky Disks in GitHub Actions
Ask HN: How do you insure against regressions in performance critical codepaths?
If you work on performance-critical systems like database software or language runtimes, what sort of tooling do you use to insure against regressions in the critical codepaths in your system? Are such checks performed in CI or right before some sort of a release or elsewhere?Tangentially, for folks who spend a lot of time benchmarking systems on non-bare metal instances on AWS EC2, how often...
OOC, what are the main objections against?
Can you provide any sources for this claim? We're running Firecracker in production over at blacksmith dot sh and haven't been able to reproduce any perf regressions in Firecracker over CH in our internal benchmarking.
Fly.io Outage
Stacked Diffs Can Be Expensive: Why You Should Do It More
Additionally, you'd have to ensure some isolation across your test runs (either by running the test suites in ephemeral containers, or VMs) which is additional engineering work for something that isn't business critical.
This unfortunately does not work for orgs that have, say, more than 20 engineers. The core issue is that once you have a test suite large enough to have ~30 shards, you only need one engineer `git push`ing once to saturate those 1-2 expensive machines you've got sitting in the office.
The CI workload is quite amenable to "serverless" when you get to a large enough org size, where most of the time you actually want to pay nothing (i.e. outside your business hours) but when your engineers are pushing code, you want 1500 vCPUs on-demand to run 4 or 5 test suites concurrently.
"But YC takes 7% of my company " – Our experience of YC W24
Local Docker registry caches in GitHub Actions
it's unfortunate the amount of expertise / tinkering required to get "incrementalism" in docker builds in github actions. we're hoping to solve this with some of the stuff we have in the pipeline in the near future.