Java får kæmpe renæssance: Derfor skiftede Twitter fra Ruby on Rails til Java

Mange af de største tjenester på nettet er nu kodet i Java, som nyder sin anden ungdom. Twitter måtte opgive Ruby on Rails og starte forfra i Java, da brugerne strømmede til.

Twitter-ansatte kæmpede i 2010 med at holde sammen på teknikken, for succesen med at sende korte beskeder ud i det offentlige rum havde belastet it-systemet til bristepunktet.

Det var så galt, at Twitter måtte bygge en ’falsk’ Twitter-side, der kørte for sig selv, da Ruslands daværende præsident Medvedev i sommeren 2010 besøgte hovedkvarteret i San Fransisco og skulle tweete for første gang. Sådan en banebrydende foto-mulighed skulle ikke ødelægges af et af de mange nedbrud, som ramte Twitter dengang.

Oven på den oplevelse måtte der ske noget radikalt, og svaret blev Java. Det skriver Ars Technica, i en gennemgang af, hvordan Java de senere år er blevet meget populært som platform for de store tjenester på nettet.

Da Twitter blev skabt i 2006, blev systemet kodet i Ruby on Rails, som gjorde det nemt og hurtigt at skabe den slags og blev det foretrukne værktøj for mange web-iværksættere. Men den voldsomme trafik, som Twitter fik med årene, var ikke til at håndtere med Ruby on Rails-platformen. I stedet begyndte Twitters programmører helt forfra i Java.

Også hos Google, Linkedin, Tumblr og andre populære tjenester har Java fået en sand renæssance. Og en af hemmelighederne er, at Java-platformen også er åben for andre sprog. Med Java Virtual Machine på serverne kan et firma kombinere mange forskellige sprog og køre det hele på én gang.

Hos Twitter er systemerne således bygget i en blanding af Java, Scala og Clojure, mens Linkedin primært bruger Java, men også har lidt Scala i mikset.

Sådan et setup gør det også muligt at distribuere arbejdet. Hvor Twitter indtil 2010 kørte som ét enkelt system, skiftede man med den nye Java-platform over til omkring 200 selvkørende services, der så er forbundet. Dermed er det muligt at håndtere store mængder trafik, for eksempel de 143.199 tweets på ét sekund, der blev sendt den 3. august. Gennemsnittet ligger på 5.700 tweets i sekundet.

Også Google har taget Java til sig, om end det meste hos Google stadig er skrevet i C, ligesom hele Android-platformen er funderet i Java.

Facebook holder omvendt fast i PHP, men det sker så til gengæld med alverdens tricks for at få systemerne til at køre hurtigt nok, blandt andet en hjemmelavet virtuel maskine med just-in-time-kompilering.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Kommentarer (16)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Lasse Lindgård

Hos Twitter er systemerne således bygget i en blanding af Java, Scala og Clojure

Men den artikel I skriver af fra skriver om twitter

majority with Scala

some of its code with the Java

a bit with Clojure

Jeg synes netop at det er en væsentlig pointe i artiklen at java's renæssance mere er JVM som platform end det nødvendigvis er java som sprog. Den pointe taber I i afskriften.

  • 15
  • 0
Jacob Gorm Hansen

I den historie er at Twitter tilsyneladende blev skrevet med hovedet under armen i et legetoejssprog, stor set altid var nede, og alligevel blev en succes. Moralen maa vaere at det altid gaelder om at komme foerst, selv med det argeste l*rt.

  • 3
  • 5
Henrik Rathje

tjoo... men der skrives jo: " I stedet begyndte Twitters programmører helt forfra i Java.".. så mon ikk de har skrevet noget java kode :-)

det bekræfter hvad jeg ser.. Java er på vej tilbage. yeyyyy..


START på rasen over mediepladder:

