A Distributed JPetStore

The MyBatis-JPetStore is a well known example application to demonstrate the stripes framework. It is a servlet-based web application which is widely used in academia to test and evaluate approaches. The preference for the JPetStore originates from its minimalistic design. Yet it is also functional complete, as it implements all typical aspects of a shopping system, including a catalog, a search function, a shopping cart, a customer management, and a sales and order management.

While the JPetStore is a neat application for software engineering purposes, it is not designed as a distributed system. Therefore, we recently forked the original JPetStore and created a distributed application out of it. You may find the distributed JPetStore in our github repository (https://github.com/research-iobserve/jpetstore-6).

We support three branches in this repository for different purposes:

  • distributed-with-presentation-layer contains the distributed version of the JPetStore without monitoring instrumentation
  • kieker-monitoring contains a version instrumented with Kieker monitoring probes
  • iobserve-monitoring contains a version instrumented with extended iObserve monitoring probes which also log request parameters

The current design of the distributed JPetStore is as follows:

Architecture and deployment of the distributed JPetStore
Architecture and deployment of the distributed JPetStore

The account service, the catalog service and the order service all contain their own database based on HSQLDB. These could be replaced by another database implementing JDBC. As the order and cart component share the database, they are deployed on the same service.

Our setup comes with proper Docker files for each service and a Docker Compose script to execute the complete shop system. You may find all sources and an introductory readme on github (https://github.com/research-iobserve/jpetstore-6).

 

The iObserve Research Blog

The iObserve research project aims to integrate development and operations in context of software evolution. We utilize a wide range of models and analyses which are suited for both domains and allow for better communication between the roles of a developer and operator. In our research blog we will copy
report on our progress and provide a portal to all online resources belonging to iObserve.