API gateway and administration interface for Project Electron microservices, managed via a message queue.
Install git and clone the repository
$ git clone https://github.com/RockefellerArchiveCenter/zodiac.git
Install Docker and run docker-compose from the root directory. You can include all associated microservice submodules.
$ cd zodiac $ git submodule init $ git submodule update $ docker-compose up
Once the applications start successfully, you should be able to access zodiac in your browser at
When you're done, shut down docker-compose
$ docker-compose down
Or, if you want to remove all data
$ docker-compose down -v
The first time you start zodiac, a set of Applications and Services will be created. You can recreate this default set of services and applications by removing all data as described above, and then running
zodiac provides a unified interface for microservices, allowing users to both administer these services and the applications to which they belong as well as track activity within the microservice layer. It also includes a message queue which improves service scalability and activity monitoring.
Applications are clusters of services which share some common code. In the context of Project Electron, these are a series of Django projects. However, zodiac doesn't care how these applications are implemented as long as the services they provide are available via REST endpoints.
Services provide small and clearly-defined functionality, which are called via REST endpoints. If the service requires it, zodiac can pass an additional URL to a service (via a
post_service_url parameter) so it can trigger another service via a POST request. This is especially useful if a service needs to deliver a payload to another service.
zodiac includes a messaging layer to queue and process tasks. It does this via Celery and Celery Beat, which are installed as daemons in the Docker container and run on startup. To process queued callbacks, you will need to add a periodic task using the Django Admin interface. Task results are available in the user interface.
This code is released under an MIT License.