# fvbock/endless

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/fvbock-endless).**

4,162 stars · 343 forks · Go · MIT

## Links

- GitHub: https://github.com/fvbock/endless
- awesome-repositories: https://awesome-repositories.com/repository/fvbock-endless.md

## Description

Endless is a zero-downtime server wrapper and process manager for Go HTTP servers. It replaces standard library listeners to coordinate process transitions and socket management, allowing binaries to be updated without dropping active network connections.

The project enables zero-downtime restarts by forking a new child process to take over network sockets before the parent process shuts down. It manages secure traffic flow by wrapping servers with TLS encryption layers and supports coordination for both standard network ports and Unix sockets.

The system handles the server lifecycle through signal-driven management, executing specific setup and cleanup functions during restarts. It ensures continuous availability through socket-handoff coordination and provides graceful shutdown mechanisms that drain active requests or terminate hanging connections after a defined grace period.

## Tags

### DevOps & Infrastructure

- [Zero-Downtime Upgrades](https://awesome-repositories.com/f/devops-infrastructure/zero-downtime-upgrades.md) — Provides a mechanism for updating service binaries without dropping active connections through socket handover. ([source](https://github.com/fvbock/endless#readme))
- [Zero-Downtime Binaries Upgrades](https://awesome-repositories.com/f/devops-infrastructure/graceful-shutdowns/zero-downtime-binaries-upgrades.md) — Replaces Go service binaries without dropping network connections by handing over sockets to a new process.
- [Connection Termination](https://awesome-repositories.com/f/devops-infrastructure/client-connectivity-tools/connection-termination.md) — Force-terminates lingering network connections after a defined grace period during server shutdown. ([source](https://github.com/fvbock/endless#readme))
- [Graceful Shutdowns](https://awesome-repositories.com/f/devops-infrastructure/graceful-shutdowns.md) — Ensures clean termination of Go servers by allowing in-flight requests to complete within a grace period.

### Networking & Communication

- [Socket Handoffs](https://awesome-repositories.com/f/networking-communication/socket-handoffs.md) — Transfers listening network ports between process instances to prevent dropping incoming requests during updates.
- [Unix Socket Handoffs](https://awesome-repositories.com/f/networking-communication/connection-managers/unix-socket-connections/unix-socket-handoffs.md) — Coordinates Unix socket transitions between parent and child processes to ensure continuous request handling.
- [High Availability Server Networking](https://awesome-repositories.com/f/networking-communication/high-availability-server-networking.md) — Ensures continuous service availability by running multiple server instances on different ports from a single binary.
- [Multi-Port Listeners](https://awesome-repositories.com/f/networking-communication/multi-port-listeners.md) — Manages multiple server listeners on different ports within a single binary to facilitate coordinated restarts.
- [Independent Server Instance Hosting](https://awesome-repositories.com/f/networking-communication/network-infrastructure-routing/network-proxying-tools/network-proxy-management/multi-instance-server-configurations/independent-server-instance-hosting.md) — Supports running multiple independent server instances with distinct sockets from a single binary to coordinate restarts. ([source](https://github.com/fvbock/endless#readme))
- [TLS Servers](https://awesome-repositories.com/f/networking-communication/tls-servers.md) — Implements a secure TLS server that maintains encrypted traffic flow during binary swaps and restarts.

### Operating Systems & Systems Programming

- [Go Server Process Managers](https://awesome-repositories.com/f/operating-systems-systems-programming/go-server-process-managers.md) — Provides lifecycle control for Go applications, coordinating process transitions and monitoring system signals.
- [Signal-Driven Process Spawning](https://awesome-repositories.com/f/operating-systems-systems-programming/process-signal-management/signal-driven-process-spawning.md) — Uses operating system signals to trigger the spawning of new process instances for seamless binary upgrades.
- [System Signal Handling](https://awesome-repositories.com/f/operating-systems-systems-programming/system-signal-handling.md) — Defines custom routines to handle operating system signals for application state management and cleanup. ([source](https://github.com/fvbock/endless#readme))

### Software Engineering & Architecture

- [Binary Swaps](https://awesome-repositories.com/f/software-engineering-architecture/process-forking-strategies/binary-swaps.md) — Enables updating server binaries by forking a new process to take over network sockets before the parent exits.

### Web Development

- [HTTP Server Implementations](https://awesome-repositories.com/f/web-development/http-server-implementations.md) — Provides a custom HTTP server listener implementation that manages system signals and graceful process handovers.

### Security & Cryptography

- [TLS Session Wrapping](https://awesome-repositories.com/f/security-cryptography/handshake-protocols/handshake-validations/tls-certificate-validations/tls-session-wrapping.md) — Wraps standard HTTP servers with TLS encryption layers while preserving the ability to perform process rotations.
- [Security & HTTPS](https://awesome-repositories.com/f/security-cryptography/network-infrastructure-security/web-network-security/security-https.md) — Manages TLS certificates and encryption protocols to maintain secure communication during seamless binary swaps.
- [TLS Traffic Encryption](https://awesome-repositories.com/f/security-cryptography/tls-traffic-encryption.md) — Secures communication channels using TLS certificates while maintaining stability during server restarts. ([source](https://github.com/fvbock/endless/tree/master/examples))

### System Administration & Monitoring

- [Connection Draining](https://awesome-repositories.com/f/system-administration-monitoring/terminal-session-managers/graceful-session-draining/connection-draining.md) — Implements network connection draining to allow active HTTP requests to finish before the server process terminates.
