What is ArmoniK ?
ArmoniK is an open-source, cloud-native platform for orchestrating compute-intensive distributed workloads. You break your application down into tasks — with dependencies between them — and ArmoniK runs them across a cluster, handling scheduling, data movement between tasks, autoscaling, and fault recovery for you. Client SDKs are available for several languages (C#, C++, Python, Java, Rust), so you can submit and orchestrate tasks without writing low-level distributed-systems code.
Why ArmoniK ?
Many organizations need to run large numbers of computational tasks — simulations, risk calculations, machine learning pipelines, batch analytics, rendering — reliably and at scale, without building and maintaining their own task-scheduling infrastructure.
ArmoniK provides this as a modular, customizable platform: you adapt it to your workload’s data transfer patterns, task durations, and resource requirements, rather than reshaping your application around a one-size-fits-all scheduler. It is already used in production by financial services and insurance companies to run distributed workloads made up of millions of tasks.
Key Features of ArmoniK
Goals
Simplifies Development: Makes it easier to build distributed applications without deep expertise in distributed systems.
Accessible Interface: Usable without requiring specialized parallel-programming knowledge.
Performance Optimization: Helps applications achieve good performance at scale.
Architecture
Computational Kernels: Users can define their computational tasks.
Data Management: Manages data reading, writing, and inter-process communication.
Task-Based Programming: Breaks down complex operations into smaller tasks, allowing for more manageable development and execution. This includes task distribution, load balancing, and dependency resolution through a distributed scheduler.
Built-in Features
Open Source: Available for users to modify and contribute to via GitHub.
Fault Tolerance: Ensures continuation of operations even with node failures.
Advanced Data Management: Supports overlapping computations and communications, checkpointing, and prefetching.
Observability: Provides extensive monitoring tools including GUIs and APIs for tracking application performance.
Portability and Malleability: Supports multiple programming languages (C#, C++, Python, Java, Rust, etc.) and dynamic resource allocation during execution.
Production Ready: Focused on stability and security, making it suitable for critical systems.
Use Cases
ArmoniK is well suited for any workload that benefits from high concurrency and task distribution, including:
Scientific computation and simulations
Machine learning pipelines
Batch analytics pipelines
Real-time distributed processing
Financial simulations (e.g. risk calculation) and combinatorial optimization
Scalable algorithmic processing (e.g. bioinformatics, Monte Carlo, rendering)
Note
This project is an Open Source (Apache 2.0 License).
When should I use ArmoniK
ArmoniK should be used when the following criteria are met:
A high task throughput is required (from 250 to 10,000+ tasks per second).
The tasks are loosely coupled.
Variable workloads (tasks with heterogeneous execution times) are expected and the solution needs to dynamically scale with the load.
Versions
The current version of ArmoniK uses the tags listed in versions.tfvars.json where:
armonikis the tag of the main repository of ArmoniKinfrais the tag of ArmoniK.Infra repository which host the infrastructure modulescoreis the tag of ArmoniK.Core repository used for container images of Control plane, Polling agent and Metrics exporterapiis the tag of ArmoniK.Api repository (informative only)guiis the tag of ArmoniK.Admin.GUI repository used for container images of ArmoniK AdminGUIextcsharpis the tag of ArmoniK.Extensions.Csharp repository used for container images of the DLL workersamplesis the tag of ArmoniK.Samples repository