Är Behållare Värt Huvudvärk?

0
182

Containrar är ett Unix-konceptet, som tillåter program att förpackas med alla sina nödvändiga beroenden i en lätt-att-köra-bild. Detta har stor nytta för en DevOps arbetsflöde, men är det värt det extra besväret?

Behållare Synkronisera Dev och Prod-Miljöer

Med behållare, hela idén är att de paket allt du behöver för att köra din kod i ett lätt utdelningsbara bild. Detta innebär att allt som krävs för att köra bilden för att ladda ner det och köra docker köra.

Borta är de dagar av “det fungerar inte på min maskin.” Med behållare—förutsatt att alla har Docker är korrekt installerat och vet hur man använder det—behållaren ska köra mycket nära till exakt samma på din maskin som det gör alla annans.

Dessutom, detta gäller även för din produktion miljön. Du kan aktivera några dev funktioner i utveckling bygger, men för det mesta, behållare kan skickas som-den-är att din produktion servrar. Du bör inte uppleva många problem med hosting behållare.

Behållare Möjliggör Effektiv Skalning

Becaue det är så lätt att köra en container, det finns massor av tjänster som kommer att köra dem för dig. Dessa brukar kallas orkestrering verktyg—verktyg för att hantera flera instanser av containrar över många servrar.

AWS har sina Elastiska Container Service som förvaltar kör din behållare på en flotta av EC2-instanser, eller på sin egen Fargate service. Kubernetes är öppen källkod, och många molnleverantörer tillhandahåller integrationer som använder det.

Varje orkestrering tjänsten kommer att kunna övervaka hälsan hos ditt fall och snurra upp nya när trafiken är hög. Detta möjliggör en effektiv skalning, vilket kan spara dig en hel del pengar på webbhotell kostar (upp till 90% på AWS med Automatisk Skalning och Plats för de Fall), och innebär att du inte behöver oroa sig alltför mycket om att växa snabbare än din infrastruktur.

Plus, containrar inte upplever samma prestanda som kommer med att köra virtuella maskiner, så det behöver inte köra ett gäst-OS för varje app. Detta gör behållare värd billigare i allmänhet, och betydligt mer effektiv.

Och allt detta är aktiverat på grund av behållare, utan extra arbete som krävs. Du kan göra samma sak på AWS hjälp av anpassade AMIs, men de är mycket svårare att hantera än behållare, och du kommer att göra mycket av jobbet i alla fall.

Behållare Version Styra Din SysAdmin

Kanske den coolaste följd av behållare är att de tar alla till din server för konfiguration av din SysAdmin huvud och på git, där det kan hanteras och spåras. Eftersom varje nytt paket, konfigurationsfil, installations-skript, och beroendet ligger inom bygga-mappen för behållaren, det är trivialt att ansluta den till källan kontroll.

Behållare integrera särskilt väl med den Verksamhet sidan av en DevOps arbetsflöde. De tillåter dig att använda samma version förvaltning och tester av system du har i stället för att hantera dina server-arkitektur. Och eftersom alla är i synk med hjälp av samma miljö för att utveckla, bygga och testa, det ska flyta smidigt.

Plus, Docker fungerar bra med kontinuerlig integration system. Docker byggen är lätt att automatisera, speciellt om du använder Azure Rörledningarna. Att trycka på en Docker bilden till din flotta av servrar är så enkelt som att uppdatera bilden i arkivet. Du kan även använda en container på en delmängd av servrar för att övervaka sin hälsa innan du distribuerar över hela flottan, något som skulle vara icke-trivialt att implementera utan behållare.

Nackdelen: Huvudvärk Är Riktiga

Låt oss vara verkligt—behållare finns säkert mer elegant lösning, men de är mycket svårare att ställa upp och arbeta med, jämfört med att bara skjuta upp ett nytt Linux-laptop och spendera en timme att installera programvaran. Alla har gjort det senare, men före detta tar mycket mer tid på att investeringar generellt. (Men, om du kör en ton av servrar, Docker bara behöver konfigureras en gång.)

Om din uppgift är inte särskilt komplicerat, eller om du inte har en hel del av efterfrågan och att genomföra det med behållare kan vara overkill. Det finns ingen riktig anledning att containerize nginx och nod om du bara kör den på en instans.

Och medan behållare gör det lättare att hantera alla de beroenden som kan komma med kör din app, det är också mycket mer av en smärta att köra Docker och binder hamnar när du vill testa din app, jämfört med att bara npm starta eller något liknande i ditt projekt katalog. Detta kan definitivt lindras med start skript, men om du är på macOS eller Windows, du är fortfarande köra en hel VM bara för att ladda upp din web app.

I slutet av dagen, om du är ett fan av Docker och dess begrepp, ingenting hindrar dig från att använda det för din personliga projekt. Men fördelarna med Docker egentligen bara börja uppväger huvudvärk när du arbetar i ett större team. I ett team miljö, att allt kring din app till din version management system och DevOps arbetsflöde som hjälper till att produktionen skall flyta smidigt.