Skip to content

Split apart web server and build server #795

Closed
@jyn514

Description

@jyn514

Currently, all web requests are served from the same server that performs the crate builds. This has given us trouble in the past, since builds consume a lot of resources, driving up response times for web requests. It would be useful to instead have different servers for the website and builds.

Possible implementation:

  • The web server continues having primary access to the database. Builders don't have access at all, but instead receive webhooks (or similar) telling them to start a build. When the build finishes, they report back to the main server.
  • We have a 'heartbeat' mechanism similar to crater: if a build server doesn't send a message to the web server in 5 minutes, we mark it as crashed
  • We have a new state for crates in the queue: queued, finished, and assigned, where assigned means there is a build server currently building that crate (Add crates to the database before building them #1011).

Benefits:

@pietroalbini has experience with implementing this for crater and is helping a lot with the design aspect.

Metadata

Metadata

Assignees

No one assigned

    Labels

    E-hardEffort: This will require a lot of workS-blockedStatus: marked as blocked ❌ on something else such as an RFC or other implementation work.S-needs-designStatus: There's a problem here, but no obvious solution; or the solution raises other questions

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions