211service.com
Het geheim achter de groei van Twitter
Bij de Web 2.0-expo vandaag in San Francisco, vandaag besprak Alex Payne van Twitter de technische details van de programmeertaal waarvan hij hoopt dat hij zijn bedrijf kan helpen om te gaan met de toename van het verkeer dat het de afgelopen jaren heeft doorgemaakt. Het bedrijf laat een programmeertaal achter die het in het verleden veel pijn heeft bezorgd, en omarmt in plaats daarvan een nieuwe en enigszins obscure taal genaamd Scala.
Wat achtergrondinformatie: Twitter, een dienst waarmee mensen berichten van 140 tekens naar vrienden en het publiek kunnen sturen, werd gelanceerd in 2006 en heeft nu naar schatting ongeveer acht miljoen unieke gebruikers. Wanneer een persoon een kort bericht op Twitter plaatst, plaatst de service dit op het web en stuurt het naar de mobiele telefoons van mensen en Twitter-softwaretoepassingen. Het concept is eenvoudig, maar onder de motorkap is de technologie ingewikkelder.
De populaire webprogrammeertaal Ruby on Rails is verantwoordelijk voor het uiterlijk van de gebruikersinterface van Twitter, evenals die van vele andere websites. Omdat de gebruikersinterface, ook wel de front-end genoemd, op Ruby vertrouwde, was het ook logisch om Ruby te gebruiken voor back-end-bewerkingen zoals het in de wachtrij plaatsen van berichten. Maar naarmate de populariteit van Twitter groeide, was de door Ruby gebouwde back-end niet in staat om de stortvloed aan berichten aan te kunnen die op zijn pad kwamen - een situatie die de plotselinge populariteit van de Fail Walvis , de foutmelding die Twitter naar gebruikers stuurt wanneer de service crasht.
Dus het Twitter-team wendde zich tot Ladder , een programmeertaal met zijn oorsprong in het werk door Martin Odersky , professor bij EPFL in Lausanne, Zwitserland, rond 2003. Tijdens zijn presentatie legde Payne, die ook een boek over de taal schrijft, uit dat Scala veel van de voordelen van andere talen heeft, maar zonder de nadelen. Enkele van de kenmerken die Scala zo aantrekkelijk maken voor Twitter, zijn dat het in staat is om gelijktijdige verwerking efficiënt af te handelen, dat wil zeggen afzonderlijke instructies die tegelijkertijd de systeembronnen moeten gebruiken. Dit is handig wanneer berichten van miljoenen mensen onmiddellijk naar verschillende apparaten over de hele wereld moeten worden verzonden.
Het is ook flexibel voor programmeurs om te gebruiken, zegt Payne. Als een programmeur meer structuur wil, dan biedt Scala structuur, maar als ze meer vrije vorm wil programmeren, kan dat ook. En belangrijker nog, voor Payne en de technici van Twitter is Scala een nieuwe, opwindende en mooie taal die het team betrokken houdt. Er is nog steeds ruimte voor programmeurs om het gevoel te hebben dat ze bijdragen aan de ontwikkeling van iets nieuws en fris. Dit is niet het geval met meer gevestigde talen, zoals Java of C++.
Scala is niet perfect, merkt Payne op, maar de voordelen wegen ruimschoots op tegen de nadelen. Het meest in het oog springende nadeel is dat het enigszins moeilijk te leren is omdat het een heleboel functies en een syntaxis heeft waarmee sommige programmeurs misschien niet bekend zijn, zegt hij. Bovendien is het relatief nieuw, wat betekent dat het geen bewezen staat van dienst heeft. Maar Payne zegt dat hij en Twitter bereid zijn het risico te nemen, omdat de taal in een aantal testgevallen al goed werkte.
Op dit moment is de service van Twitter een hybride van programmeertalen, zegt Payne. De gebruikersinterface draait op Ruby on Rails, wat prima is voor mensen die op webpagina's klikken, zegt hij. Maar tegen het einde van het jaar hoopt Twitter een reeks services aan de achterkant te hebben die volledig in Scala zijn geschreven. En het is het plan van het bedrijf om ervoor te zorgen dat alle services van derden die verbinding maken met Twitter via de Application Programming Interface (API) door Scala-code gaan, waarbij Ruby on Rails volledig wordt omzeild. Als je het hebt over een heleboel programma's die snel de API raken, zegt Payne: We hebben ontdekt dat we dingen beter kunnen optimaliseren ... met Scala.