J'ai passé ma journée à regarder un peu le fonctionnement interne de transfert.free.fr
C'est du tout simple, une API maison qui contrôle et donne accès au service S3 Scaleway (les requêtes d'envoi et de téléchargement des fichiers se font directement sur s3.fr-par.scw.cloud, il n'y a pas d'autre frontal web data).
J'ai reproduit le fonctionnement complet du service (upload et download) en un fichier bash de 200 lignes (à base de curl et jq grosso modo), je peux tout faire en CLI.
Points "intéressants":
- les uploads se font en multipart sur S3, avec des parties fixes de 100 MB. On peut paralléliser les upload de parties différentes, ce qui semble être fait en accès navigateur.
- l'API distribue au départ les accès PUT pour chaque partie, avant de commencer les upload
- l'API semble reposer sur Kubernetes (chez Scaleway)
- l'API doit être accédée via une IP Free, sinon aucune commande d'upload possible. Mais l'upload des parties ensuite peut être fait avec n'importe quelle IP puisqu'il balance sur s3.fr-par.scw.cloud directement.
- la limite à 50 Go par fichier n'est implémentée que sur l'accès web (en Javascript j'imagine), l'API et le S3 n'ont pas cette limite, on peut envoyer des fichiers + gros. Edit: en l'état actuel avec des parties de 100M, le fichier complet est limité à 1000 fois cette valeur (environ 100G donc), car le S3 Scaleway ne fait pas au délà de 1000 parties par object.
- On peut mettre une rétention des fichiers supérieure à 30 jours via l'API, mais aucune idée si cette valeur est réellement prise en compte.
- En fin d'upload, pour valider l'intégrité de toutes les parties, l'API demande au client d'envoyer les "Etag" (vocabulaire S3, ce sont les hash MD5) de chaque partie uploadée pour les comparer sur le serveur S3. Ça demande donc des calculs de hash supplémentaires par rapport à un upload classique HTTP (l'ancien dl.free.fr par exemple).
- l'upload semble désormais possible depuis Free Mobile (testé rapidement)
A mon avis, la restriction aux clients Iliad est bien définitive, sinon aucun intérêt pour ce nouveau service et on revient sur la même histoire que dl.free.fr ! Avec cette contrainte, Free s'assure de pouvoir identifier précisément l'uploadeur de chaque fichier, donc tracing très précis et sans erreur possible puisqu'il maîtrise tout de bout en bout.
Il est probable que la limite à 50Go saute très rapidement, elle est sûrement là pour analyser la montée en charge au lancement du service, mais n'a aucun sens pour la suite. Le service S3 Scaleway sait gérer des fichiers de taille énorme.
J'attire l'attention sur un point : ceux qui voudraient utiliser ce service comme du stockage gratuit de backups par exemple. C'est certes possible, mais n'oubliez pas qu'en plus du service S3 Scaleway, ce service est en plus dépendant de Free directement avec sa fameuse API. Donc même s'il y a un certain nombre de garanties sur le S3 Scaleway, Free peut décider à tout moment d'éliminer des fichiers, de ne plus permettre l'accès à certains etc. Ce n'est pas du S3 Scaleway "gratuit", attention.
Pour mes backups je préfère passer directement par Scaleway, et donc payer mon stockage.