/ tag
Architecture
3 posts on this topic.
-
One door for every deploy
Railyard had nineteen places that could start a deploy, each with its own copy of the rules. How I moved every one of them behind a single model method, and the table-driven test that keeps them there.
-
Deploys that survive a dropped stream or a control-plane restart
How I moved each Railyard build into an agent-side session that outlives the gRPC stream, so a ping timeout or a control-plane release no longer kills a customer's deploy, and the Go context bug that came with it.
-
Why Railyard is a Rails app and a Go agent joined by one proto file
Railyard splits into a Rails control plane that decides and a Go agent that does the work on each server, joined by a gRPC contract. How the contract is laid out, how build logs stream, and what the split costs.