Disclaimer: I don't work with IT production, so this is my personal (and not purely professional) take on the subject.
There are rather few packages that require a reboot to be applied. The ones I can think of are:
- Kernel upgrades (that are not livepatched)
libc6
, openssl
and dbus
upgrades (if you know others, please let me know)
It is perfectly fine to let these packages upgrade without rebooting, and then rebooting the server whenever it's appropriate. For a production server (depending on its role), I would reboot during a service window.
I don't believe automatically rebooting a production server is ever a good idea (unless you have a fixed service window for it). For instance, I'm booting my own server every sunday night (if it's needed) - but at least I know precisely if and when it's rebooted.
If a production server is critical to operation, I would assume there is some clustering/load balancing/failover mechanism in place (in addition to a robust backup strategy) - but this is another discussion altogether.
There is also a reason professional livepatching services exist (like Canonical Livepatch, KernelCare etc.). This is exactly to prevent disruption of critical services.