bortset fra hr og fru Danmark som jo spammes om det "usikre Java" i diverse blade mm.. Men her snakker vi om applets og ikke Java som sådan.. folk der bruger applets i dag er ofte selv ude om det...hov er det ikke det NemID bruger?.. nåå jo..
Java er ikke usikkert.. ikke mere end alle andre sprog.. som med alle andre sprog: kod ordentligt for hulen.
Java er heller ikke langsomt.. browsere er langsomme, netværk er langsomt, dårlig ineffektiv kode er langsomt... Ikke Java.

STOP på rasen over mediepladder..


  • 4
  • 5
Kasper Grubbe

Twitter folkene benytter JRuby, som er Ruby der kører på JVM.

JRuby er dog ikke startet af Twitter, men er et project fra Sun Microsystems, og senere har firmaer som EngineYard, Red Hat og nu også Twitter hjulpet med på projektet.

Ruby on Rails er nok svær at scale når du er på størrelse med Twitter, men hvor mange er det?

  • 0
  • 0
Anders Tolborg

Twitter folkene benytter JRuby, som er Ruby der kører på JVM.

Lige præcis og JRuby er ret vildt.
http://www.youtube.com/watch?v=JAirWHY7ZSI (04:30 bliver screencastet særligt spændende)

Et af de helt store issues ved RoR har været frameworkets evne til at skalere. Hvis man er ude på at udvikle den næste store websucces, så er skalering dog et luksusproblem i mine øjne. Muligheden for at være produktiv er derimod helt afgørende, og RoR er et udsædvanligt produktivt framework at udvikle i.

... men jeg kan godt forstå at folk er vilde med Java. Som udvikler skal man bruge 100 linier kode på at skrive en funktionalitet som ville tage 5 linier at skrive med RoR - og det ser jo godt ud overfor chefen ;)

  • 0
  • 1
Henrik Rathje

.. men jeg kan godt forstå at folk er vilde med Java. Som udvikler skal man bruge 100 linier kode på at skrive en funktionalitet som ville tage 5 linier at skrive med RoR - og det ser jo godt ud overfor chefen ;)

enig.. men der findes heldigvis flere gode frameworks i dag som kan klare boilerplate koden.. RoR er en.. foretrækker selv andre, men det bliver mere religion end fakta.

men ja: rapid development er et MUST i de kommende år.. kunder er P**** ligeglade med hvilken teknologi du bruger.. det skal bare gå stærkt, se godt ud, og være billigt at vedligeholde..
Hvis Java skal klare sig, så skal SUN indse dette og DROPPE de latterlige traditionelle tunge SOA tanker.. det er bare svært når Oracle sidder i den anden ende med deres tunge Weblogic arkitektur.. men de ved det godt.. men de tænker i penge og ikke i kvalitet.

det er vores opgave som arkitekter og udviklere at fokusere på ROI, og så vil de mastodontiske produkter dø ud lige så stille.. kan man håbe.

uhhh.. jeg får nok tæv nu af SOA tilhængere.. (forstå mig ret: SOA er fint, men de implementationer vi har idag er skod!).

  • 0
  • 1
Henrik Rathje

Det er altså 3 år siden der stoppede med være et Sun Microsystems. Hvordan skal Sun erkende noget som ikke-eksisterende firma?

nåå ja... så du forstod slet ikke hvad jeg skrev fordi jeg skrev SUN i stedet for Oracle?

come on... ja jeg er så gammel at SUN for mig stadig er højere i bevistheden end Oracle.. you got me.

bare til info: SUN benyttes stadigvæk om f.eks. deres servere: http://www.oracle.com/us/products/servers/overview/index.html

  • 1
  • 0
Jonas Høgh

Man får ikke skalbarhed via et programmeringssprog, men via ens arkitektur. Twitter folkene har nok tænkt sig om i anden omgang. Misvisende artikel..


Well, overskriftens opstilling af Rails vs Java er i sig selv æbler og pærer, Rails er ikke et sprog, men et framework. Nogle af de arkitekturbeslutninger, som Rails lægger op til som standard, er nok ikke de mest skalerbare, men det kan man selvfølgelig tilpasse sig ud af.

  • 2
  • 0
