Accessing OpenStack Object Storage with Java through JOSS

42 open sourced a Java library called JOSS (Java OpenStack Storage) for accessing the OpenStack Storage component. Cloud Storage was never so easy for Java developers. This might be a good chance for you to try JOSS out as a beta tester for CloudVPS.

OpenStack


OpenStack recently found itself center stage once again with the remarkable statement that VMWare joined its board. The movement appears to be gaining momentum and broaden its support base. Do we have a Cloud winner here? The largest cloud company in the Netherlands, CloudVPS, believes just that and is investing heavily in its OpenStack offering.

Object Store


CloudVPS just started a beta test for the OpenStack Storage solution, called Object Store, one of many OpenStack components. The Object Store allows you to push a file directly to the cloud where it is stored thrice. You can then configure the file to be directly accessible on the web.

Why not just upload to Amazon? Well, besides the Privacy concerns (dutch article) and the perceived concerns over the consequences of the Patriot Act for European data in US cloud centers, it is fair to state that there is a difference in legislation between many European and US-based companies. A difference that may either grow less profound or more. We just don’t know and companies generally dislike uncertainty. European companies are developing a taste for European-based cloud solutions. It is to this aspiration that CloudVPS appeals perfectly.

There are many technical advantages to using an Object Store, such as i) right-sized VPS’es, since files most of the time eat up most of the HDD on a VPS, ii) low latency for static content, and therefore fast retrieval of content, iii) pay for what you use, instead of sizing for what you expect the next couple of years, iv) no paddling of files through the application layers, let your user’s browser do the work, v) perfect SEO naming for resources for the optimal Google-experience, vi) out-of-the-box HTML/HTTP advantages, vii) redundant, robust storage with high availability, viii) less load on your application server / database. No, it’s not a Golden Hammer, but it is incredibly useful for situations where you have dynamically created “static” content that needs to be accessed / crawled over the web.

JOSS


42 subscribes to the view of Cloud VPS and just started a common project to connect our customer to the Object Store. In that light, we had to connect to the well-documented REST interface of OpenStack Storage. Seeing the current Java solutions for OpenStack Storage, we found we were ill-served by what was available—snapshot dependencies, few unit tests, little to no application of design patterns, no translation from HTTP status codes to exceptions, no possibility to mock the Object Store (in a similar way as HSQLDB mocks Postgres).

In close collaboration with CloudVPS, we decided to write a Java library that had all of the above. It was dubbed JOSS, Java OpenStack Storage. Besides the basic functionality for dealing with containers and objects, JOSS also has a mock mode, which allows you to run your application against an in-memory implementation of the Object Store. Useful for isolated tests and local runs. It is hard to imagine a Java developer who fails to appreciate the presence of a mock operating mode.

The next couple of months 42 will intensively use and tune JOSS further, until we feel confident enough to release a battle-proven v1.0.0. Expectations for this release are around the end of november. The current version available is v0.3.0 which gives you a good chance to acquaint yourself both with the CloudVPS Object Store and with JOSS. There are many features which still need to be implemented. Be sure to leave a note if you have a preference for certain features.

The JOSS library is still young and feedback is much appreciated. If you feel like you want to contribute as a committer, make sure to get in touch. Also, CloudVPS is still looking for beta testers, so if you want to give JOSS a spin and you still need an Object Store to test on, be sure to contact them.