Fiken hoster på egne servere

- Vi bruker mest tid på utvikling, siden driften er så enkel.

Andreas Marienborg er utvikler og styrer med hosting i Fiken. 📸Fiken
Andreas Marienborg er utvikler og styrer med hosting i Fiken. 📸Fiken Vis mer

Denne uken slår vi av en prat med Andreas Marienborg, som til daglig jobber som utvikler i Fiken, selskapet bak regnskaps-tjenesten fiken.no med over 20.000 brukere.

kode24 har tidligere vært på besøk hos firmaet bak en av Norges mest populære online-regnskapsprogram for små bedrifter, og da kunne utviklingssjef Aleksander Blomskøld fortelle at Fiken hostet tjenestene sine selv.

Vi ble selvsagt nysgjerrige, og har derfor fått audiens hos Andreas, som også styrer med hosting for Fiken, for å finne ut mer om hva slags oppsett som får fiken.no til å skinne.

«Pragmatiske som vi er, så kjører vi ting selv foreløpig.»

#1. Hvor hostes det dere bygger i dag? 🏰

Vi hoster på servere vi leier av Syse, som hoster sine servere hos Digiplex. Vi hoster på egne servere av flere grunner, men vi er blant annet pålagt å lagre minst en kopi av alle regnskapsdata og bilag innenfor landets grenser, som gjør at vi ikke bare kan dytte alt til AWS eller GCS for eksempel.

Vi har heller ikke voldsomme svingninger i trafikk eller vekst som gjør at vi trenger å skalere fort opp og ned, så vi tror ikke gevinsten med "cloud" ville vært så stor for oss. Vi er ganske sikre på at kompleksiteten ville blitt større dog, så pragmatiske som vi er, kjører vi ting selv foreløpig.

2. Hvordan håndterer dere deploy til serverene? 🛫🛬

En utvikler bestemmer seg for å bygge en release som lastes opp til intern nexus, også kjører en av oss med prod-tilgang "fk-rollout" som laster ny versjon ned og oppgraderer en instanse, starter den, venter til den er "good to go", før den stopper den gamle instansen.

Vi bruker SO_REUSEPORT for å unngå merkbar nedetid for brukere.

3. Hva brukere dere til å holde oversikt over drift?🔍💡

Vi bruker Newrelic, Datadog, Pganalyze, Sentry og Ansible. NewRelic brukes mest som APM, Datadog brukes mer for å samle info om maskinene (vi bruker også Newrelic-infrastructure, men Datadog har vært enklere å få ut sære ting av som egne spørringer mot Postgres etc).

Pganalyze brukes for å følge litt med på de verste spørringene våre, og gjøre noe med de. Sentry samler backend-feil så vi kan fikse de kjapt og rulle ut fikser fortløpende. Ansible brukes for å være tålelig sikre på at vi kan reprodusere en prod-maskin kjapt.

4. Hva bruker du mest tid på i hverdagen? 👨💻

Utvikling, fordi driften vår er ganske enkel.

5. Hva bruker dere til caching? 👾

Vi bruker nginx sin cache litt på statiske filer, også bruker vi Infinispan/Hibernate sine caches i applikasjonene. Vi har også noen semi-custom cacheløsinger i klienten for data som brukes på tvers av mange sider, og som kan bli store datasett å hente ofte.

Vi bruker ikke noe mer caching foran app-server fordi lite gir mening å cache der.

Flaks vi har soverom på jobben så jeg fikk tatt ett i liggende format, flirer Andreas. 📸Fiken
Flaks vi har soverom på jobben så jeg fikk tatt ett i liggende format, flirer Andreas. 📸Fiken Vis mer

6. Hva brukere dere til domener / DNS? 💙

Domeneshop for det aller meste, men Cloudflare for DNS på fiken.no fordi et system vi skulle bruke hadde avtale med dem for å få HTTPS.

«Vi har byttet litt rundt på noen servere, og nesten alt ved siste flytting gikk av seg selv med ansible.»

7. Hva er du mest fornøyd med å ha gjennomført i forbindelse med hosting det siste året? 😚

Vi har byttet litt rundt på noen servere, og nesten alt ved siste flytting gikk av seg selv med ansible.

8. Hva har du lyst til å teste/bytte ut fremover, og hvorfor? 🤔

Vi lagrer i dag ganske store datamengder lokalt, på sikt må vi gjøre noe smartere her. Om det er "cloud" eller om det er flere egne maskiner som er løsningen vet vi ikke enda.

9. Hva skulle du ønske utviklere og kollegaer ble flinkere på? 🍬

Tror vi utviklere generelt kunne vært flinkere på å av og til tenke konsekvenser, men her synder jeg minst like ofte selv som kollegaer, så jeg vet ikke om det er et godt svar på dette spørsmålet. 😊