I 2021 vil Everyday kvitte seg med PHP

Kodeåret: Utviklerne satser heller på ASP.Net Core og Rust. 📆

Everyday-utviklere som trolig tenker nøye over sine teknologivalg i 2020. 📸: Everyday
Everyday-utviklere som trolig tenker nøye over sine teknologivalg i 2020. 📸: Everyday Vis mer

"Vi skaper en digital hverdag" hevder byrået Everyday, som holder til på Bragernes torg i Drammen.

Holdt til før korona, er kanskje riktigere å si.

Det relativt unge selskapet fra 2015 gjør først og fremst kundeprosjekter, alt fra nettsidene til Danvik folkehøyskole til NTB sitt bildesøk. Men de har også egne prosjekter, som GmodStore.com - en markedsplass for salg av plugins til Garry’s Mod, obskurt nok, som skal ha omsatt for 35 millioner kroner.

Til kode24s Kodeåret-serie forteller Marcus Dahl, seniorutvikler og partner i Everyday, om teknologivalgene de tok i 2020, valgene de skal ta i 2021 og hvordan koronapandemien påvirker arbeidsplassen deres.

Marcus Dahl, seniorutvikler og partner i Everyday. 📸: Privat
Marcus Dahl, seniorutvikler og partner i Everyday. 📸: Privat Vis mer

Hvilke teknologier begynte dere å bruke i 2020? ✨

I 2020 har vi lagt ned en god del arbeid i infrastruktur og CI/CD. Vi har omgjort hele måten vi bygger og lanserer nye versjoner av prosjekter.

Ved hjelp av Terraform, FluxCD og Kubernetes Helm bruker vi GitOps flittig og all definisjonen på server-infrastruktur, hosting og prosjekter ligger nå i sin helhet på GitLab. Dette betydde naturligvis at vi måtte over på et noe dyrere GitLab-abonnement, men det har også gitt oss muligheten til å bruke GitLab sine innebygde “package repositories” for hosting av JavaScript, PHP og C#-pakker.

JavaScript er et språk hele gjengen hos oss kan godt, og i år har vi prøvd å finne et bra Node.js-rammeverk i TypeScript. I den forbindelse har vi prøvd ut AdonisJs og sett litt nærmere på Nest.js. AdonisJs er et veldig lovende rammeverk skrevet i TypeScript for Node og vi håper at dette med tid kan bli Node sitt svar på PHPs Laravel, ettersom dette er noe vi ser mangler i Node, der Express blir for mangelfullt.

GraphQL er en teknologi vi har tatt i bruk i større grad i 2020 på nye kundeprosjekter (som vi liker å bruke Craft CMS til). Meningen bak dette er å kunne gjøre spørringer mot backenden så få ganger som overhodet mulig, slik at lastetid på mobil skal være raskere på trege mobilnettverk, eller i områder med dårlig dekning.

Automasjon er noe alle elsker i 2020, og i den forbindelse så har vi sett på løsninger som Zapier for å utføre enkle automatiske prosesser som vi ikke nødvendigvis trenger programmering til.

Zapier har blitt utrolig dyrt i det siste, og vi har derfor tatt i bruk et gratis self-hosted alternativ; n8n. Denne løsningen fungerer bra hvis du ikke har lyst til å punge ut med tusenvis av kroner i måneden for Zapier og lignende alternativer. Det er verdt å nevne at n8n (2019) er relativt nytt og føles foreløpig ikke like polert og enkelt å bruke som Zapier.

Everydays lokaler i Drammen. 📸: Everyday
Everydays lokaler i Drammen. 📸: Everyday Vis mer

Hvilke teknologier fasa dere ut i 2020? 🦵

I fjor startet vi å jobbe på en statusside til intern bruk for monitorering, oppetid og tracking av hendelser og planlagt nedetid. Denne skrev vi orginalt i Sails.js, men Sails.js har lenge sett ut som et dødt prosjekt, og vi skrev denne på nytt i AdonisJs. Sails blir nok ikke med videre, kan du si.

