simian army

Simian Army är en samling självständiga program som utvecklats av streaming­företaget Netflix. Programmen testar uthållighet, säkerhet, pålitlighet och förmågan att återhämta sig hos de molntjänster som Netflix kör på den infrastruktur som Amazon Web Services tillhandahåller. De orsakar skador och fördröjningar på systemet så att teknikerna kan undersöka och förebygga fler skador. Testerna skiljer sig åt från program till program.

Avsikten är att gradvis göra systemen alltmer uthålliga för att säkerställa prestanda och tillgänglighet från molnleverantören. Slutkunden, tittaren, ska inte behöva märka av ett avbrott i molnet.

Simian Army har öppen källkod och drar nytta av återkopplingar och vidareutvecklingar från andra engagerade användare. Dagens molntjänster handlar inte bara att hitta billigare och snabbare alternativ till gamla lösningar, utan även om att utforma helt nya användningar.

Läs mer: Du är måltavlan!

Började med filmuthyrning

Netflix började med att hyra ut film­er på dvd. Beställningar togs emot på företagets webbplats och skivorna skickades ut till kunderna via frankerade brev.
År 2008 förändrades Netflix inställning till nätet. Det inträffade ett fel i en databas som gjorde att man inte kunde skicka ut dvd-skivorna till kunderna. Det kostsamma felet berodde på en mjukvaruuppdatering som gått illa hos en tredje part. Det gav en tankeställare om hur viktigt säkerhet och tillgänglighet är. Det var också då som Netflix ledning förstod att framtiden finns på internet inom streaming.

Valet företaget stod inför var om man skulle bygga egna datacenter som Amazon, Google och Facebook gjort, och alltså själva driva infrastrukturen, eller satsa på att införskaffa molntjänster.

– Privata moln betyder inte att informationen blir säkrare, säger Peter Parnes, professor i distribuerade datorsystem vid Luleå tekniska universitet.

Peter Parnes
Peter Parnes, LTU

– Stora leverantörer har större resurser och kunnande. Fler använder molnet men lägger olika funktioner hos olika leverantörer.

Läs mer: Här är nya Netflix för IOS

Valde Amazons tjänster

År 2009 knöt Netflix upp sig till Amazons molntjänster. Företagen är konkurrenter när det gäller streamad film, då Amazon äger Amazon Instant Video, men samarbetet i molnet har gynnat båda parter. Netflix kan bygga och konfigurera funktioner för databehandling från webbtjänster Amazon erbjuder, köra stora mängder data och trafik genom dem och betala för det som används. Amazon kan till sina andra molnkunder erbjuda de applikationer Netflix utvecklar.

Netflix har 50 miljoner användare världen över som tittar på 1,7 miljarder timmar streamad film i månaden. En vanlig vardagskväll svarar Netflix för nästan en tredjedel av all internettrafik i USA. Det är mer än Youtube, Amazon, Itunes och bittorrent tillsammans. Det är så mycket att Netflix har vuxit ur sin tilldelade bandbredd och får sin trafik strypt av internetleverantörerna.

Filmbolagen skickar filmerna till Netflix krypterade, som komprimerar dem och skapar hundratals olika versioner beroende på vilken bandbredd de ska streamas på, vilka apparater användarna vill titta på och efter vilka språk som efterfrågas.

Masterkopiorna för de filmer och tv-serier som Netflix äger tar upp 3,14 petabyte minne, 2,75 petabyte komprimerat. Det kan jämföras med att Facebook använder 1,5 petabyte för att lagra omkring tio miljarder fotografier eller att mänsklighetens samlade skrifter beräknas till 50 peta­byte.
 

Mjukvara har buggar

Ett så storskaligt, komplext och utspritt system med varierade datamängder är fullt av problem. Mjukvara har buggar, hårdvara går sönder, it-avdelningen gör misstag.

För att skydda sig kan man försöka tänka ut alla sorters möjliga fel som kan inträffa eller bygga upp modeller för att testa systemet. Efter förstudier om vad som ska uppnås och hur, läggs en plan upp för genomförandet. Lösningen sätts i verket och testas, för att sedan levereras med drift och underhåll.

