Det er gøy med små hobbyprosjekter med et par visninger om dagen.
Men hva i huleste gjør du når det plutselig ramler et par millioner mennesker innom siden din hver dag?
Det er problemet utviklerne i Aller Media står overfor hver dag, spesielt dem som jobber med hosting.
Aller Media står bak store nettsider som Dagbladet.no, Dinside.no, kk.no og lommelegen.no, med over 3,5 millioner daglige visninger.
kode24 har pratet med Ørjan Ommundsen, som leder devops-teamet hos Aller, om hvordan de løser hosting-utfordringene sine.
#1. Hvor hostes det dere bygger i dag? 🏰
Vi har alt på Google Cloud Platform. Dette var ut i fra et ønske om å komme bort fra tradisjonell hosting, der man er avhengig av en tjenesteleverandør, og gjerne også et ticketsystem, for å få ut endringer i infrastrukturen. Kostnad er også definitivt en faktor.
Slik hostes NSB.no og appene
CloudFront, Elastic Beanstalk og Route 53.
#2. Hvordan håndterer dere deploy til serverene? 🛫🛬
Vi bygger utelukkende containere, og kjører dem på Kubernetes. Hemmeligheter dyttes i Hashicorp Vault. Alle deploys går via et felles deploy-repo, der siste versjon av sannheten alltid bor.
Dette lar oss ha reproduserbare deployments i flere miljøer, og holde all konfigurasjon og oppsett versjonert i Git. Konfigurasjonen følger appen. Det blir også veldig enkelt å fyre opp en lokal instans av en app som har vært gjennom hele CI-løpet.
#3. Hva bruker dere til å holde oversikt over drift?🔍
Vi bruker Prometheus til metrikk, som vi agerer på på forskjellige vis. Vi har en del varsler basert på metrikk, og vi bruker selvfølgelig Grafana til å visualisere det vi samler inn. Når det kommer til logging så lar vi Filebeat skrive direkte til Elasticsearch, og bruker Grafana til å se på feilrater og slikt. Samt Kibana til å grave dypere i materien.
3,5 millioner requests i minuttet – vraket SQL for MongoDB
Vi instrumenterer appene våre med Opentracing-biblioteker, og bruker Jaeger til å samle inn traces. Dette har vært veldig nyttig for å finne mer obskure utfordringer i en stadig mer mikrotjenestebasert stack. Vi har vært innom Stackdriver, ettersom vi er på Google Cloud Platform, men vi klarte aldri helt å bli venner med den.
#4. Hva bruker du mest tid på i hverdagen? 💻
Skrur på infrastrukturen, og prøver å finne nye måter å få ut mer informasjon og "observability" av alt som står og durer.
Vi ser at det er mye gevinst å hente når man finner nye verktøy, eller får automatisert noe som tidligere var et manuelt makkverk av "husk-å-gjøre-i-denne-rekkefølgen".
Og det er alltid noe å ta tak i.
«Det er lite som betaler seg så godt som Varnish.»
#5. Hva bruker dere til caching? 👾
Vi bruker Varnish i veldig stor utstrekning. Har man et godt regime for cache-channels og invalidering så er det lite som betaler seg så godt som Varnish.
Slik bygde de Mokkameister 9000
Hobbyprosjektet har varslet om snart 2.200 kanner nytraktet kaffe.
#6. Hva brukere dere til domener/DNS? 💙
Vi bruker Cloudflare til DNS. Mest fordi vi pleide å kjøre trafikken vår gjennom dem for caching, og at det dermed ga mening å ha alle sonene våre der.
Vi fikk imidlertid stadige overraskelser ved å bruke cachingen deres, og bestemte oss for å ta kontroll over dette laget. Sonene ble liggende igjen. API-et deres er godt og fungerer fint sammen med de verktøyene vi bruker for å automatisere DNS-operasjoner.
«Cachelaget er vår mest kritiske komponent.»
#7. Hva er du mest fornøyd med å ha gjennomført i forbindelse med hosting det siste året? 😚
Vi flyttet cache-laget vårt til Redpill-Linpro i Norge, hovedsakelig for å spare penger på båndbredde, men også for å ha innholdet vårt nærmere leserne.
A story about my meeting with Google Firebase
How I built a virtually infinitely scalable realtime collaboration program in 10 hours.
Det føles også godt å ha en tredjepart som overvåker akkurat denne biten. Det er vår mest kritiske komponent. Vi sparte en god slump penger på å kutte transitt-trafikken vår til utlandet, som var ganske høy da Google ikke har datasentre i Norge.
#8. Hva har du lyst til å teste/bytte ut fremover, og hvorfor? 🤔
Service mesh er en ting vi ser på, og har sett på en stund nå. Vi skal også bytte ut ingress-punktene våre slik at de ikke lenger bruker Googles lastbalanserere, men heller noe som vi kan titte inn i og feilsøke litt enklere.
9. Hva skulle du ønske utviklere og kolleger ble flinkere på? 🍬
Jeg er bortskjemt med veldig flinke kolleger, men fra et devops-ståsted så kunne jeg noen ganger ønske at utviklere generelt la mer vekt på å instrumentere appene sine - og tilgjengeliggjøre metrikk/logging/tracing før man havner i en feilsituasjon.
Det er ofte at dette skjer som en konsekvens av en feilsituasjon, og da blir feilsituasjonen nødvendigvis mer varig enn den hadde behøvd å være.
(For ordens skyld: kode24 eies av Scandinavia Online, som igjen eies av Aller Media)
Fiken hoster på egne servere
- Vi bruker mest tid på utvikling, siden driften er så enkel.