I'm exploring options to improve our application's deployment cycle. Currently, we deploy to Windows Client OS, but I'm not comfortable relying solely on that platform due to issues like Windows updates and client hardware diversity. We want a straightforward setup where we can deploy the system and monitor its usage through basic telemetry like OpenTelemetry. Right now, we manually install the database and broker and automate IIS deployment via GitHub runners. However, we lack visibility into production telemetry data, which is crucial for user interaction insights. I've tried Aspire for local development, but its Kubernetes deployment feels excessive for our needs. I'm considering alternatives like Linux servers with Docker Compose or native deployments. What have others experienced with on-prem deployments?
3 Answers
It really depends on how often you plan to run installations and your team size. If it's a one-off setup, maybe manual installation guides are best. But if you'll be running multiple deployments, looking into automation like PXE booting with Packer and Ansible might save you time in the long run.
You might want to look into using K3s, MicroK8s, or just plain Docker Compose. Set them up on a Linux VM; they're fairly straightforward and free as long as your use case remains simple.
That sounds interesting! We're a small team, so simplifying the stack makes sense. If we stick to Docker Compose, can we generate a compose file from Aspire? That could streamline things for our GitHub deployments.
Most systems I see follow this pattern: developers build and push container images to a registry, and client devices check for updates regularly. If a new image fails health checks, it rolls back to the previous one. You could use a Git repo for a Docker Compose file and automate updates with a Systemd timer. If remote access is needed, consider using an agent on the client device for remote calls.
I'll look into the automation options! We do SSH into systems right now. Regarding going native, is there any significant downside to deploying on IIS for Windows or Nginx on Linux in terms of health checks and ease of config?
That's a good point! What if we need to backtrack versions if something goes wrong? Is there a straightforward method to achieve that while still keeping things efficient?