IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Swift Discussion :

Apple migre son service de surveillance des mots de passe de Java vers Swift pour optimiser les performances


Sujet :

Swift

  1. #1
    Chroniqueur Actualités

    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Juin 2023
    Messages
    1 406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2023
    Messages : 1 406
    Par défaut Apple migre son service de surveillance des mots de passe de Java vers Swift pour optimiser les performances
    Apple migre son service de surveillance des mots de passe de Java vers Swift et obtient une augmentation de 40 % des performances
    avec une réduction de 85 % du nombre de lignes de code

    Apple a annoncé avoir migré avec son service de surveillance des mots de passe de Java à Swift. L'équipe responsable a ajouté que cette migration a permis une augmentation de débit de 40 % et une réduction de 50 % de l'utilisation de la capacité de Kubernetes. La réécriture a permis de résoudre les problèmes de latence du ramasse-miettes de Java et de consommation élevée de la mémoire, Swift offrant des temps de réponse inférieurs à la milliseconde et des capacités de démarrage à froid plus rapides. Elle aurait également permis de réduire de 85 % le nombre de lignes de code tout en gérant des milliards de requêtes quotidiennes pour la détection des brèches.

    Le service de surveillance des mots de passe d'Apple est intégré dans l'écosystème plus large de l'application « Mot de passe ». Il vérifie en toute sécurité si les informations d'identification sauvegardées d'un utilisateur sont apparues dans des violations de données connues, sans révéler des informations privées à Apple. Il traite des milliards de demandes par jour, en effectuant des comparaisons cryptographiques à l'aide de protocoles préservant la vie privée.

    Les problèmes techniques liés à l'ancienne version du service

    Initialement écrit en Java, le service présentait des limites de performance et de gestion de la mémoire. Selon l'équipe d'Apple, en dépit des optimisations avancées de la machine virtuelle Java (JVM), l'outil ne répondait pas de manière optimale aux exigences croissantes de mise à l'échelle et de rapidité. Selon l'équipe d'Apple, la collecte de déchets provoquait des temps de pause imprévisibles en cas de charge, ce qui dégradait la cohérence de la latence.

    Nom : resource utilization.png
Affichages : 44768
Taille : 21,2 Ko

    Les frais généraux de démarrage (initialisation de la JVM, chargement des classes et compilation juste à temps (JIT)) ralentissaient la capacité du système à évoluer en temps réel. En outre, l'empreinte mémoire du service, qui atteint souvent des dizaines de gigaoctets par instance, réduit l'efficacité de l'infrastructure et augmente les coûts d'exploitation. Selon l'équipe d'Apple, la réécriture du service avait pour but de parvenir aux résultats suivants :

    • optimiser les performances et l'évolutivité du service ;
    • réduire le délai de démarrage des instances ;
    • contourner les limites posées par la gestion de la mémoire en Java (notamment le ramasse-miettes) ;
    • profiter de la syntaxe expressive et de la sécurité offerte par le langage Swift.


    « Pendant des années, nous avons utilisé Java pour alimenter des services critiques à grande échelle en raison de sa stabilité et de ses performances éprouvées. Mais l'approche de gestion de la mémoire de Java ne correspond plus à nos exigences croissantes et à nos objectifs d'efficacité », a écrit l'équipe.

    Les raisons qui ont motivé le choix de Swift pour la réécriture

    Développé à l'origine comme un langage côté client pour les plateformes Apple, Swift s'est depuis étendu à des cas d'utilisation côté serveur. L'équipe d'ingénieurs d'Apple a choisi Swift non seulement pour son alignement sur l'écosystème, mais aussi pour sa capacité à offrir des performances constantes dans les environnements à forte intensité de calcul. La réécriture s'est également appuyée sur Vapor, un framework Web Swift très répandu.

    Nom : password monitoring service.png
