Retour

Blog

Blog

Ingénierie

Ingénierie

19 déc. 2023

Construire la sécurité EDAMAME : Notre parcours avec Flutter et Rust

Frank Lyonnet

Introduction

Dans notre quête pour créer quelque chose d'impactant dans le monde de la technologie, nous avons entrepris un projet ambitieux : EDAMAME Security, une application de sécurité multiplateforme combinant Flutter et Rust. Notre équipe, avec des expériences et des perspectives diverses, est ravie de partager notre parcours et les leçons apprises en cours de route.

Qu'est-ce qu'EDAMAME Security ?

EDAMAME Security est notre réponse au besoin croissant de protection numérique complète. Voici ce qu'il englobe :

  • Normes de Sécurité : Elle utilise des normes comme CIS Benchmarks mais inclut également l'aspect personnel de l'analyse de posture de sécurité.

  • Gestion de l'Identité Numérique : Intégration avec HaveIBeenPwned.com pour la gestion des identités en ligne.

  • Scanner de Réseau pour Tous : Inspiré par 'nmap', nous avons rendu le scan de réseau accessible à tous.

  • Agent de Gestion Axé sur la Vie Privée : Il peut se connecter à notre plateforme "sans MDM" (voir https://www.edamame.tech) pour s'occuper de tous les dispositifs, y compris les appareils personnels ou ceux des entrepreneurs, garantissant respect de la vie privée et confidentialité.

  • Large Support de Plateformes : Disponible sur macOS, Windows, iOS, et bientôt sur Linux, Android, et Chromebook.

Notre Expérience avec Flutter

Flutter était notre choix pour sa flexibilité et sa liberté créative. Voici un aperçu de notre expérience :

  • Commencer de Zéro : Nous avons adopté une approche descendante, permettant même les idées les plus folles comme un 'radar' de scan de réseau.

  • Défis des Composants : Certains composants, tels que Bitsdojo Window, ont nécessité une attention supplémentaire en raison d'un entretien insuffisant.

  • Courbe d'Apprentissage : Nous l'avons trouvée assez raisonnable, contrairement à certaines attentes.

  • Développement Multiplateforme : Étonnamment fluide, démentant les mythes sur sa complexité.

  • Assistance IA : Un outil utile qui a généralement bien fonctionné pour nous. En fait, le radar a été construit avec l'aide d'une version précoce de GPT-4…

Rust : La Centrale Énergétique

Rust nous a apporté la performance et la sécurité dont nous avions besoin, bien que cela ait été avec ses défis :

  • Performance et Sécurité : C'étaient non négociables pour nous, et Rust a répondu à nos attentes.

  • Philosophie et Culture : Nous avons adopté l'éthique de Rust, souvent en le qualifiant avec humour de "vraie langue de l'amour."

  • Courbe d'Apprentissage : Admettons-le, difficile, particulièrement avec des concepts comme l'emprunt et les Futurs.

  • Complexité des Futurs : Cela a présenté des erreurs cryptiques, nécessitant de plonger profondément dans la résolution de problèmes.

L'Expérience du Pont Flutter Rust

Utiliser le Flutter Rust Bridge a été une expérience mitigée :

  • Automatisation FFI : Une excellente idée, mais pas sans ses bogues.

  • Bogues et Solutions Défiants : Nous avons passé des jours, parfois des semaines, à résoudre des problèmes comme le bug du fichier multi-API.

  • Régressions et Erreurs : De nouvelles mises à jour apportaient parfois de nouveaux maux de tête.

  • Investissement de Temps : Déboguer et trouver des solutions a absorbé une part significative de notre temps.

Flutter => Rust => Natifs (Swift, Java…): Devenons Fous

Nous ne nous sommes pas arrêtés là avec le mélange des langages. Nous avions besoin d'appels système natifs non pris en charge dans Rust et qui ne pouvaient pas être réalisés dans Flutter.

  • macOS/iOS : certains crates comme swift-rs fournissent un pont fonctionnel entre Rust et Swift, mais encore une fois, c'est à la pointe de la technologie.

  • Android : encore une fois, ce n'est pas un cas d'utilisation standard et nous avons dû réfléchir.

  • La maintenance globale est difficile pour cette partie du code.

App Stores … Ça Marche !

Nous avons réussi à créer des exécutables pour tous les magasins sans aucun problème.

  • Apple : n'oubliez pas d'activer l'exception JIT si vous utilisez le droit d'accès à l'exécution renforcé !

  • Microsoft : avoir des notifications fonctionnelles peut être un défi.

Conclusion

Avec le recul, combiner Flutter et Rust a été un rêve devenu réalité à bien des égards. Nous avons apprécié le processus, malgré les frustrations occasionnelles avec le pont Flutter Rust. Bien que nous n'ayons pas pu contribuer autant que nous l'aurions souhaité au projet du pont, nous apprécions l'équipe derrière celui-ci.

Dans l'avenir, nous avons les yeux rivés sur la nouvelle version v2 du pont.

En résumé, notre aventure dans la construction d'EDAMAME Security a été un témoignage de la réalité du développement d'applications multiplateformes - difficile, éclairante et finalement gratifiante. C'est un parcours dont nous sommes fiers et que nous sommes impatients de poursuivre.

Voulez-vous essayer ? Regardez ici : https://github.com/edamametechnologies/


Frank Lyonnet

Partagez ce post