It's a 1 to 1 TCP proxy which lets you switch the backend via an HTTP interface (on a different port than the one being proxied).
Typical workflow will be:
- Start backend on internal port
- Start seamless and proxy exposed port to backend
- When upgrading start new backend on different external port
- Tell seamless to switch backends
go install bitbucket.org/tebeka/seamless
or if you don't have the go runtime, you can download the binaries.