Senaste inläggen RSS

Lanseringsprocessen

Av murtlest den 3 June 2009

För nÄgra veckor sedan berÀttade vi lite om hur Pusha Àr uppbyggt under ytan. I det hÀr nya inlÀgget förklarar vi hur processen ser ut frÄn det att vi skriver ny kod tills dess att de nya funktionerna lanseras pÄ sajten.

Eftersom vi Ă€r flera personer som arbetar med Pushas kod och för att inte riskera att förstöra koden sĂ„ anvĂ€nder vi ett versionshanteringssystem som heter Subversion. Det fungerar sĂ„ att koden lagras pĂ„ en central server i ett s.k. “repository”, sĂ„ att vi utvecklare kan ladda ned koden var vi Ă€n befinner oss. Innan man börjar arbeta sĂ„ hĂ€mtar man hem de senaste Ă€ndringarna och nĂ€r man skrivit klart en bit kod sĂ„ “checkar” man in den sĂ„ att resten av utvecklingsteamet kan ta del av förĂ€ndringarna. Subversion kontrollerar Ă€ven att det inte blir nĂ„gon konflikt om flera personer arbetar med exakt samma bit kod samtidigt.

För att minska risken att det kommer ut buggar pÄ den officiella versionen testar vi koden i tre olika instanser innan vi lanserar den. Först lokalt pÄ varje utvecklares dator, sedan i en alpha-version pÄ en testserver och avslutningsvis pÄ en beta-version, som Àven ni anvÀndare har tillgÄng till.

För att slippa att manuellt knappa in obskyra linux-kommandon varje gÄng vi vill testa nÄgot nytt eller lansera ny kod har vi automatiserat sÄ mycket av den hÀr lanseringsprocessen som möjligt.

Till att börja med sÄ har vi med hjÀlp av subversion-hooks gjort sÄ att alpha-versionen automatiskt checkas ut varje gÄng vi checkar in ny kod. Det innebÀr att om vi har testat kod lokalt och sedan checkar in den, sÄ kan vi direkt provköra det pÄ testservern utan att behöva göra nÄgonting extra.

NÀr vi kÀnner oss nöjda med alpha-versionen och vill ta steget till beta sÄ har vi skapat ett webbaserat grÀnssnitt dÀr vi helt enkelt bara behöver trycka pÄ en knapp sÄ synkas allt som finns i alpha-versionen över till beta-versionen, som ligger pÄ vÄr riktiga server.

NÀr vi funderade över hur vi skulle lansera nya versioner av Pusha kom vi fram till tvÄ krav pÄ lanseringsprocessen; dels ska det gÄ fort, vi vill inte att webbsidan ligger nere i onödan, och dels ska det gÄ att Ängra sig, trots mÄnga tester sÄ hÀnder det sÄklart att det finns buggar som rÄkar komma ut och dÄ vill man snabbt kunna backa.

BĂ„da dessa krav har vi lyckats lösa. Vi kan enkelt lansera nya versioner utan en enda millisekunds nedtid genom vĂ„rt webbinterface och backa till varfri version med ett enkelt knapptryck. Tekniskt sett sĂ„ löste vi detta genom att lĂ„ta webbservern peka pĂ„ en symlĂ€nk (eller “genvĂ€g” för Windows-anvĂ€ndare). Denna symlĂ€nk pekar i sin tur pĂ„ en versionskatalog som Ă€r döpt efter versionsnummret. NĂ€r vi lanserar en ny version sĂ„ kopieras allt som finns i beta-katalogen till en ny versionskatalog (med ett högre nummer). Sedan pekas symlĂ€nken om till den nya katalogen (egentligen skapas en temporĂ€r symlĂ€nk som flyttas till den gamla för att slippa en millisekunds nedtid, mer om det hĂ€r).

Ett problem som uppstÄr nÀr man har flera instanser av testning Àr att vissa saker i koden mÄste vara olika för de olika instanserna. T.ex. vilken katalog anvÀndarnas bilder ska laddas upp i, vilken databas som ska anvÀndas o.s.v. Detta gör att vi inte kan hÄrdkoda in sÄdana vÀrden i koden. IstÀllet anvÀnder vi oss av en .ini-fil för varje instans som innehÄller de olika variablerna. Sedan har vi skapat en Config-klass i php som vi anvÀnder för att kunna hÀmta variablerna:

   Config::getValue("image.upload.path");

Denna klass ser förstÄs till att lagra alla variabler i minnet nÀr den hÀmtat in dem sÄ att vi slipper lÀsa frÄn filen varje gÄng. Ett Ànnu mer optimerat sÀtt vore att under lanseringen lÀsa in alla variabler och sedan ersÀtta dem med dess vÀrde i php-filerna, men man ska inte optimera för tidigt.

Hoppas ni tyckte denna lilla inblick i vÄr lanseringsprocess var intressant. StÀll gÀrna frÄgor, kommentera och föreslÄ förbÀttringar i kommentarerna pÄ Pusha.

3 Jun

Information

Om Pusha Blogg

Information om utvecklingen av sajten Pusha, en samlingsplats där du som medlem bestämmer innehållet genom att posta och rösta på länkar.

Hett på Pusha

Fler heta länkar

Knapp för bloggare

Pusha fïżœr bloggare

Visste du att du kan få fler besökare till din blogg med en Pusha-knapp?

Läs mer här »