Zero-Downtime deployments

Open
#16 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
25/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Active
Tech stack
rust

Research direction

Start by tracing how flakelet starts and stops services and how it communicates with the HTTP proxy; the issue does not name specific files or tests. The proposed work involves running old and new instances side by side, checking the new instance's health, and routing traffic only after it succeeds. Done means a deployment can switch versions without downtime and stop the old instance only after traffic has moved.

Written by the indexing model from the issue text.

Description

Do you think it would be possible to add zero-downtime deployments to this?
What I mean by this that it allows the new version to start alongside the old version, then if the healthcheck succeds traffic is routed to the new version and the old version is only then stopped.

The tricky parts in this are:

  • allow two instances of the services to listen on the same port (probably solved by each one running it's own namespace)
  • from the outside, each version is accessible through a different port or IP which the flakelet service would need to keep track of and somehow communicate it to the http proxy (this would probably be possible by some http contract magic)

I have services that i update multiple times a day and i don't want to have a downtime each time.
Currently, we do this with kubernetes, but i'm looking for a simpler solution.

Dominant language
Rust
Stars
50
Forks
3
PR merge metrics
No merged PRs in 30d

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from Mic92/flakelet

All issues in Mic92/flakelet

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.