OpenGSLB Future Features Roadmap
This document captures planned features that have been identified but deferred to future sprints. Each feature includes context on why it was deferred and any architectural considerations.
Last Updated: December 2025 (Post-Sprint 3)
Recently Completed (Sprint 3)
The following features were previously on this roadmap and are now complete:
Feature |
Completed In |
Notes |
|---|---|---|
Hot Reload (SIGHUP) |
Sprint 3 |
Full implementation with validation |
TCP Health Checks |
Sprint 3 |
Connection-based verification |
Weighted Routing |
Sprint 3 |
Proportional traffic distribution |
Active/Standby (Failover) Routing |
Sprint 3 |
Priority-based with auto-recovery |
AAAA Record Support |
Sprint 3 |
Full IPv6 support |
Health Status API |
Sprint 3 |
REST API with security controls |
Configuration & Operations
Configuration Includes
Priority: Medium
Target: Sprint 4 or later
Identified: 2025-12-02 (Sprint 2 discussion)
Description:
Allow splitting configuration across multiple files for better organization.
User Story:
As an operator with many domains and regions, I want to organize configuration into separate files so that different teams can manage their own domains.
Example:
# config.yaml
dns:
listen_address: ":53"
includes:
- regions/*.yaml
- domains/*.yaml
Implementation Notes:
Add
Includes []stringto config typesExpand globs in
config.Load()Parse each included file
Merge into main config (append to slices)
Validate merged result
Apply same permission checks to included files
Detect circular includes
Improve error messages to include file:line context
Open Questions:
Merge semantics: append only, or allow override?
Should included files support their own
includes? (nested)Glob pattern support: just
*or full glob syntax?
Why Deferred:
Purely additive feature that doesn’t affect core architecture. Current flat config works fine for development and small deployments.
Health Checking
Health Check Consensus
Priority: Low
Target: Phase 4 or later
Identified: ADR-003, Sprint planning
Description:
Distributed health checkers that require consensus before marking a server unhealthy.
User Story:
As an operator with multi-region deployment, I want health decisions to be based on checks from multiple vantage points so that regional network issues don’t cause false positives.
Implementation Notes:
Requires distributed deployment (multiple OpenGSLB instances)
Gossip protocol for sharing health check results (hashicorp/memberlist)
Configurable consensus threshold (e.g., 2/3 checkers agree)
Significant complexity increase
Why Deferred:
Requires distributed architecture. Single-node deployment must be solid first.
gRPC Health Checks
Priority: Low
Target: Phase 4 or later
Identified: Future ideas brainstorming
Description:
Support gRPC health checking protocol (grpc.health.v1.Health) for microservices.
Implementation Notes:
Add
GRPCCheckerimplementinghealth.CheckerinterfaceConfig:
type: grpcin health_check sectionUse standard gRPC health checking protocol
Why Deferred:
HTTP and TCP cover most use cases. gRPC is a specialized need.
Routing Algorithms
Geolocation Routing
Priority: High
Target: Sprint 4
Identified: Project planning, ADR-005
Description:
Route clients to nearest region based on IP geolocation.
User Story:
As an operator, I want clients to be routed to the nearest datacenter so that latency is minimized.
Implementation Notes:
GeoIP database integration (MaxMind GeoIP2)
Map client IP to region
Fall back to round-robin if geo lookup fails
Database update mechanism
Open Questions:
MaxMind vs alternative GeoIP provider?
License implications for GeoIP database?
How to handle EDNS Client Subnet for accurate client location?
Latency-Based Routing
Priority: Medium
Target: Sprint 4 or Phase 3
Identified: Project planning
Description:
Route to server with lowest measured latency.
User Story:
As an operator, I want traffic routed to the fastest responding server so that users get optimal performance.
Implementation Notes:
Health checks already measure latency
Expose latency data to router
Selection: lowest latency or weighted by inverse latency
Consider: latency from checker location vs client location
Capacity-Aware Routing
Priority: Low
Target: Phase 4 or later
Identified: Future ideas brainstorming
Description:
Route based on current server load/capacity reported via health checks.
Implementation Notes:
Custom header in health check response (
X-Capacity: 75)Integrate capacity into routing decisions
Combine with weighted routing
Observability
OpenTelemetry Integration
Priority: Low
Target: Phase 4 or later
Identified: 2025-12-02 (Sprint 2 Story 6 discussion)
Description:
Export logs, metrics, and traces via OpenTelemetry Protocol (OTLP) for unified observability.
User Story:
As an operator using OpenTelemetry, I want OpenGSLB to export telemetry via OTLP so that I can correlate logs, metrics, and traces in my existing observability stack.
Implementation Notes:
Add
go.opentelemetry.io/oteldependenciesOTLP exporter for logs (bridge from slog)
OTLP exporter for metrics (alongside or replacing Prometheus)
Distributed tracing for DNS query flow
Configuration for OTel Collector endpoint
Example Config:
telemetry:
otlp:
enabled: true
endpoint: "localhost:4317"
insecure: true # For non-TLS collector
Why Deferred:
Adds operational complexity (requires OTel Collector)
Conflicts with “no external dependencies” value proposition for simple deployments
JSON logging + Prometheus metrics cover 90% of enterprise needs
Can be added later as optional feature without breaking existing deployments
Grafana Dashboards
Priority: Medium
Target: Sprint 4
Identified: Sprint planning
Description:
Pre-built Grafana dashboards for OpenGSLB monitoring.
Planned Dashboards:
Overview dashboard (query rate, error rate, healthy servers)
Health check dashboard (per-region, per-server health status)
Routing decisions dashboard (algorithm distribution, failover events)
High Availability
Keepalived Integration (VIP)
Priority: Medium
Target: Phase 4 or 5
Identified: Project summary
Description:
High availability for OpenGSLB itself using keepalived and virtual IP.
Implementation Notes:
Documentation for keepalived configuration
Health check script for keepalived
VIP failover between OpenGSLB instances
Native Clustering with Raft
Priority: Low
Target: Phase 5 or later
Identified: Future ideas brainstorming
Description:
Built-in Raft consensus for leader election and state replication.
Why Deferred:
Significant complexity. VIP-based HA covers most needs initially.
DNS Enhancements
EDNS Client Subnet (ECS) Support
Priority: Medium
Target: Phase 4
Identified: Future ideas brainstorming
Description:
Implement RFC 7871 EDNS Client Subnet for accurate geolocation when clients use public resolvers.
Implementation Notes:
Parse ECS option from DNS queries
Use client subnet instead of resolver IP for geo decisions
Privacy implications (some resolvers strip ECS intentionally)
DNS-over-HTTPS (DoH) / DNS-over-TLS (DoT)
Priority: Low
Target: Phase 5 or later
Identified: Future ideas brainstorming
Description:
Implement RFC 8484 (DoH) and RFC 7858 (DoT) for encrypted DNS transport.
Why Deferred:
Adds operational complexity (certificate management)
May conflict with “simple deployment” goal
Could be optional module
CNAME Record Support
Priority: Low
Target: Phase 4 or later
Identified: Technical debt
Description:
Support CNAME records in addition to A/AAAA.
API & Integration
Ansible Module
Priority: Low
Target: Phase 5
Identified: Project summary (API-first design for Ansible)
Description:
Ansible module for managing OpenGSLB configuration.
Terraform Provider
Priority: Low
Target: Phase 5
Identified: Future ideas brainstorming
Description:
Terraform provider for OpenGSLB configuration.
Kubernetes Operator
Priority: Medium
Target: Phase 5
Identified: Project summary
Description:
Operator that manages OpenGSLB configuration via Custom Resource Definitions.
Example CRD:
apiVersion: gslb.opengslb.io/v1
kind: GlobalService
metadata:
name: my-app
spec:
domain: app.example.com
routingAlgorithm: weighted
regions:
- name: us-east
endpoints:
- address: 10.0.1.10
port: 80
weight: 100
Web UI Dashboard
Priority: Medium
Target: Phase 4 or 5
Identified: Future ideas brainstorming
Description:
Read-only web dashboard showing domains, servers, health status, and recent routing decisions.
Considerations:
Keep it simple (server-rendered HTML or minimal JS)
Security of dashboard endpoint
Could be separate optional component
Document History
Date |
Author |
Changes |
|---|---|---|
2025-12-02 |
Logan Ross |
Initial creation with hot reload and config includes |
2025-12-02 |
Logan Ross |
Added OpenTelemetry integration |
2025-12-05 |
Logan Ross |
Sprint 3 completion - marked completed features, reorganized priorities |