Vattenfallsmodellen, som den kallas, fungerar bäst för mindre projekt där oförutsedda problem sällan uppstår och användarnas krav inte förändras. Modellen har sitt ursprung i tillverkningsindustrin.

Men det är svårt att utforma och utföra tester i så stora och komplicerade system. Buggar och felkonfigurationer kan samlas och förvärras med tiden. Tester blir som inplanerade brandövningar, där organisationen ska lära sig vad den ska göra om något går fel. Fast olyckor är sällan så välordnade som en brandövning. 
 

Skada under ordnade former

Ett annat sätt att anpassa sig till att saker kommer att gå sönder är att orsaka skadorna själv under ordnade former. Då går det att noggrannare utvärdera hur systemet kraschat och lära sig av det inför framtiden.

Uthållighet betyder i det här sammanhanget ett systems förmåga att fortsätta fungera. För att förbättra ett systems uthållighet kan man bygga applikationer som är redundanta och med hög feltolerans. Om ett system går ned, ska andra system ta över dess funktion. Det ska vara lätt att identifiera fel i systemet.

Det fanns ingen att ta efter när Netflix börjande använda molntjänster på en så stora skala. Man tänkte ut en serie av skadliga programvaror, ungefär som att släppa loss en vild apa inne i systemet. Det liknar en automatiserad och skalbar white hat-hacker, en vänligt inställd hacker som påpekar fel som den stöter på.
Det första programmet som lanserades kallas Chaos Monkey. Det angriper slumpmässigt de virtuella maskiner som betjänar trafiken till kunderna.

Ett fel i ett publikt moln kan vara strömavbrott i ett serverrack, hårddiskfel eller partitionsfel som bryter tillgången till en instans. Nätverksprotokoll är tåliga, men att streama film är tungt. Informationen måste sändas över i hög hastighet och paketen måste komma fram i rätt ordning för att undvika buffring.

Chaos Monkey läser av vilka tjänster som är i gång och försöker en gång i timmen att stänga av instanserna genom Amazons api:er. Programmet skickar sedan ett e-postmeddelande till systemägaren om vilken skada det orsakat. Den varningen behövs oftast inte längre. Netflix system är numer så tåligt att Chaos Monkeys ständiga avbrott inte märks av tittarna när de streamar film.

Monkey
Chaos Monkey angriper slumpmässigt instanser i molnet för att testa tjänsternas uthållighet. Systemet ska klara av att fel ständigt inträffar, utan att tittarna märker av en skillnad i tillgänglighet. (klicka på bilden för att förstora den) Illustration: Netflix

Kaosgorillan slår ut hela centret

Chaos Gorilla slår ut ett helt datacenter. De är åtskilda från varandra så att driftstopp inte sprider sig mellan dem.

Gorillan simulerar nätverkspartition, där instanserna i databasen inte kan kommunicera utåt men med varandra, eller så slår den ut databasen helt.
Chaos Gorilla orsakar stora skador och kräver fortfarande schemalagd körning för man ska kunna återställa systemet och rikta om trafiken till andra datacenter.

Programmet blir alltmer aggressivt för varje attack, och målet är att det, precis som Chaos Monkey, ska kunna vara aktivt hela tiden.
 

Den allra största apan

Chaos Kong prövar uthålligheten hos en hel region. Amazons moln finns i tio geografiska regioner som var och en innehåller flera datacenter som tillhandahåller molntjänster. Netflix har tillgång till tre regioner och testar att antingen automatiskt leda över trafik mellan de datacenter som fortfarande fungerar, eller leda till en annan region. Chaos Kong körs bara i en kontrollerad miljö.

Det är förhållandevis lätt att leda om trafiken och stoppa småfel, som när Chaos Monkey körs. Det är svårare att märka när en tjänst gradvis förfaller. Latency Monkey testar hur uthållig en tjänst är när kommunikationen med andra tjänster saktas ned genom rest-gränssnittet. Fungerar då tjänsterna fortfarande uppströms?

Latency Monkey är särskilt bra för att testa nya applikationer, då den kan testas isolerat utan att de andra tjänsterna behöver gå ned.

Conformity Monkey letar upp instanser som inte är anpassade till best practice i kodningen och stänger ned dem så att tjänstens ägare får tillfälle att göra en översikt och lansera en uppdaterad version.
 

