.. _architecture: Architecture ============ This is designed to be used as a microservice within a larger architecture. This will take in CRUD messages for objects in 3 space, and track location, rotation, and scaling. It will also ensure that any updates are sent out on a separate port to allow streaming to all user devices. A .proto file is included to allow generating the bindings for any language which are generated by the protocol buffer compiler (https://developers.google.com/protocol-buffers/). Alternatively, Clyman can be configured to accept JSON messages. 0-Meter (https://github.com/AO-StreetArt/0-Meter) has been developed to allow easy testing of the module with JSON message formats. CLyman can also be deployed with Consul (https://www.consul.io/) as a Service Discovery and Distributed Configuration architecture. This requires a Consul Agent to be deployed that CLyman can connect to. CLyman depends on Mongo (database), and Kafka (data streaming) instances in order to function. Design ====== In order to allow for real-time, distributed visualization, one of the key problems that needs to be solved is allowing for real-time communication between devices regarding an object's position, orientation, and scaling. This aims to solve that problem by providing a messaging API that is used to update objects, and a corresponding feed outbound which tells all devices about the update. :ref:`Go Home `