Deploying Heterogeneous Artifacts to the Cloud with OSGi
OSGi is a wonderful platform for cloud deployment... but modern software stacks are increasingly heterogeneous in nature. This means that alongside our OSGi bundles we must be able to deploy non-OSGi artifacts such as monolithic Java applications or even native libraries and executables. Furthermore the platforms onto which we deploy may be heterogeneous, i.e. having different operating systems, processors, memory, GPU etc.
Nevertheless we would still like to enjoy the benefits of OSGi's lifecycle model, its resolver, strong version support, configuration system, and service publication. Can we get the best of both worlds?
In this talk we will demonstrate how arbitrary artifacts can be deployed and managed across a cloud environment using Paremus Packager and the latest OSGi specifications. The demo will start from a simple blog application developed as pure OSGi bundles, then proceed to mix in a choice of databases (MongoDB or Apache Derby), a messaging server (Mosquitto or RabbitMQ), and a web UI (Ruby on Rails). All these artifacts are resolved automatically from an OSGi R5 repository, provisioned onto the correct node according to platform requirements, and configured from a single operations-friendly source. Once running they discover and connect to each other without intervention.
The talk concludes with a brief overview of how the artifact packaging works, and how an arbitrary artifact can be wrapped for use with OSGi.