---
# System prepended metadata

title: Roadmap ArmoniK 2023/2024

---

# Roadmap ArmoniK 2023/2024

date: 09/02/2023

## Priorités

### P0

- [ ] Chiffres __publiés__
- [ ] Getting started / tutorials
- [x] Démo simple fonctionnement bout en bout (5 min, 10 min)
- [ ] Maintien à jour des diagrammes d'architecture
- [ ] Gérer les aspects légaux/juridiques (WKI)
- [ ] Réduire la dette technique dans ExtC# (refonte de l'heritage entre les classes, nullable)
- [x] Amélioration (tri + passage par API) Admin GUI

### P1

- Site internet
    - newsletter + articles
    - faire evoluer un peu le fond pour avoir des messages plus clairs et plus marquants
    - openforum
- changer les headers des repos (Api, ext, samples)
- Participer au projet open source armonik
    - Documentation : How-to contribute
- construction de la communauté armonik avec process
- Revoir l'ensemble des API et les services correspondants (simplifier et peut-être microservices)
    - Livrable : document listant les éléménts à changer et leurs implications ==> https://hackmd.io/-s3WXhKrQbCT2pJAfgiuJg
    - Etudier les use case pour gérer 1/ les données externes 2/ les sources de données dynamiques
- Documenter le travail à réaliser pour passer à une approche purement évennementielle + étapes intermédiaires
    - Formation Core ?
- Analyser les goulets d'étranglement
- Préparer un SOW pour test graviton + multiarch
- Préparer un SOW pour un benchmark à l'échelle
- Préparer un SOW pour AWS Outpost
- Mise en place de caches de donnée (stage en cours)
- Etudier la faisabillité de créer une image docker depuis le zip contenant l'appli cliente
- clarifier comment mettre en place la pause des taches/sessions (mettre le status dans les APIs ?)
- Terraform restructuration (CACIB)


### P2
- prévoir(réflechir) les APIs / systemes pour plusieurs data plane
- Resource based authorization (API + implem)
- Manage MongoDB redundancy / clustering (CACIB)
    - cluster **actif/actif** ou actif/passif
    - HA
    - reprise sur erreur
- Développement des interfaces JAVA pour la librairie ARM (Natixis)
- Développement des interfaces C++ pour l'application Murex (Natixis)

### P3
- Nettoyer les depots (dockerhub, nuget, npm, pypi) (supprimer/cacher automatiquement les versions de pre-release)


### Peu prioritaire

- Supporter des API JSON en complément de gRPC
- Evaluation paresseuse du graphe de tâche (quand on demande le résultat)
- Mutualiser le scheduling au sein de chaque noeud
- Gérer plusieurs data plane
    - pouvoir avoir ArmoniK on-prem + cloud
    - soumettre d'un coté ou de l'autre
    - ArmoniK dispatch données et calcul
    - solution plus simple que le bursting (premiere etape)
- Bursting dynamique
- Interface web "a la YellowDog" ; approche no code
    - soumettre des taches et des données depuis une interface web
- mettre en pause une tache/session
    - passer une tache cancel à submitted
    - pause graceful (on laisse les taches en cours se finir)
    - pause cancel (les taches encours sont cancels et requeue)
- Valider qu'Artemis fonctionne bien dans notre cas et qu'il propose de meilleures performances que RabbitMQ et ActiveMQ
- Kill Task in processing


### A prioriser

- Rendre les modèles de données internes indépendants des interfaces, objets grpc et adaptateurs
- SQL Adapter
- peupler un ecr avec les images docker
- Etude pour l'integration avec Nextflow / Airflow
    - En tant que runner
    - En tant qu'orchestrateur
- Préparer et documenter les native APIs et des démo dans différents langages
    - Angular, Python
- Documentation haut niveau
- Documentation pour les users/devs
- Documentation des choix stratégique d'architecture
- Mettre en place d'un bot CLA pour n'autoriser les PR que de la part d'une liste de personnes validées
- Mettre en place des interfaces (statique ou dynamique) pour permettre des formules de scalabilité custom
- _Finaliser le partitionning (branchement KEDA par partition pour le débordement interpartitions mono-cluster)_
- Partitions dynamique 
- Support Windows du Compute plane
- Environnement de développement natif Windows
- Recouvrement calcul/communication
- Eviter le transfert de données entre scheduling agent et worker (mémoire partagée ? système de fichier ? Data Agent ?)
- Créer une organisation ArmoniK
- Gestion des dépendances hybrides
- Ajout de fonctionnalités Admin GUI


## Roadmap Aneo
- compléter les API

## Roadmap CACIB
- Deploy Armonik On Premise
- Performance analysis helpers (Profiling)
- Aggregation Priority with Task Queue (Collaboration)
    - Priorisation des taches
- Workers activity visualization

## Roadmap Natixis
- Faire un déploiment ControlPlane, Redis, MongoDB, prometheus sur plusieurs Noeuds
- Vérifier compatibilité avec Kubernetes OpenShift et la gestion multi namespace


## Questions des clients
- demo sans expliquer le legacy ni la dette technique, pas d'exemple de code simple ==> faire des samples en natif simple
- changer les noms : submitter et polling agent
