Portfolio de Dasek Joiakim - Semestre 4
Semestre 4
Projets
Emerging technologies

Emerging Technologies

Topic 1

Voici le lien gitlab du projet : Emerging Technologies (opens in a new tab)

Situation actuelle

Une entreprise possédant un système de load balancing localisé souhaite passer à une architecture de microservices et utiliser Istio pour ses capacités d'analyse des métriques afin d'optimiser l'utilisation des ressources.

Objectif

Créer un environnement de test pour :

  • Tester la nouvelle fonctionnalité d'Istio (Locality Load Balancing) en version bêta.
  • Évaluer les capacités d'analyse des métriques.

Fonctionnement

L'objectif est d'accéder à un microservice ("hono-app-america" ou "hono-app-europe") via Istio, en redirigeant les requêtes selon leur origine géographique simulée par un tag 'x-region' ajouté par le proxy Caddy.

Processus de la requête

  1. Le proxy (Caddy) ajoute un tag 'x-region' à la requête.
  2. La requête passe par l'Ingress Gateway d'Istio.
  3. Elle est redirigée vers le Hono Gateway.
  4. La VirtualService décide vers quel service (America ou Europe) la requête sera envoyée.
  5. Le service transmet la requête aux pods appropriés.

Technologies utilisées

  • Terraform : Outil IaC pour définir et provisionner des ressources d'infrastructure.
  • Kubernetes : Plateforme open-source pour l'orchestration de conteneurs.
  • hono : Framework web rapide pour créer des API.
  • Istio : Plateforme de service mesh pour la gestion, la sécurisation et la surveillance des microservices.

Structure du dépôt

  • apps : Images de 'hono-app-america' et 'hono-app-europe'.
  • assets : Images et ressources pour la documentation.
  • aws : Fichiers de configuration Terraform pour le déploiement sur AWS EKS.
  • minikube : Scripts de déploiement pour Minikube, configurations pour Caddy, Helm charts, etc.

Dépendances

Ce projet nécessite :

  • GIT
  • terraform
  • aws
  • docker
  • helm
  • minikube
  • istioctl

L'installation de Docker doit être effectuée manuellement.

Déploiement avec Terraform et AWS (EKS)

Option de déployer l'infrastructure Kubernetes sur EKS avec Terraform, mais recommandé d'utiliser Minikube pour réduire les coûts.

Déploiement local avec Minikube

Instructions pour déployer l'infrastructure localement avec Minikube et les étapes pour construire des images Docker, configurer Helm, installer Istio, et déployer l'application Hono.

Simulation des requêtes

Utiliser le script request.ps1 pour simuler des requêtes de différentes régions via le proxy Caddy, visualiser les résultats avec le tableau de bord Kiali.

Istio et Kiali

Istio utilise des proxies Envoy pour gérer le trafic et offre des fonctionnalités de gestion du trafic, de sécurité et de surveillance. Kiali permet de visualiser la structure et la santé du service mesh.

Topic 2

Voici le lien gitlab du projet : Interview (opens in a new tab)

Voici le lien pour tester l'application : Interview (opens in a new tab)s

Application de préparation aux entretiens d'embauche

Ce référentiel contient une application conçue pour aider les étudiants et les professionnels à se préparer aux entretiens d'embauche. Le projet permet aux utilisateurs de s'entraîner à répondre à des questions d'entretien typiques regroupées en trois catégories : compétences comportementales, compétences techniques et questions mixtes.

Description du Projet

Contexte Actuel Dans un environnement professionnel compétitif, la préparation aux entretiens est cruciale pour réussir. Ce projet offre une manière structurée et interactive de se préparer à divers aspects d'un entretien.

Objectif L'objectif de ce projet est de fournir une plateforme interactive où les utilisateurs peuvent s'entraîner à répondre à des questions d'entretien, recevoir des commentaires instantanés et améliorer leurs compétences en communication et techniques.

Fonctionnalités
  • Chargement de Fichier : Les utilisateurs peuvent télécharger des fichiers PDF contenant des informations sur le module d'entretien, les compétences requises, etc.
  • Mode Interaction Directe : Les questions sont posées via une interface et l'utilisateur doit répondre verbalement. Les réponses sont transmises via Whisper pour analyse.
  • Mode Document Révisé : Possibilité de générer un fichier PDF contenant à la fois les questions et les réponses prédéfinies pour la révision et la pratique hors ligne.
Technologies Utilisées
  • OpenAI ChatGPT : Utilisé pour générer des réponses dynamiques aux questions des utilisateurs. C'est l'API officielle d'OpenAI pour la génération de texte.
  • Whisper : Utilisé pour transcrire les réponses orales en texte. C'est un service dockerisé qui écoute les entrées audio et les transcrit en texte.
  • PDFKit : Utilisé pour la création et la manipulation de documents PDF.
  • Next.js : Un framework React prêt pour la production pour la création d'applications web.
  • Tailwind CSS : Un framework CSS utilitaire pour la création rapide de designs personnalisés.
  • FFMPEG : Utilisé pour convertir des fichiers audio en différents formats et pour la gestion des flux audio.
Configuration du Projet
  1. Cloner le Référentiel : Clonez le référentiel sur votre machine locale pour commencer le développement ou les tests.
  2. Installer les Dépendances : Installez toutes les dépendances requises en utilisant pnpm install.
  3. Configuration de l'API : Assurez-vous d'obtenir une clé API valide d'OpenAI et placez-la dans le fichier .env.
Configuration des Variables d'Environnement

Pour configurer les variables d'environnement nécessaires à l'exécution de votre projet, vous devez créer un fichier .env à la racine de votre projet. Ce fichier devrait inclure les configurations essentielles pour intégrer les services externes utilisés par votre application.

Contenu du Fichier .env

Insérez les lignes suivantes dans votre fichier .env, en remplaçant les valeurs fictives par vos informations spécifiques :

Endpoint pour le service Whisper utilisé pour transcrire les réponses orales

NEXT_PUBLIC_WHISPER_ENDPOINT=http://localhost:9000 (opens in a new tab)

Clé API OpenAI pour utiliser les services comme ChatGPT (GPT-3.5 Turbo est utilisé pour l'efficacité économique, mais vous pouvez utiliser n'importe quelle clé API GPT pour des résultats plus précis)

OPENAI_API_KEY=<Votre_Clé_API_OpenAI>

Mes tâches liées à ces deux projets