Releases: Lovelessta90/go-update-orchestrator
Alpha Release
Release Notes
v0.1.0-alpha (October 2025)
This is an alpha release for early testing and feedback. The API is subject to change, and there may be bugs or incomplete features. Use at your own risk in non-production environments only.
What is Go Update Orchestrator?
Go Update Orchestrator is a lightweight, high-performance tool for managing large-scale device updates. It's designed for companies managing fleets of devices (POS systems, IoT devices, digital signage, vehicles, medical equipment) and replaces vendor-locked tools and brittle bash scripts with a robust, portable solution.
🎯 Initial Release Features
This alpha release provides the foundational capabilities for orchestrating device updates at scale:
Core Functionality
- ✅ Orchestrator Engine - Coordinates device updates with configurable concurrency and retry logic
- ✅ Device Registry - SQLite-backed persistent registry with in-memory option for testing
- ✅ Streaming Updates - Memory-efficient streaming prevents loading full payloads into memory
- ✅ Progress Tracking - Real-time progress monitoring with accurate time estimates
- ✅ Event System - Event-driven architecture for loose component coupling
Delivery Mechanisms
- ✅ HTTP/HTTPS Delivery - Push updates via HTTP POST with automatic retry and connection pooling
- ✅ SSH/SFTP Delivery - Secure file transfer over SSH for devices without HTTP servers
- ✅ Custom Delivery - Interface-based design allows custom delivery implementations
Scheduling & Orchestration
- ✅ Time-Based Scheduling - Schedule updates for specific time windows
- ✅ Progressive Rollouts - Gradual rollout with configurable batch sizes and delays
- ✅ Concurrent Updates - Bounded concurrency with configurable worker pools
- ✅ Automatic Retry - Exponential backoff retry with configurable attempts
Developer Experience
- ✅ Interactive Demo - Web UI with real-time dashboard showing update progress
- ✅ Go Library - Use as a library in your own Go applications
- ✅ Zero Dependencies - No CGO, maximum portability across platforms
- ✅ Comprehensive Tests - 77+ unit and integration tests with 100% coverage of critical paths
📦 Installation
As a Go Library
go get github.com/dovaclean/go-update-orchestratorTry the Demo
git clone https://github.com/dovaclean/go-update-orchestrator
cd go-update-orchestrator
make demoOpen http://localhost:8081 to see the interactive dashboard.
🚀 Quick Start
package main
import (
"context"
"log"
"github.com/dovaclean/go-update-orchestrator/pkg/orchestrator"
"github.com/dovaclean/go-update-orchestrator/pkg/delivery/http"
"github.com/dovaclean/go-update-orchestrator/pkg/registry/sqlite"
)
func main() {
// Create components
reg, _ := sqlite.New("devices.db")
delivery := http.New()
// Configure orchestrator
config := &orchestrator.Config{
MaxConcurrent: 100,
RetryAttempts: 3,
}
orch, err := orchestrator.New(config, reg, delivery)
if err != nil {
log.Fatal(err)
}
// Execute update
ctx := context.Background()
if err := orch.ExecuteUpdate(ctx, updateJob); err != nil {
log.Fatal(err)
}
}See examples/ for complete working examples.
📊 Performance Characteristics
This release has been benchmarked to establish baseline performance metrics:
HTTP Delivery Performance
- Push Latency: 50.1 μs per operation (localhost)
- Throughput: ~20,000 operations/second
- Memory: 7.5 KB per operation
- Large Payloads: 10MB transfers in 14.4ms (~694 MB/s)
Scalability
- 10,000+ devices - Efficiently handles massive fleets with bounded concurrency
- Streaming updates - Constant memory usage regardless of payload size
- Concurrent operations - 29x throughput improvement with 100 concurrent workers
Note: These are localhost benchmarks. Real-world performance will be network-bound. See BASELINE_METRICS.md for detailed analysis.
🏗️ Architecture
The system is built on clean architecture principles with interface-based design:
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ Scheduler │────▶│ Orchestrator │◀────│ Registry │
└─────────────┘ └──────────────┘ └─────────────┘
│
┌───────┴───────┐
▼ ▼
┌──────────────┐ ┌──────────┐
│ Delivery │ │ Events │
└──────────────┘ └──────────┘
│ │
└───────┬───────┘
▼
┌──────────────┐
│ Progress │
└──────────────┘
Each component is independently testable and swappable via interfaces.
⚠️ Known Limitations (Alpha Release)
This is an alpha release with the following known limitations:
Incomplete Features
- ❌ No Prometheus metrics export - Planned for future release
- ❌ No delta/differential updates - Full file transfers only
- ❌ No automatic rollback - Manual intervention required on failures
- ❌ No advanced device grouping - Basic device management only
- ❌ Limited error recovery - Some edge cases may not be handled gracefully
Testing Gaps
⚠️ SSH tests are skipped - Require real SSH server infrastructure⚠️ Limited stress testing - Not extensively tested beyond 10,000 devices⚠️ No production validation - Not yet battle-tested in production environments
API Stability
⚠️ API may change - Interfaces and function signatures subject to change⚠️ Breaking changes possible - No backward compatibility guarantees in alpha
Platform Support
- ✅ Linux - Tested on Ubuntu 24.04
⚠️ macOS - Should work but not extensively tested⚠️ Windows - May work but not tested
🐛 Reporting Issues
This is an alpha release - bugs are expected! Please report issues on GitHub:
GitHub Issues: https://github.com/dovaclean/go-update-orchestrator/issues
When reporting issues, please include:
- Go version (
go version) - Operating system and version
- Minimal reproduction case
- Expected vs actual behavior
- Relevant logs or error messages
📋 Roadmap to Beta
The following features are planned before beta release:
High Priority
- Comprehensive error handling and recovery
- Production stress testing (100,000+ devices)
- API stabilization with backward compatibility guarantees
- Prometheus metrics export
- Improved documentation and examples
Medium Priority
- Automatic rollback on failure detection
- Delta/differential update support
- Advanced device grouping and tagging
- Health check and validation endpoints
Nice to Have
- Web UI improvements
- CLI tool for common operations
- Kubernetes operator
- Multi-region support
🤖 AI-Generated Baseline
This codebase was generated as a baseline implementation by Claude Code (Claude Sonnet 4.5) on October 20, 2025. The purpose is to establish a functional, well-tested foundation that can be optimized and improved upon.
What this means:
- ✅ Clean, idiomatic Go code following best practices
- ✅ Comprehensive test coverage with 77+ tests
- ✅ Well-documented with inline comments and architecture docs
- ✅ Performance benchmarks to measure future improvements
⚠️ May contain AI-generated patterns that need human refinement⚠️ Not yet optimized for extreme performance scenarios
See BASELINE_METRICS.md for detailed performance analysis.
📚 Documentation
- README.md - Project overview and quick start
- BASELINE_METRICS.md - Performance benchmarks and optimization guidance
- examples/ - Working code examples
- docs/ - Architecture and design documentation
🙏 Acknowledgments
This project was created to fill a gap in the open-source ecosystem for device update orchestration. Special thanks to:
- The Go community for excellent tooling and libraries
- Early testers and feedback providers
- Claude Code for generating the baseline implementation
📄 License
MIT License - See LICENSE for details.
⚡ Getting Started
Ready to try it out?
-
Clone the repository
git clone https://github.com/dovaclean/go-update-orchestrator cd go-update-orchestrator -
Run the demo
make demo
-
Open the dashboard
Navigate to http://localhost:8081
-
Explore the code
Check out examples/ for usage patterns
-
Read the docs
See docs/ for architecture details
💬 Questions or Feedback?
- Issues: https://github.com/dovaclean/go-update-orchestrator/issues
- Discussions: https://github.com/dovaclean/go-update-orchestrator/discussions
Remember: This is an ALPHA release. Use in non-production environments only!