Google économise la DATA en réduisant à fond le poids des mises à jour sur Android

Florian Innocente |

Google a mis au point un nouveau mécanisme pour réduire encore plus la taille des mises à jour qu'il envoie vers les smartphones Android. Un procédé gagnant-gagnant : c'est moins de données à faire transiter depuis ses serveurs et le destinataire récupère plus vite sa mise à jour, laquelle ponctionne moins son forfait s'il n'est pas en Wi-Fi.

Avec "l'App Slicing", annoncé pour iOS 9, Apple avait élaboré un système équivalent, du moins dans l'intention. Après un faux départ, il a été réinstauré sur l'App Store (documentation développeurs). Il s'agit d'envoyer vers l'utilisateur des mises à jour dont le contenu est optimisé pour son appareil iOS (pas besoin des images d'un iPad si l'on a un iPhone, par exemple). Cependant, si l'on constate bien des écarts sensibles entre le poids d'une app annoncée sur l'App Store et ses mises à jour disponibles, la différence n'est pas toujours aussi importante que celle obtenue par Google.

C'est un paradoxe, alors que l'on parle d'applications mobiles, celles-ci n'ont plus rien de légères. Word sur iOS pèse pas moins de 482 Mo et une autre telle que Dropbox n'a rien d'un poids plume non plus avec ses 132 Mo. Des dizaines de milliards d'apps et de jeux sont téléchargés sur Google Play, rappelle Andrew Hayden, un ingénieur de Google, dans un billet. D'où l'impérieuse nécessité de limiter le poids de ces transferts.

Cet été, Google a utilisé l'algorithme bsdiff pour réduire en moyenne de 47 % la taille d'une mise à jour, comparé au poids total de l'app. Un cran supplémentaire a été atteint après l'adoption d'une nouvelle méthode dite du File-by-File patching.

En moyenne, une mise à jour peut maintenant voir son poids réduit de 65 %, voire de 90 % dans le meilleur des cas. Cela se traduit par une économie journalière de 6 pétaoctets, soit 6 000 To qui n'auront plus à être acheminés vers les utilisateurs.

Les applications Android sont des fichiers APK, qui eux-même sont à la base des archives ZIP d'un genre particulier. C'est l'algorithme Deflate qui est le plus souvent utilisé pour compresser ces contenus. Il a un défaut, si l'on modifie ne serait-ce qu'une infime partie du fichier original (par exemple des fautes corrigées dans l'interface), sa recompression va produire un résultat très différent du précédent. Il sera fort compliqué de comparer deux versions compressées d'une même app pour trouver ce qui a changé à l'intérieur.

Imaginez que vous soyez l'auteur d'un livre sur le point d'être publié, et que vous souhaitiez y changer une seule phrase - il est beaucoup plus simple de dire à votre éditeur laquelle doit être modifiée et de quelle manière plutôt que de lui renvoyer le livre complet modifié.

Le File-by-File patching fait cela, il consiste à envoyer vers le terminal de l'utilisateur un petit fichier qui contient les changements ainsi que l'endroit où les appliquer.

Côté serveur, Google va donc décompresser l'ancienne version de l'app et la nouvelle, puis générer le fichier qui liste les différences dans leur code respectif. Ce fichier est compressé puis envoyé vers le téléphone. L'ancienne version de l'app qui y est installée ainsi que ce fichier sont décompressés, cette mise à jour est appliquée et l'app est recompressée.

Sur un jeu comme Farm Heroes Super Saga qui pèse 71 Mo, la précédente méthode donnait une mise à jour de 13,4 Mo alors que la nouvelle descend jusqu'à 8 Mo.

Cliquer pour agrandir

Côté pile, la mise à jour envoyée est beaucoup plus compacte coté face, ce travail de décompression/recompression sur le téléphone prend plus de temps. Sur un smartphone de 2015, il faut compter un peu plus d'une seconde par méga-octet et cela augmentera sur des modèles moins récents ou peu puissants.

