6. Technologies - Karitchi/infolab GitHub Wiki

Code

Frontend + Backend: next.js

  • Full Stack : Next.js combine développement frontend et backend, simplifiant ainsi le processus de développement en utilisant une seule stack basée sur React et Node.js.

  • Grosse Communauté : Il est soutenu par une large communauté active, offrant de nombreuses ressources, tutoriels et bibliothèques pour faciliter le développement.

  • Fonctionnalités Puissantes : Next.js propose des fonctionnalités avancées comme le rendu côté serveur (SSR), le routage dynamique et la génération de pages statiques (SSG), optimisant ainsi les performances tout en restant facile à utiliser.

  • Serveur de Dev Intégré : Le serveur de développement intégré et le hot reloading permettent de gagner du temps en évitant des configurations supplémentaires et en facilitant les ajustements en temps réel.

    Bien que plusieurs technologies auraient pu être choisies pour ce projet, comme Vue.js ou Angular pour le frontend, ou encore Express.js pour le backend, toutes ces options auraient été fonctionnelles et capables de répondre aux besoins de l'application. Cependant, au final, l'utilisateur final ne percevrait aucune différence significative en termes d'expérience utilisateur ou de performance.

    Ainsi, le choix de Next.js ne s'est pas basé uniquement sur ses capacités techniques, mais aussi sur des critères pratiques. Next.js, avec sa combinaison de fonctionnalités puissantes et de simplicité d'utilisation, permet de maximiser l'efficacité de l'équipe de développement tout en assurant un rendu fluide et performant pour l'utilisateur. Ce choix reflète une volonté d'optimiser le processus de développement tout en garantissant une expérience utilisateur de qualité, plutôt que de simplement rechercher une solution parmi de nombreuses alternatives fonctionnelles.

Base de données: postgresql

  • Relationnelle, open source, fiable et performante : Idéale pour stocker et gérer les données des capteurs.

  • Intégration avec Next.js : Communication fluide : Assure une gestion efficace des requêtes et un accès rapide aux informations.

  • Fonctionnalités avancées : Transactions complexes et conformité SQL : Adaptée pour stocker des données structurées avec cohérence.

  • Avantages budgétaires : Gratuit et bien documenté : Parfait pour un projet scolaire avec un support d’une large communauté.

  • Comparaison avec d'autres bases : Évolutif : Robustesse et fonctionnalités avancées, convenant aux besoins actuels et futurs.

  • Standard : Répond aux exigences du projet tout en garantissant des performances solides et une maintenance facile.

    Comparé à d'autres bases comme MongoDB, MySQL ou encore firebase, PostgreSQL est gratuit, open source, robuste et offre des fonctionnalités avancées. Il est parfait pour ce projet simple, tout en restant évolutif pour des fonctionnalités futures.

devsecops

Environnement de développement: docker

Docker facilite l'isolation de l'environnement de développement en fournissant des conteneurs qui permettent de reproduire le même environnement partout, ce qui améliore la portabilité du projet. Cela garantit que l'application se comportera de la même manière en développement et en production, ce qui simplifie le processus de déploiement.

Microcontrôleur: MicroPython

est un langage léger, parfait pour les microcontrôleurs comme le Raspberry Pi Pico W. Il est facile à utiliser et bien adapté pour gérer les capteurs connectés, permettant un contrôle rapide et efficace du matériel tout en restant simple à intégrer avec le reste de l’application.

Hardware

Microcontrôleur: Raspberry Pi Pico W

Le Raspberry Pi Pico W est un microcontrôleur compact avec connectivité Wi-Fi, idéal pour un projet nécessitant la collecte de données depuis des capteurs et l’envoi des informations vers un serveur. Il est à faible coût, fiable, et facilement programmable avec MicroPython.

Capteurs

  • DHT22 (Température et Humidité) :
    Nous avons choisi le DHT22 en raison de sa précision supérieure et de son coût abordable par rapport à d'autres capteurs comme le DHT11, qui, bien qu'économique, offre une précision inférieure et une plage de mesure limitée. De plus, il s'intègre facilement au Raspberry Pi Pico W.

  • MAX4466 (Niveau sonore) :
    Le MAX4466 a été sélectionné pour sa sensibilité élevée, ce qui le rend plus adapté que d'autres capteurs de bruit, tels que les microphones analogiques basiques, qui peuvent avoir des performances inégales. Il est également peu onéreux et s'adapte facilement au Raspberry Pi Pico W.

  • MQ-7 (Monoxyde de carbone) :
    Le MQ-7 a été retenu pour sa capacité à détecter les faibles niveaux de monoxyde de carbone avec précision. Comparé à d'autres capteurs de gaz comme le MQ-2, qui sont moins spécifiques, le MQ-7 se concentre sur le CO, assurant une surveillance plus fiable. De plus, son coût abordable et sa compatibilité avec le Raspberry Pi Pico W en font un choix idéal.

DevOps

Hébergement: AWS EC2

AWS EC2 a été sélectionné pour sa flexibilité et son évolutivité, permettant d'adapter rapidement les ressources en fonction de la charge de l'application. Sa haute disponibilité assure un accès constant à l'interface web. De plus, AWS offre une infrastructure robuste, avec des options de sécurité avancées. C’est également l'hébergement le plus avantageux, car AWS propose une offre de VPS, des adresses IPv4 fixes et du stockage gratuit, ce qui nous permet de maintenir des coûts très bas.

CI/CD

  • Docker :

    Docker a été choisi en raison de sa standardisation dans le développement moderne et de sa capacité à créer des environnements conteneurisés, facilitant ainsi la livraison continue (CI/CD) et la gestion des dépendances. En utilisant des images d’application, nous garantissons que le code fonctionne de manière identique dans les environnements de développement, de test et de production. De plus, Docker simplifie le déploiement de l'application sur le serveur de manière beaucoup plus aisée qu'avec une configuration bare metal. L’automatisation des mises à jour de l'application est assurée à chaque nouveau commit poussé sur la branche principale, augmentant ainsi l'efficacité. En outre, l'infrastructure est définie avec du code, ce qui facilite la gestion et le déploiement des environnements. Cela renforce également l'isolation des applications, améliorant la sécurité, tout en permettant un déploiement sans temps d'arrêt grâce à la fonctionnalité de réplicas.

  • GitHub Actions :

    GitHub Actions a été choisi pour son intégration fluide avec GitHub, facilitant l'automatisation des tests et des déploiements à chaque modification du code. Cette approche améliore l'efficacité du développement, permet une gestion des versions simplifiée et assure la qualité du code en garantissant que chaque changement est testé avant d'être déployé.

  • Watchtower :

    Watchtower a été retenu pour sa fonctionnalité d'automatisation des mises à jour de conteneurs Docker en production. Cela garantit que nous utilisons toujours la dernière version de l'application sans nécessiter d'intervention manuelle, ce qui optimise la maintenance et réduit les risques de vulnérabilités liées aux versions obsolètes.


Chaque technologie a été soigneusement sélectionnée pour ses avantages et sa compatibilité avec les exigences du projet, afin de garantir une solution complète et performante.