So, I’m working on an application using the OSGI environment. As with any app that will see the light of day and run in a production environment you need to make it both scalable and fault tolerant.
OSGI implementations like Equinox are very well tested and stable, but a hard drive can always go bad, or the cleaning lady could always unplug a network cable, so you’re never really fault tolerant unless you’re able to run your app in more than one machine.
Sometimes it’s as simple as deploying the code to another machine and running it. Sadly, most of the times it’s not that simple.
Creating an OSGI app that will run in several servers is not a trivial task, as I started to do it, I immediately found one typical example of something that’s very simple when done in one machine and rather complex when you need to do it in multiple machines: Configuration.
OSGI already defines a Configuration Admin Service to manage the configuration of your services. Yet it doesn’t say anything about distributed configuration. I started to look around and the best I found was this thread called “Bridge between zookeeper and OSGI configuration admin“.
With that piece of software you’re able to maintain your services configuration in Apache ZooKeeper, and any change in it will be automagically distributed to all servers running your system.
Definitely worth a look.