En gros, explique Andrew Hayden, pour une mise à jour dont la taille a été divisée par deux, le temps de traitement pour son application est doublé. Par conséquent, Google limite pour le moment l'emploi de cette technique aux mises à jour envoyées automatiquement, pendant la nuit. De manière à éviter qu'un utilisateur qui a demandé manuellement une mise à jour ne trouve pas le temps trop long. Reste que les résultats sont spectaculaires au vu des quelques exemples choisis.

avatar JonasL | 

Très intéressant. En gros on se retrouve devant le dilemme poids/puissance, comme pour la compression des images sur le Web par exemple. J'imagine qu'il y a beaucoup de pistes de travail dans cette direction pour tous les OS

avatar Fabiokick | 

Ce n'est pas tant la taille des mises à jour qui m'inquiète mais plutôt le cache stocké par les applications. Word pèse 482 Monsieur mais pas très rapidement à 1.2 G en à peine deux semaines d'utilisation. Pourtant je ne travaille que sur 2 documents à moins de 2 Mo et qui sont d'ailleurs stocké sur Onedrive. Comment expliquer les 750 Mo de cache ??
IOS tout comme Android devrait permettre la suppression du cache des apps. Vivement cette fonction dans ios 11, parce que quand t'as que 16 Go, le cache devient encore plus problématique que la taille des mises à jour !

avatar JonasL | 

+ 1. Il faudrait effectivement que les caches soient gérées efficacement...

avatar Ast2001 | 

Je n'ai pas compris cette partie de ton propos:

"IOS tout comme Android devrait permettre la suppression du cache des apps."

Veux-tu dire "IOS devrait permettre la suppression du cache des apps comme le fait Android" ?

ou "IOS et Android devraient permettre la suppression du cache des apps." ?

La deuxième formulation étant fausse :-)

De la non précision de la langue française :-)

avatar Ast2001 | 

[Doublon]

avatar hirtrey | 

@Fabiokick

Tu as un problème avec ton téléphone car j'utilise très souvent Word et il occupe 376 Mo dont 10 Mo de documents

avatar jb18v | 

C'est certain qu'à chaque màj de l'appli Facebook pour ne citer qu'elle, j'ai envie de distribuer des baffes. Déjà ils se sont mis à pondre des màj toutes les 4 semaines, mais pour corriger quelques portions de code et 3 émoticones, on se farcit une appli à 150Mo.. :S

+1 pour la remarque sur les caches

avatar narugi | 

Oui, car j'en ai marre de remettre à 0 min iPhone pour réinitialiser le cache.
L'application l'Équipe permet la suppression du cache donc il est tout à fait possible de le généraliser sur le reste des apps.

Vivement que iOS puisse le gérer en natif. Ça serait tellement top !

avatar r e m y | 

@ast2001
C'est là où la grammaire vient en aide à la précision du propos...
"devrait permettre" étant au singulier, il n'a qu'un seul sujet, donc iOS.

C'est donc bien d'iOS dont il est question, qui devrait permettre, tout comme Android (le permet), de vider le cache des applis.

avatar Ast2001 | 

Tu as effectivement raison et merci pour ta vigilance !

avatar r e m y | 

@narugi
Ce matin j'ai constaté que l'application RATP sur mon iPhone me bouffait 850 Mo.
Je l'ai supprimée puis re téléchargée et elle n'occupe plus que 100 Mo...
C'est clair que si on pouvait purger les caches et les données stockées inutilement par certaines applis, ce serait bien.

avatar foxot | 

Le problème n'est pas tant la taille des applications que les limites imposées par iOS, à l'heure des forfaits comportant plusieurs (dizaines) giga-octets de données et de la 4G, à nous empêcher de télécharger des applications un peu lourdes ou des mises à jour.

avatar foxot | 

@foxot

Surtout qu'étant chez Red j'ai 20Go de données et j'ai un meilleur débit en 4G qu'en wifi pour mon cas.

CONNEXION UTILISATEUR