Apdoktorn kollar hälsan

Doctor Monkey undersöker hälsan på instanserna och övervakar deras yttre hälsotecken, som cpu:ns arbetsbörda och minnesanvändningen. Om Doctor Monkey hittar något fel informerar den tjänstens ägare om problemet. Är problemet inte åtgärdat efter en viss tid tar apdoktorn instansen ur funktion.

Janitor Monkey städar upp bråte och skräp i molnmiljön. Programmet övervakar vilka resurser som inte används längre, som gamla databaser, så att man kan hålla kostnaderna nere och göra miljön mer lättnavigerad.

Howler Monkey letar upp ssl-certifikat och drm-certifikat och ”vrålar” när de håller på att löpa ut.

Ssl-certifikat är en identitet som visar att webbplatsens meddelandesekretess och meddelandeintegritet är säker för besökande webbläsare.
Information om vilka drm-skydd som finns på olika datorer lagras i molnet, och känner inte Netflix streamingstjänst igen drm-koden på en användares dator så streamas inte filmen dit.
 

En apa för ordning och reda

10-18 Monkey håller ordning på problem med konfiguration och löptid beroende på språk och tecken i olika geografiska regioner. Namnet på apan kommer från L10-i18n, den förkortning som ofta används för lokalisering och internationalisering.

Lokalisering handlar om att anpassa en tjänst för att svara upp mot krav om språk och kultur. Internationalisering handlar om hur man ska koda för att lätt kunna lokalisera tjänsten för olika kulturer och språk.

Det senaste tillägget i Simian Army är Security Monkey, en utökning av Conformity Monkey. Amazon är en mogen molnmiljö, men även där går det att hitta osäkra konfigurationer och glipor i säkerheten. Security Monkey hjälper administratörer att hitta dem så att de kan åtgärdas innan de blir ett problem.
Netflix släpper löpande nya apor och kör dem först i en testmiljö. Det ligger ett stort ansvar på medarbetarna att utveckla nya apor och molntjänster. Den som bygger något är ansvarig för den koden och applikationens hela livscykel.

 

Sårbarhetstest

Vanliga sårbarhets- och penetrationstest följer en fastlagd plan för att hitta säkerhetshål och sårbarheter. Sådana test fungerar bäst för kända hot – tester med Simian Army är annorlunda. (Illustration: Netflix)

När den nya apan kommer ut måste systemgrupperna anmäla om de vill vara med och testa den under drift. Allteftersom läggs fler grupper och tjänster till, efter några månader måste grupperna anmäla varför de inte vill vara med och testa en apa.

– Det är viktigt att få in ett livscykeltänkande i hur man arbetar med molntjänster och att veta vad man som kund har kontroll över, säger John Lindström som forskar på produktutvecklingsprocesser vid Luleå tekniska universitet och är styrelse­ledamot i nätverket Cloud Sweden.

John Lindström
John Lindström, LTU.

Han berättar att revision av molntjänster om hur tillgän

Hyr ut film ibland

Uthållighet måste däremot övervakas över lång tid. Ett stående skämt på Netflix är att de egentligen är ett övervakningsföretag som ibland hyr ut film. Det är en pågående process där man fortlöpande hittar fel, tar hand om dem och lär sig hur man kan åtgärda dem bättre.

Nyckeln till framgång är att systemet är transparent. Netflix kör ett egenutvecklat system som kallas Chronos, vilket motsvarar versionshanteringssystem som Git.
Enligt Netflix är ett skäl till att Simian Army blivit så framgångsrikt att de släppt programmen som öppen mjukvara. Det går att spara pengar på att använda öppna applikationer. Trösklarna för att börja använda mjukvaran är lägre och därför är användarbasen ofta stor och varierad. Öppenheten driver på innovationsviljan, menar Netflix – om mjukvaran även ska användas utanför företaget ställer organisationen högre krav på sig själv.

Man räknar också med att det kommer in goda idéer utifrån om andra erfarenheter av att arbeta i distribuerade system. Öppen mjukvara ger tillgång till programmens api:er och de öppna standarder de skrivs efter, så mjukvaran kan anpassas till varje användares behov.

