I read this new thing recently, and I liked it
I’m happy to announce that I feel I’ve wrapped up Govisor to a point where its ready for public consumption.
Govisor is a service similar to supervisord, in that it can be used to manage a bunch of processes. However, it is much richer in that it understands process dependencies, conflicts, and also offers capabilities for self-healing, and consolidated log management.
It runs as an ordinary user process, and while it has some things in common with programs like init, upstart, and Solaris SMF, it is not a replacement for any of those things. Instead think of this is a portable way to manage a group of processes without requiring root. In my case I wanted something that could manage a tree of microservices that was deployable by normal users. Govisor is my answer to that problem.
Govisor is also written entirely in Go, and is embeddable in other projects. The REST server interface uses a stock http.ServeHTTP interface, so it can be used with various middleware or frameworks like the Gorilla toolkit.
Services can be implemented as processes, or in native Go.
Which actually brings up the topic of “tops’l” (which is a contraction of top-sail, often used in sailing). Govisor depends the package tops — “terminal oriented panels support library”), which provides a mid-level API for interacting with terminals. I created topsl specifically to help me with creating the govisor client application. I do consider topsl ready for use by Govisor, but I advise caution if you want to use it your own programs — its really young and there are probably breaking changes looming in its future.
The documentation is a bit thin on the ground, but if you want to help or have questions, just let me know! In the meantime, enjoy!