Naar de inhoud

Systemen en infrastructuur

Services in Docker-containers op Vercel, Cloudflare of uw eigen Ubuntu-servers, met Postgres, MongoDB of ClickHouse eronder en Grafana-dashboards erop, zodat een probleem u eerder bereikt dan een klant, en een runbook dat vertelt hoe u terugdraait.

Infrastructuur is waar een werkende applicatie een draaiende dienst wordt. De vragen die daar beantwoord worden zijn saai, en het zijn precies de vragen die de kosten van een storing bepalen ruim voordat die storing er is: waar draait dit, wat doet het na een herstart, wie hoort het als het stopt, en hoe komt de laatste werkende versie terug.

Containers, en hoeveel

Services draaien in Docker-containers omdat een container de kleinste eerlijke beschrijving is van wat een dienst nodig heeft: zijn afhankelijkheden, zijn configuratie en zijn poorten, opgeschreven in een bestand dat een tweede machine kan reproduceren. Compose volstaat voor de meeste systemen en blijft leesbaar bij zestien containers. Kubernetes komt erbij als de schaal daar echt om vraagt, niet omdat het beter staat op een plaat.

Waar het draait

Vercel voor de voorkant en de previews, Cloudflare voor DNS, TLS en e-mailrouting, en Ubuntu-servers ingericht en beheerd vanaf de terminal wanneer een werklast niet in een serverless functie thuishoort, of wanneer de data ergens moet blijven staan waar u naar kunt wijzen. De keuze daartussen gaat meestal over wie er om drie uur 's nachts bij de machine moet kunnen en waar de data mag staan, en niet over de prijslijst.

Het deel dat het moet overleven

Postgres voor het meeste, MongoDB waar de vorm van de data werkelijk varieert, ClickHouse wanneer de vraag analytisch is en het aantal rijen groot. Wat het ook wordt, wat telt is hetzelfde: een back-up die minstens één keer is teruggezet, migraties die alleen vooruit lopen, en een verbindingslimiet waar over nagedacht is in plaats van dat u hem op een drukke middag ontdekt.

Het eerder weten dan de klant

Grafana-dashboards erop, met de handvol getallen die echt aangeven dat er iets mis is: wachtrijlengte, foutpercentage, schijfruimte en de wachttijd van het verzoek waar iemand op zit te wachten. Een dashboard waar niemand naar kijkt is geen monitoring, dus de getallen die het waard zijn om voor gewekt te worden krijgen een alert en de rest blijft een dashboard.

Wat u krijgt

  • Services in containers, met een compose-bestand dat een tweede machine kan reproduceren.
  • Postgres, MongoDB of ClickHouse, met een back-up die minstens één keer is teruggezet.
  • Grafana-dashboards op de getallen die problemen aangeven, met alerts op de getallen die dat waard zijn.
  • Een geschreven runbook: hoe u uitrolt, hoe u terugdraait en wat u als eerste controleert.

Het handelsplatform in het werkoverzicht draait zestien containers onder Compose met daarnaast een Kubernetes-variant, en staat hieronder gelinkt.

Veelgestelde vragen

Heb ik Kubernetes nodig?
Meestal niet. Docker Compose draait een systeem van zestien containers op één machine en blijft daarbij leesbaar. Kubernetes verdient zijn complexiteit zodra u meerdere machines nodig heeft, uitrollen zonder downtime, of automatisch herplaatsen van containers. Daaronder is het een tweede systeem om te beheren.
Welke monitoring richt u in?
Grafana-dashboards op de getallen die aangeven dat er iets mis is, met alerts op de getallen die het waard zijn om voor gewekt te worden. Het doel is dat een probleem eerder een mens bereikt dan een klant, dus een alert gaat naar iemand toe en niet naar een scherm dat niemand openheeft.
Kunt u op mijn eigen servers werken in plaats van in een cloud?
Ja. Ubuntu-servers ingericht en beheerd vanaf de terminal, met de diensten in containers zodat de opzet reproduceerbaar is. Dat is vaak het antwoord wanneer data op één plek moet blijven, of wanneer een werklast te constant is om per seconde te huren.
En back-ups?
Een back-up die nooit is teruggezet, is geen back-up. Het terugzetten hoort bij het inrichten, en de herstelprocedure komt in het runbook te staan samen met hoe lang die duurt.