Simian Army är utformad för att användas i Amazons publika moln, men kan även användas i privata moln som är byggda på Amazons api.
Erik Zalitis, konsult på ÅF Technology, påpekar att penetrationstester har använts länge och även olika sorters inkrementella former av systemutveckling.

kling.

Erik Zalitis
Erik Zalitis, ÅF.

– Det som betonas nu är standardiseringen, men man måste fortfarande ha hjärnan med i säkerhetsarbetet och inte bara förlita sig på verktygen, säger han.

Redskap som Simian Army är en del av utvecklingen att infrastrukturen produktifieras, tekniken virtualiseras och molntjänsterna får bli allt mer betydande. Infrastrukturen med hårdvara, nätverksväxlar, brandväggar och servrar var förr något som teknikerna brukade sätta upp en gång och sedan underhöll manuellt – i dag skalas virtuella maskiner upp och ned på några sekunder.

Påminner om devops

Simian Army påminner om devops, den agila utvecklingsmetodiken som överförts till systemintegration och infrastruktur, och som nu är mycket populär i Silicon Valley. Nya delar passas ihop och testas allteftersom, för att kunna skapa mindre bräckliga system. Det är en kultur där misslyckanden ses som ett tillfälle att lära, där man inte letar efter syndabockar.

– Simian Army är en bra idé för att stresstesta molntjänster, säger Symantecs chefssäkerhetsstrateg Siân John.

Hon talar om hur de stora datamängderna inom så kallad web-scale it drar till sig mer data samt fler tjänster och applikationer som kan dra nytta av datamängderna, precis som tyngdkraften hos en planet.

Web-scale it är en term från konsultfirman Gartner som beskriver de extremt kraftfulla tjänster de stora molnanvändarna som Netflix, Amazon, Google och Facebook kan utföra. De har många kraftfulla datacenter, agila processer, en samarbetsinriktad organisation och en lärande företagskultur.

– Alla kommer inte att använda web-scale it, men man måste bli mer medveten om grannskapet i molnet. Vad pågår tekniskt och legalt?

Siân John påpekar att ansvaret för tillgängligheten och säkerheten hos sina egna data inte kan outsourcas.

TechWorlds slutsats

Det är viktigt att ha en genomtänkt strategi för redundans när ett system utvecklas. Oavsett om det är i molnet eller på en virtualiserad plattform finns det nästan alltid någon felkälla som missats. Allt kan hända i molnet och det går att förbättra, även om man inte har Netflix resurser.

Hos Netflix är kvalitetsarbetet är viktigt, eftersom verksamhet hänger på att kunna leverera en tjänst med mycket hög tillgänglighet. Samtidigt innebär det ett nytt sätt att tänka på kvalitet.

Utvecklingen av web-scale it kan innebära fler hybridmoln, där data delas upp mellan de publika och privata. Simian Army kan då komma till användning för effektiv resurssamordning.

Simian Army är ett bra exempel på hur samgående trender inom automatisering, verktyg, samarbete och spridande av best practice kan göra databasutformning, konfiguration, tester och infrastruktur snabbare och mer tillförlitliga. n

Waldemar

Ordlista

api, application programming interface: En uppsättning regler för hur en programvara kan kommunicera med annan programvara.

best practice: En idé om att det går att ta fram ett ”bästa möjliga sätt” att utföra en process, kontroll eller test för att leverera det bästa resultatet och det kan sedan upprepas.

devops, development-operations: Metod för att utveckla programvara och infrastruktur samtidigt som systemförvaltning, drift och support utförs.

instans: En uppsättning data som ett program eller ett dokument. Information som finns lagrad i en databas vid en given tidpunkt är en instans av databasen.

rest-gränssnitt, representational state transfer: Plattformsoberoende och skalbar systemarkitektur. Ett gränssnitt utvecklat med rest är relativt enkelt att implementera och använda. 

Mer på nätet

Källkoden för Chaos Monkey och resten av Simian Army finns tillgänglig på Github under Apaches licens för öppen källkod:
github.com/Netflix/SimianArmy

Netflix kom-i-gång-handledning för Simian Army: tinytw.se/simianquick
Det kostar att använda Amazons moln. Här är prislistan:
tinytw.se/awsprice

Cloud Security Alliance har en guide till säkerhet i molnet
vid inköp och drift: tinytw.se/csaguide