Pelle Söderling

Et af de helt store issues ved RoR har været frameworkets evne til at skalere. Hvis man er ude på at udvikle den næste store websucces, så er skalering dog et luksusproblem i mine øjne. Muligheden for at være produktiv er derimod helt afgørende, og RoR er et udsædvanligt produktivt framework at udvikle i.

Det er jo en interessant holdning, personligt foretrækker jeg at bygge systemer der skalerer fra starten således at de netop kan blive det næste store hit.

Problemet er at du ofte kun får én chance - hvis dit produkt pludselig får massiv omtale ("slashdotted") eller går viralt, så er det vigtigt at dit setup kan følge med, ellers har du lige tabt den største eksponering af dit produkt på gulvet til fordel for en 500 - internal server error, det er ofte lig farvel og tak, for den omtale får du næppe igen.

Jeg er derfor stor tilhænger af general purpose sprog på backenden - såsom Java eller C# - i sidste ende opbygger man sjældent bare et website, man opbygger en platform. En platform som hvis man bliver stor nok før eller siden vil skulle interagere med mange forskellige systemer eller servicere mange forskellige løsninger (Web, Desktop-apps, Mobil/tablet-apps etc.). Baserer man sig på sprog der kun er gearet til at håndtere webdelen mister man en masse fleksibilitet eller skal ud i nogle kreative løsninger.

Personligt ville jeg aldrig have kodet Facebook i PHP (og det er jo fuldstændig crazy ting de har været ude i for at få det til at køre ordentligt) eller Twitter i Ruby on Rails.

Jeg er klar over at businessfolkene ofte ser anderledes på det og hellere vil have deres udviklere til at være "produktive" og så tager problemerne hvis man får success, men det er derfor jeg har valgt at starte selvstændigt :-)

  • 0
  • 0
Anders Tolborg

Problemet er at du ofte kun får én chance - hvis dit produkt pludselig får massiv omtale ("slashdotted") eller går viralt, så er det vigtigt at dit setup kan følge med, ellers har du lige tabt den største eksponering af dit produkt på gulvet til fordel for en 500 - internal server error, det er ofte lig farvel og tak, for den omtale får du næppe igen.

Teoretisk set kan man naturligvis ikke være andet end enig. Men, har du mange eksempler på ovenstående? Jeg kan personligt ikke komme i tanke om nogen, men det kan selvfølgelig være fordi de aldrig blev succeser, fordi de ikke skalerede.

Derimod er det meget nemt at komme i tanke om store succeser, som er baseret på RoR (og jeg er enig i, at der i dag er adskillige konkurrerende frameworks, som er præcis lige så produktive at arbejde i):

Basecamp, Scribd, Hulu, CrunchBase, Slideshare, Zendesk, Github, Yellow Pages, Twitter, Pitchfork, Shopify, Urban Dictionary, Justin.tv, Groupon mf.

  • 0
  • 0
Pelle Söderling

Jeg har ofte oplevet firmaer der har fået deres produkt eller website eksponeret på et af de større nyhedssites for at blive mødt med en 500 internal server error når man var nysgerrig for at se hvad de havde lavet.
Jeg ved ikke om jeg kan komme på en masse eksempler, oftest vender jeg aldrig tilbage til disse firmaers sider igen og det tror jeg egentlig heller ikke mange andre gør :)

Det kan self. lade sig gøre at lave noget på eks. RoR som ikke dør pga. eksponering - men grundlæggende er Twitter ikke et specielt godt eksempel og selvom de er store er deres produkt ultra-simpelt i sin opbygning, det kan vitterligt ikke ret meget og det øger selvfølgelig chancerne for at det går godt. Mere komplekse sites med meget mere forretningslogik bag løsningen kan meget nemt ende i meget større problemer og ramme loftet langt tidligere.

  • 0
  • 0
Log ind eller Opret konto for at kommentere
IT Company Rank
maximize minimize