Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Distributed OSGi - what is the proper way to manage bundles across all containers?

We are considering utilizing distributed OSGi in our enterprise environment.
We would have the following setup:

  • 10 to 100 OSGi containers on many hosts offer various services.
  • Many of these services are provided by more than one container.
  • Some of these services may require being consistent across all containers (same version deployed).

What is the proper way to manage bundles' lifecycle (install, start, update, stop, uninstall) across all containers?

Several requirements:

  • As there may be so many containers, all of them should be handled together; i.e. when I am about to update a bundle, a single command should update all containers where that bundle already present.
  • Commands must be repeatable: first perform a command on test systems, and then repeat the exact same command on production system once testing is complete.

I appreciate any suggestion regarding the above question.

Best regards, Marton

like image 227
Marton Sigmond Avatar asked Dec 29 '11 11:12

Marton Sigmond


People also ask

What is true about OSGi bundles?

OSGi bundles allow versioning of code Two different applications might have different version requirements on the same library. OSGi allows both versions to be deployed simultaneously, and both applications can be satisfied.

What does OSGi stand for?

The Open Services Gateway Initiative (OSGi), also known as the Dynamic Module System for Java, defines an architecture for modular application development.


3 Answers

You might want to have a look at more "managed" solutions made for cloud-like environments: Apache ACE or its bigger brother Amdatu.

Apache ACE turns a single OSGi Containers into managed containers whose state can be controlled from a single administration point. Amdatu is a more complete framework that includes ACE for provisioning but adds horizontal functionality.

like image 128
Toni Menzel Avatar answered Oct 12 '22 12:10

Toni Menzel


In terms of managing large numbers of bundles, look at Karaf features - they greatly simplify handling largely suites of bundles.

For the distributed side of things, take a look at the Karaf subproject Cellar, it's clustering Karaf using HazelCast (and it installs in Karaf via the features mechanism).

like image 37
earcam Avatar answered Oct 12 '22 11:10

earcam


If you are serious about enterprise ready - meaning "robust" - distributed OSGi runtimes - then have a look at the Paremus Service Fabric. We've been doing this since 2005 :)

The Service Fabric's provisioning / management architecture is extremely scalable (>> 1,000's of containers), responsive and stable! Several years development and commercial runtime experience underpinning this product. The Service Fabric architecture supports multiple concurrent distributed OSGi based applications. The Service Fabric's architecture is OBR centric; our lead engineer was responsible recent OSGi Alliance OBR specification activities.

The Service Fabric message backplane leverages the DDS messaging protocol - which IMO is the natural partner for distributed OSGi. The Paremus RSA (remote service implementation) is a clean room implementation of the standard - which is highly robust, light weight and allows dynamic plug ability of protocol and distribution providers. The default discovery provider - is again DDS.

Finally - and Service Fabric works out of the box.

like image 27
Richard Avatar answered Oct 12 '22 12:10

Richard