's Picture

Deploy, deploy, deploy! But how?

Postad av Magnus Bengtsson

Vi har tidigare presenterat Ollie, vår deployment-dashboard, som visar och uppmutrar till kontinuerliga deployer. För att stödja och underlätta frekventa deployer till produktion och test behövs det en infrastruktur som kan hantera detta.

Vi håller på att utveckla en helt ny plattform för våra applikationer på infrastrukturssidan. Den ska göra att vi kan bli ännu bättre på att få ut nya tjänster i produktion snabbt. Sveriges modigaste utvecklingsavdelning ska få en plattform som är lika modig! Tanken med den är att uppmuntra till snabbare deployer och kortare ledtider, men även att vi ska minimera fel och få bättre monitorering.

Vår nya plattform innehåller lösningar som vi är övertygade ska ge oss massor av fördelar, utöver att att det är en extremt rolig teknikstack att jobba med. Den teknik och och de verktygsval som vi har gjort är baserade på ett antal förutsättningar:

  • Alla utvecklare ska kunna deploya sina applikationer till produktion på ett enkelt och sammanhållet sätt
  • Deployer ska hanteras via olika API:er
  • Applikationer och tjänster ska kunna registrera sig själva så att vi kan hitta dem i vår infrastruktur
  • Miljön ska vara skalbar, vi vill enkelt kunna ge en tjänst mer kapacitet
  • Det ska inte finns ledtider för att sätta upp och publicera en ny tjänst
  • Våra applikationer ska kunna "äga" mycket av sin egen infrastruktur, DNS, lastbalansering etc.

Hur gör vi då detta? Till att börja med har vi samlat oss kring ett antal verktyg som kommer att utgöra basen för vår nya platform:

  • Saltstack
  • Docker
  • Helios
  • Consul
  • Haproxy

Centralt för oss blir att använda container-teknik för att paketera och köra och deploya våra applikationer. Många av våra applikationer är relativt små och lika när det gäller deploymentförfarande. Därför har vi skapat ett npm-paket för att utveckla, bygga och deploya dem, exp-containership. För att hantera orkestrering av våra Docker-containrar använder vi Helios.

Container-tekniken leder till att vi kommer att ha många fler små tjänster som körs, därför behöver vi lösa sättet på vilket vi upptäcker var en tjänst körs. För att göra detta använder vi Consul, som är en distribuerad Service Discovery. Genom att våra containrar registrerar sig med Consul kan vi enkelt bygga lastbalansering som hämtar upp sin konfiguration från Consul. Allt detta automatiserar vi med Saltstack, som vi använder för vår orkestrering och automatisering.

En dynamisk miljö ställer även nya krav på hur vi övervakar våra tjänster och infrastruktur, här har vi intressanta tankar kring att använda Consul tillsammans med Prometheus.

Om du tycker detta låter intressant, följ oss här på bloggen så kommer du få se hur vi använder verktygen!

Foto toppbild: Mateusz Kamiński, från Flickr, creative commons.

PS. Missa inte vår nästa bloggpost, följ oss på Twitter!

Till startsidan