Graceful upgrades in Go
This text discusses the concept of "graceful upgrades" in systems programming, specifically for web servers. It explains how to swap out a process's configuration and code while it is running without causing any noticeable errors or downtime. The author presents various methods for achieving this, including using `Exec()`, `ListenWithReusePort()`, and the NGINX approach of fork and exec with shared sockets. They also introduce their own Go library called tableflip, which implements graceful upgrades in a manner similar to NGINX. The text covers key points such as race conditions, socket sharing, and the need for flexibility in handling different socket-based protocols.
Company
Cloudflare
Date published
Oct. 11, 2018
Author(s)
Lorenz Bauer
Word count
1677
Language
English
Hacker News points
8