Het is je vast wel eens overkomen: je probeert een flink bestand te uploaden, maar ineens valt je verbinding weg en is de upload afgebroken. Wanneer de verbinding weer hersteld is, kun je van vooraf aan beginnen. Erg irritant. Op veel plekken in de wereld is de situatie zo beroerd dat de verbinding elke vijf minuten wegvalt. Hoe vaak je het ook opnieuw probeert, de ontvanger krijgt steeds alleen het eerste stukje.

In 2009 begon ik met twee jongens uit Berlijn Transloadit. Dit is een online dienst voor het uploaden en encoderen van bestanden. We merkten een toename van klachten dat uploads mislukten, terwijl ons eigen platform stabiel was. Het kwam doordat videobestanden steeds groter werden, maar de kwaliteit van netwerkverbindingen achterbleef. We willen in principe dus met tien keer zoveel bagage over dezelfde gammele bruggetjes. Tunnels, kelders, kroegen, dunbevolkte gebieden, inhalige telecomproviders en Wi-Fi interferentie, ze zorgden voor de nodige obstakels.

Het idee

Aan de oorzaken konden we weinig doen, dus we zochten we een oplossing die er beter tegen bestand was: ‘tus’. We konden hiermee een upload hervatten waar die was afgebroken, zodra de verbinding werd hersteld. Als het in 20 pogingen telkens lukte om de volgende 5% te verzenden, was daarna het volledige bestand over. De gebruiker hoefde de onderbrekingen niet eens te merken, omdat het ‘resumable’ uploads waren.

Resumable

Downloads kunnen al hervat worden sinds versie 1.1 van HTTP. Voor uploads was er geen open standaard. Er waren wel een aantal projecten, maar die waren versnipperd door het ontbreken van een gezamenlijke taal. Ze waren commercieel of toegespitst op de eigen situatie. Alsof er geen KNVB was en elk voetbalclubje z’n eigen spelregels hanteerde.

We zijn maar een klein bedrijfje. Door het protocol open te gooien, hebben we medewerking gekregen van developers bij onder meer Google, Node.js, HTTP/1.1 en ZeroMQ. We zijn er dan ook erg trots dat Vimeo ‘tus’ gaat gebruiken. Voor uploads naar hun platform, maar ook voor uitwisseling tussen hun servers vanwege de snelheidswinst. Vimeo heeft ook een developer ter beschikking gesteld om ‘tus’ implementaties in meer talen te helpen bouwen. Al deze medewerking heeft ‘tus’ sterker gemaakt. Voor het protocol is het immers goed als veel mensen het implementeren, zelfs onze concurrenten.

We geloven dat het internet hierdoor beter wordt voor iedereen. We hopen dat er voldoende bedrijven zijn die hoogwaardige upload-afhandeling liever uitbesteden en dan zullen kiezen voor de bron, Transloadit. Zo niet, dan hebben onze huidige klanten in ieder geval een top-oplossing.

(s)FTP en BitTorrent

Er is enige overlap tussen ‘tus’ en de andere protocollen. ‘Tus’ is bijvoorbeeld gebaseerd op http waardoor het werkt met bestaande browsers en servers zonder zware libraries of extra gaatjes in firewalls. Hierdoor is het ook eenvoudig te combineren met SSL, loadbalancers en proxies. ‘Tus’ is een documentje met afspraken over hoe hervatbare uploads zouden moeten werken. Het krijgt pas waarde wanneer ontwikkelaars zich hier aan houden in hun software. Dan ontstaat er een door machines gesproken ‘taal’ en krijgt iedereen betrouwbare uploads. We helpen dit een handje door implementaties in alle grote programmeertalen vrij beschikbaar te stellen. Verder is ‘tus’ klein in opzet en biedt het optionele uitbreidingen, zoals ‘concat’, dat een bestand in stukjes hakt en deze gelijktijdig verstuurt. Verbindingen worden zo maximaal benut, waardoor uploads sneller klaar zijn.

Conclusie

‘Tus’ is klaar voor productie. Neem eens een kijkje op http://tus.io, waarschijnlijk hebben we al een implementatie voor jouw favoriete platform. En zo niet, dan kunnen we je hulp nog goed gebruiken! Neem gerust contact met ons op als je wilt bijdragen aan ‘tus’.