Vi snakket tidligere om at vi har gjort en del forbedringer på CI/CD og hosting-fronten, og det betyr jo også at vi faser ut teknologi vi brukte tidligere.

«Foreløpig har vi ikke kommet oss unna uforståelige yaml-filer.»

Keel, Dokku og cPanel står for felling her. Keel erstattet vi med FluxCD, og både Dokku og cPanel holder vi på å erstatte med vårt eget Kubernetes-cluster i godt selskap med Traefik og Let’s Encrypt cert-manager.

Dette gir oss en mye mer sømløs utviklingshverdag. Aldri mer gamle systemer satt opp med deployer/rsync via FTP og SSH, nå skal det brukes et ordentlig CI/CD setup med Docker og Kubernetes.

Vi har prøvd så godt vi kan å gjøre det lett for utviklerne våre å kunne sette opp egne prosjekter med FluxCD og Terraform, men foreløpig har vi ikke kommet oss unna uforståelige yaml-filer. Kanskje det er noe vi finner ut av i 2021? :)

Everyday skal bli kvitt endel PHP i 2021 - det er i alle fall planen. 📸: Everyday
Everyday skal bli kvitt endel PHP i 2021 - det er i alle fall planen. 📸: Everyday Vis mer

Hvilke teknologier skal dere begynne å bruke i 2021? 🔮

En ny framtid for markedsplass-plattformen vår står på agendaen i 2021, og her har vi planer om å skrive om store deler av markedsplassen fra PHP til ASP.Net Core og Rust.

Dette må gjøres i forbindelse med vår plan om å utvide horisonten til plattformen, og vi merker allerede i dag at PHP ikke takler alt vi slenger på den. Dette er mye på grunn av at PHP er et såkalt “runtime”-språk, og mangler ordentlig støtte for for eksempel database pooling.

Vi har noen store planer om å dele opp plattformen i macroservices (du har sikkert hørt om micro-services, macro-services har flere oppgaver) når vi skriver om plattformen, og da er det kanskje ikke så rart at vi har vendt hodet mot Google sin gRPC-protokoll.

Vi har behov for at disse macro-tjenestene skal kunne kommunisere med hverandre internt. Her kommer også Kafka inn i bildet, da vi har et stort behov for “event streaming” i en slik plattform.

Det ser også ut som at vi kommer til å bytte ut PostgreSQL med CockroachDB på akkurat dette prosjektet.

Thanos (nei, ikke han lilla superskurken fra Avengers) er et verktøysett for monitorering, som gjør Prometheus høyt tilgjengelig, som vi allerede har begynt å se litt på, men som vi ikke kommer til å ta i bruk ordentlig før på nyåret. Thanos skal hjelpe oss å sentralisere all monitoreringsdata fra hele infrastrukturen vår i sanntid, slik at vi til enhver tid har kål på hva som rører på seg.

Everyday gleder seg til å komme tilbake til kontoret - hjemmekontor kan bli stressende. 📸: Everyday
Everyday gleder seg til å komme tilbake til kontoret - hjemmekontor kan bli stressende. 📸: Everyday Vis mer

Hvordan vil koronapandemien prege dere framover? 😷

Bortsett fra mye dårligere kaffe på hjemmekontor, så merket vi ingen negative effekter i begynnelsen av pandemien. I første globale lock-down startet det med at vi fikk dobbelt så mange transaksjoner på markedsplassen vår enn vanlig i hele mars måned, men det roet seg ned i april.

«Hjemmekontor er etter min mening stressende i lengden.»

I april la vi merke til at enkelte kunder av oss begynte å slite økonomisk - noen prosjekter ble satt på vent, på andre prosjekter fikk vi streng beskjed om å holde oss innenfor de økonomiske rammene til tilbudet.

Utover 2021 ser det ikke ut som at koronapandemien skal ha langvarige effekter for akkurat oss, men vi gleder oss til å kunne dra tilbake til kontoret og ha en litt mer normal hverdag.

Hjemmekontor er etter min mening stressende i lengden, ettersom jeg og mange andre unge utviklere sliter med å separere jobb og fritid på hjemmekontoret.