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

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

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

Le , par Mathis Lucas

10PARTAGES

3  0 
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.


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.


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é
Vous avez lu gratuitement 43 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de eclesia
Rédacteur https://www.developpez.com
Le 20/06/2025 à 1:10
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 ?
0  0