{ Introduction à l’architecture Multi-tenant d’Oracle
{ Étude des Index et plans d’exécution. Quand faut-il en mettre, et quand doit-on passer à un
outil de recherche textuelle (ex: Elasticsearch).
{ Étude des transactions et des propriétés ACID.
{ Accès concurrentiel aux données et gestion des locks.
{ Étude du langage PL/SQL.
{ Introduction des nouvelles fonctionnalités AI d’Oracle 23ai: l’aspect vectoriel.
Introduction au langage Java et aux frameworks les plus utilisés: Spring Boot, Hibernate, Jackson
Environnement: Java, Spring, Hibernate/JPA, RESTExploration, documentation et maîtrise de Polars (Rust dataframe column) et Qdrant (Rust
Vector DB)
Apprentissage Langage Rust et développement application web (minimale) avec animation Rust
Tunisia Meetup
Conception, Réalisation et Évolution du Système d’Intégration de Données (HIP).
Détails du projet: L’équipe HIP offre une plateforme d’intégration de flux de données.
Cette plateforme consiste en un ensemble de microservices Java (Spring Boot) déployés dans des
clusters Kubernetes
{ Design et implémentation de modules de traitement de flux.
{ Refactoring et migration de code TIBCO vers Java.
{ Optimisation des performances et design technique.
{ Résolution de problèmes liés à la mémoire et au Garbage Collector
{ Analyse de Thread dumps pour identifier des sources de blocage.
{ Encadrement et formation des équipes au bonnes pratiques Clean Code, Correctness
d’algorithmes et optimisation de complexité.
Détails du projet: Le client a toutes ses applications développées en offshore. Malgré
la mise en place d’audits réguliers, une vision détaillée est nécessaire pour identifier les différentes
lacunes.
{ Investigation et exploration du code. Proposition d’évolutions.
{ Rédaction de rapport détaillé
{ Organisation de workshops multiples à destination des développeurs ainsi que BAs pour expliquer
les principes de BDD et d’agilité.
{ Présentation et mise en place de pratiques Clean Code, Immutabilité de données, Design
Patterns.
Exploration et documentation de l’implémentation Apache Arrow dans Rust et de l’implémentation
du protocole de consensus Raft en Rust dans tikv
Investigation lenteur base de données MongoDB. Proposition de solution alternative pour la
recherche de données via Elasticsearch.
Détails du projet: Le client utilise MongoDB pour des recherches avancées multiples.
Ceci résulte en la présence de plus de 30 index par collection.
{ Investigation de la cause d’usage de mauvais index pour plusieurs requêtes
{ Remontée de bug à MongoDB
{ Conception et implémentation d’un PoC ElasticSearch qui répond aux mêmes requêtes avec
les mêmes volumétries mais avec des machines beaucoup moins coûteuses.
{ Présentation de nouvelles fonctionnalités non possible auparavant avec MongoDB mais ayant
un impact sur l’expérience utilisateur
Migration de données Solr vers Elasticsearch
Détails du projet: Alors que les deux produits se basent sur Apache Lucene pour du
FullText Search, plusieurs différences existent. L’utilisation de ZooKeeper dans SolrCloud en
est une. Une autre différence est la présence (récente) d’un Circuit-Breaker dans Elasticsearch
qui empêche l’exécution de requêtes assez coûteuses et susceptibles de causer des problèmes de
mémoire.
{ Mise en place d’un plan de migration avec Zéro downtime
{ Mise en place de différents types d’agrégations ES pour garder les mêmes fonctionnalités de
filtrage (faceting).
{ Utiliser une approche probabiliste pour la construction de nuage de mots au lieu des champs
fielddata (approche coûteuse).
{ Refactoring de code très ancien et implémentation des nouveaux modules de recherche /
indexation ElasticSearch
{ Après migration: optimisation des applications pour garder un coût minimum ElasticCloud:
Gérer des centaines de millions de documents avec 2 noeuds de 8G de RAM
Design de microservices Java pour la consommation et la transformation de données
Détails du projet:
{ Conception de schémas Avro pour messages Kafka
{ Optimisation de performances via une mise en place d’un traitement incrémental de données
Json (JSON Patch: RFC 6902)
{ Développement de nouvelles fonctionnalités et APIs