Old topic but I think I can help sort it out -
systemd is a necessary evil for personal computers, especially portable computers. There are a lot of things that have to go right, and change on the fly, that you really do need more than just a basic init system. systemd is following Apple’s launchd path and there’s a good reason Apple had to come up with launchd for their os.
However, for servers, VMs or containers I think it is mostly overkill, unless you require specific systemd features like cgroups and such. Process supervision the old school way is much more simple and easier to understand and just works (and debug when it doesn’t
. If you want a good example and see for yourself, install Void Linux in a vm and go through their excellent handbook https://docs.voidlinux.org
There are oci/docker images that bundle alpine with runit or s6 suite, which is probably the best way to run stable services that don’t directly interact with each other.
In the end after thinking about it for years, I don’t think it matters - i decided this after I realized I don’t care about launchd on Mac OS, why should I care about systemd on Linux? It’s systems level software and is doing a basic job you usually don’t need to be concerned with. Get out of the lower levels and focus on something important.
My 0.02