Skip to content

Releases: Lovelessta90/go-update-orchestrator

Alpha Release

22 Oct 14:38
ffe5a30

Choose a tag to compare

Alpha Release Pre-release
Pre-release

Release Notes

v0.1.0-alpha (October 2025)

⚠️ ALPHA RELEASE - NOT PRODUCTION READY

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-orchestrator

Try the Demo

git clone https://github.com/dovaclean/go-update-orchestrator
cd go-update-orchestrator
make demo

Open 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


🙏 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?

  1. Clone the repository

    git clone https://github.com/dovaclean/go-update-orchestrator
    cd go-update-orchestrator
  2. Run the demo

    make demo
  3. Open the dashboard

    Navigate to http://localhost:8081

  4. Explore the code

    Check out examples/ for usage patterns

  5. Read the docs

    See docs/ for architecture details


💬 Questions or Feedback?


Remember: This is an ALPHA release. Use in non-production environments only!