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_REPLICAS
andSIZE_WORKER_REPLICAS
constants are defined in theMakefile
file.
docker swarm init
: initializes docker swarm.make setup
will make other required initializations: Creates required folders and gives scripts permissions.template_data
: downloads test image into the input folder
make clean_local_deploy
will remove old containers and deploy the system, waiting for the services to be ready.- Afterwards:
make manager_iex
will open an iex session on the manager node. - Afterwards: Run
DistributedPipeline.main
(on iex) to start the pipeline. make remove_local
will remove the system containers.