Rulla ut uppdateringarna på ett smartare sätt

En av de största utmaningarna en webbutvecklare ställs inför är att rulla ut uppdateringar till ett stort antal servers som kanske tom befinner sig i olika datacenter. Logga in, ladda upp, kontrollera, logga ut, nästa. En tidsödande uppgift med ett fåtal servers, nästan omöjligt med några hundra eller fler. Här finns en mängd problem att hantera.

En lösning som ofta används är att ett script används för att sköta det hela via SSH. Fungerar med några få servers, men blir snabbt ohanterbart när antalet ökar.

En annan metod är att använda Rsync. Den som jobbat med Rsync vet dock att det verktyget inte hör till de mest flexibla och lättanvända. Räkna med en hel del arbete innan det fungerar på ett tillfredställande sätt.

Med Git kan man komma rätt långt med att automatisera uppdateringarna. Det stora problemet här är kravet på kapacitet i särskilt masterenheten när ett stort antal servers samtidigt försöker ladda ned programvaran. Vilket också tar en hel del tid.

Bl a Twitter och Facebook använder BitTorrent (P2P) med några script för att uppdatera sina enorma serverparker. P2P är stabil och kräver endast en bråkdel av den tid de övriga alternativen kräver.

Twitters lösning, kallad ”Murder”, bygger på BitTornado och två wrappers, ett Python script och Capistrano, och är tillgängligt under Apache licensen. Med den lösningen sänkte de tiden för uppladdningen av sina uppdateringar från ca 40 minuter till endast 12 sekunder.

Facebook utvecklar det mesta i PHP men kompilerar alltihopa via HipHop till en 1,5 Gb C++ binär. Att distribuera ut en så stor fil till många hundra servers är ingen trivial uppgift men går som en dans med BitTorrent, uppladdningen kräver endast ca 15 min.

Att använda BitTorrent löser alltså problemen men kräver samtidigt en hel del resurser och specialkunskap och passar sannolikt bäst för de riktigt stora datacentren.

Men det finns en annan lösning för den som inte har vare sig ett stort antal servers eller de resurser som BitTorrent lösningen kräver. Nämnligen det rykande färska BitTorrent Sync programmet som ännu är i beta stadiet.

BitTorrent Sync är, precis som sin ”storebror”, en P2P lösning men utvecklad för enkelhet och säkerhet. Tanken är att skapa en P2P lösning som kan användas av de flesta för att skapa helt privata synkroniseringar mellan servers, PC och tom mobiltelefoner. Och helt perfekt för att rulla ut webb- och andra uppdateringar.

Något att tänka på om du vill testa den här lösningen:

  • Det finns ett problem med rättigheter för de synkroniserade filerna när BitTorrent Sync körs i *nix då filägaren för den uppladdade filen blir densamma som btsync binären körs under. Genom att starta btsync med den användare som ska ha tillgång till filerna löser man det problemet tills BitTorrent Sync fått den möjligheten via konfiguration i stället.
  • Alla enheter som ska ingå i svärmen måste vara synkade tidsmässigt. Den bästa lösningen är att svärmens alla enheter använder samma källa för tidssynkroniseringen.
  • BitTorrent Sync körs som en lokal applikation, dvs avslutas när man loggar ut ur Windows eller stänger terminalfönstret i *nix. Men går att köra som en tjänst med tex instsrv.exe och srvany.exe i Windows eller via ett init script i *nix.

BitTorrent Sync befinner sig alltså fortfarande på beta stadiet men är enligt min erfarenhet redan väldigt stabilt med endast ett fåtal småbuggar som mest handlar om kosmetika. Man kunde också önska sig några funktioner till som sannolikt kommer att implementeras senare.

Annonser
Tagged with: , , , , , , , , ,
Publicerat i Programmering
Erik Schütten

Hej! Jag heter och är bosatt på Åland, bekvämt mittemellan Sverige och Finland.

Jag har jobbat med IT i drygt 30 år och är bla delägare i ett internationellt mjukvaruföretag där jag ansvarar för den tekniska driften och -utvecklingen (Vice President of Technology).

Behöver du kvalificerad hjälp med din IT verksamhet? Fråga Erik! Du når mig via erik@scab.ax. Mer info om mina tjäntser hittar du på www.scab.ax.

Linkedin Twitter Facebook Google+ RSS

Ange din e-postadress för att följa denna blogg och få meddelanden om nya inlägg via e-post.

QR-code
About Erik Schütten
Senior IT expert with 30 years of experience in designing, implementing and managing IT systems and staff. Follow Erik Schütten on Google+, Twitter and Facebook