I have always thought that the ideal environment to write a big unix server in is a host of co-operating processes. So, what I did was spend a lot of time writing infrastructure (because that is what I do) for it —
- With so many processes, you need to be careful about which ones you want to restart, and when.
- With so many processes, you need to be sure that they always have a consistent view of the current configuration.
So my team wrote a process manager, that we’re improving, and a configuration manager, that synchronizes the configuration across processes written in several languages and that might be running on several machines transparently. The infrastructure is not near done — I suspect we will have a few more years of work on it. But it is wonderful to see that adding another task for the system is often extremely safe — processes have this wonderful way of rarely getting in each other’s way.