# 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