Affichages : 10340
Taille : 48,8 Ko

    D'autres paquets personnalisés ont été mis en œuvre pour gérer les opérations sur la courbe elliptique, l'audit cryptographique et les intergiciels spécifiques au domaine de la surveillance des mots de passe. « Au lieu de simplement augmenter les ressources matérielles, nous recherchions un langage plus efficace pour soutenir notre croissance tout en réduisant la charge des serveurs », a expliqué l'équipe d'Apple dans un récent billet de blogue.

    Citation Envoyé par L'équipe d'Apple

    Avant de chercher un langage de remplacement, nous avons cherché des moyens d'ajuster la JVM pour obtenir les performances requises. Le ramasse-miettes G1 de Java a atténué certaines limites des ramasse-miettes précédents en introduisant des fonctionnalités telles que des temps de pause prévisibles, une collecte basée sur les régions et un traitement simultané.

    Cependant, même avec ces avancées, la gestion du ramasse-miettes à grande échelle reste un défi en raison de problèmes tels que les pauses GC prolongées sous des charges élevées, l'augmentation de la charge de travail liée aux performances et la complexité du réglage fin pour des charges de travail diverses.
    La gestion déterministe de la mémoire de Swift, basée sur le comptage des références plutôt que sur la collecte des déchets, a éliminé les pics de latence causés par les pauses de la collecte des déchets. Cette cohérence s'est avérée essentielle pour un système à faible latence à l'échelle. Après la réécriture, Apple a signalé des temps de latence inférieurs à la milliseconde dans le 99,9e percentile et une baisse spectaculaire de l'utilisation de la mémoire.

    Gains techniques et opérationnels obtenus après la réécriture

    Selon l'équipe, la migration vers Swift s’est révélée très bénéfique. Les instances Swift consommaient des centaines de mégaoctets, contre des dizaines de gigaoctets avec Java. Les temps de démarrage se sont également améliorés. Sans surcharge d'initialisation de la JVM ni échauffement JIT, les services Swift peuvent démarrer à froid plus rapidement, ce qui répond aux exigences d'Apple en matière de mise à l’échelle automatique globale.

    Concrètement, le débit du service a augmenté de 40 %, la consommation mémoire a diminué de près de moitié, et la capacité de traitement par instance a été nettement améliorée. En parallèle, le code source est devenu beaucoup plus concis, avec environ 85 % de lignes de code en moins comparé à l'implémentation Java, ce qui facilite la maintenance et la lecture. Ce qui fait écho aux critiques de longue date selon lesquelles Java est un langage verbeux.

    Cette migration marque un tournant. Swift démontre qu'il est capable de soutenir des services cloud à très grande échelle, bien au-delà de son usage traditionnel côté client. Cela illustre aussi la volonté d'Apple de rationaliser ses technologies internes autour de langages plus modernes et mieux adaptés à ses besoins spécifiques. Selon l'équipe, la sécurité est un autre domaine dans lequel Swift adopte une approche distinctive par rapport à Java.

    « Lorsque vous réécrivez un produit dans une nouvelle pile, vous le créez pratiquement à partir de zéro. Vous faites les choses correctement et vous n'apportez pas tout le patchwork et la dette technique. C'est ce qui a provoqué cette accélération. Ce n'est pas le changement de langue », a écrit un critique.

    Conclusion

    La migration d'Apple reflète une tendance plus large : le passage à des langages orientés vers la performance pour des services fonctionnant à une très grande échelle. Meta utilise Rust depuis longtemps, depuis des systèmes de gestion de code source ultraperformants jusqu'aux langages de programmation pour la blockchain. Netflix a introduit Rend, un proxy haute performance écrit en Go, pour prendre le relais d'un client basé sur Java interagissant avec Memcached.

    AWS s'appuie de plus en plus sur Rust dans les services où les performances déterministes et la faible utilisation des ressources améliorent l'efficacité de l'infrastructure. Bien que cela ne signifie pas que Java et les langages similaires sont en déclin, il est de plus en plus évident qu'à l'extrémité supérieure des exigences de performance, les entreprises et les ingénieurs logiciels constatent que les runtimes à usage général ne suffisent plus désormais.

    L'année dernière, le navigateur Ladybird a annoncé qu'il commencera à utiliser le langage Swift au lieu de C++. Selon le développeur Andreas Kling, Swift offre une sécurité contre la course à la mémoire et aux données, et est un langage moderne avec une ergonomie solide. Il possède une meilleure interopérabilité avec le C++ pour une adoption progressive. L'équipe a déclaré qu'elle adoptera Swift après la sortie de Swift 6 de sa phase bêta.

    Source : billet de blogue de l'équipe d'Apple

    Et vous ?

    Quel est votre avis sur le sujet ?
    Que pensez-vous des gains de performances obtenus après la migration du service de Java vers Swift ?
    L'industrie adopte de plus en plus des langages orientés vers la performance et la sécurité de la mémoire comme Rust et Swift. Qu'en pensez-vous ?

    Voir aussi

    Oracle annonce la disponibilité de Java 24, apportant des améliorations en matière de performance, de stabilité et de sécurité à la plateforme pour permettre aux entreprises d'accélérer leur croissance

    Le navigateur Ladybird commencera à utiliser le langage Swift au lieu de C++ cet automne, car Swift offre une sécurité de la mémoire et est également un langage moderne avec une ergonomie solide

    Au-delà de Docker : Apple dévoile discrètement "Container", un framework Swift open source pour faciliter l'exécution de containers Linux sur macOS et améliorer la performance et la sécurité

  2. #2
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 110
    Par défaut
    Le code java fait par apple devait être particulièrement horrible pour avoir un tel ecart de performance.

    A mais oui, swift c'est le nouveau language d'apple, quel coincidance.

    Ca manque cruellement d'objectivité, qu'est ce que ca vient faire ici ?
    Systèmes d'Informations Géographiques
    - Projets : Unlicense.science - Apache.SIS

    Pour un monde sans BigBrother IxQuick ni censure RSF et Les moutons

  3. #3
    Membre éprouvé
    Avatar de calvaire
    Homme Profil pro
    .
    Inscrit en
    Octobre 2019
    Messages
    2 038
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Singapour

    Informations professionnelles :
    Activité : .
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2019
    Messages : 2 038
    Par défaut
    Citation Envoyé par eclesia Voir le message
    Le code java fait par apple devait être particulièrement horrible pour avoir un tel ecart de performance.

    A mais oui, swift c'est le nouveau language d'apple, quel coincidance.

    Ca manque cruellement d'objectivité, qu'est ce que ca vient faire ici ?
    je pense pas qu'apple ment sur le gain mais qu'ils comparent du vieux java avec du swift moderne.
    java a fait de gros progrès niveau perf assez récemment, il y'a quelques années c'était inutilisable en microservice mais aujourd'hui je le re-utilise avec la dernière version et Spring AOT + GraalVM Native.

    c'est comme migrer de php5 a du nodejs ou java avec +40% de perf, c'est assez facile quand on sait que php7 a considérablement améliorer les perfs.

    Faire du code performant en java nécessite une bonne maitrise, c'est pas un langage "plug and play", je n'ai jamais codé en swift mais c'est peut etre plus performant de base sans utiliser de lib externe.
    La France est un pays qui redistribue tout sauf de l'espoir.

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/07/2019, 12h04
  2. Réponses: 11
    Dernier message: 17/05/2018, 12h48
  3. Réponses: 0
    Dernier message: 03/06/2017, 15h55
  4. enregistrer et masquer des mots de passe
    Par champion dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 30/08/2004, 20h10
  5. Au sujet des mots de passe
    Par FranT dans le forum Langage
    Réponses: 6
    Dernier message: 17/09/2002, 22h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo