# 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