This is an Elixir implementation of an image processing pipeline under common specifications defined for multiple languages.
The objective of this project is to benchmark the language on a real-world distributed system.
The architecture is slightly modified, needing to add broker nodes to the system as the distribution, this architecture is documented at distributed_pipeline/distributed_framework.md.
- Docker >3 (needs docker swarm)
- Number of replicas:
FORMAT_WORKER_REPLICAS,RESOLUTION_WORKER_REPLICASandSIZE_WORKER_REPLICASconstants are defined in theMakefilefile.
docker swarm init: initializes docker swarm.make setupwill make other required initializations: Creates required folders and gives scripts permissions.template_data: downloads test image into the input folder
make clean_local_deploywill remove old containers and deploy the system, waiting for the services to be ready.- Afterwards:
make manager_iexwill open an iex session on the manager node. - Afterwards: Run
DistributedPipeline.main(on iex) to start the pipeline. make remove_localwill remove the system containers.