Byggt för stabilitet, säkerhet och skalbarhet

Nedan beskriver vi de teknik- och plattformsval som vi gjort när vi utvecklat våra produkter. Detta är förstås något som utvecklas kontinuerligt.

Svensk lagring

Plattformarna körs på Amazon Web Services och all data sparas på servrar i Sverige.

Skalbar arkitektur

Genom modern molnarkitektur kan plattformarna enkelt skalas upp när det tillkommer fler användare och kunder.

API-first

Lösningarna är byggda med tanke på att integreras med andra system. De har öppna API:er för att komma åt funktioner och data.

Multi-tenant

Genom att lösningarna är byggda som SaaS-plattformar kan vi enkelt lägga till nya kunder utan att behöva göra nya installationer.

Säkerhet

Lösningarna är byggda med hög säkerhet i åtanke. Det gäller allt från autentisering/inloggning till datalagring och hantering av personuppgifter (GDPR).

En modern teknisk plattform

Vi använder moderna tekniska lösningar för utveckling av våra produkter. Nedan beskrivs vilka lösningar som används för olika delar av produkterna.

Serverplattform

I använder AWS EC2-instanser med Ubuntu. Servrarna hanteras via SSH och är lösenordsfria vilket ställer krav på privata SSH nycklar för åtkomst, men bidrar till drastiskt ökad säkerhet. Vissa applikationer använder general purpose app-servrar (med webbserver, databas- och cache-servrar på samma server), medan andra har tjänsterna distribuerade över specifika tjänsteservrar, med t.ex. isolerade databas- och webbservrar.

Versionshantering

Versionshantering hanteras via GitLab och GitHub och följer metodiken Git Flow. Våra kodbaser tillämpar Continous Integration (CI) via antingen GitLab Runners eller GitHub Actions för att säkerställa funktionalitet innan deployment. Vi använder Laravel Forge för att hantera samtliga AWS-instanser, med automatisk deploy efter lyckad commit + CI.

Utvecklingsplattform backend

All backend är byggda i PHP med standardiserad Composer-hantering av tilläggspaket. Applikationer är byggda i Laravel enligt best practice.
Majoriteten av applikationerna använder MySQL som databas, medan ett par ligger på MariaDB eller Postgres. Laravel-apparna använder Redis genom predis/PHP-redis för objekt-cachning. All köhantering sköts i princip med schemalagda jobb genom Laravels inbyggda scheduler. Vi använder AWS Lambda-funktioner i ett flertal projekt för att hantera högintensiva belastningar.

Specifikt för iCatServer

iCatServer är byggd som en SPA i Vue2 med Vite som byggmotor och ett löst kopplat API genom Laravel för backend. Det är en multi-tenancy app med central användar- och behörighetsstyrning och är förberedd för att agera Identity Provider (IdP) åt andra tjänster. Tenancy-modellen bygger på isolerade databaser för varje tenant, och sköts idag av en separat MySQL-server. Cachning av objektdata sköts med Redis på databasservern och lagring sker på AWS S3. Applikationen är därmed helt förberedd för horisontell skalning med lastbalansering.
Uppladdning av media sköts i huvudsak av en Lambda-funktion, precis som zippning av media-filer. Utgående mail från systemet hanteras via MailGuns API och realtids-notiser via PusherJS.

Utvecklingsplattform frontend

Vi använder Vue.js och de flesta lösningarna är Single Page Applications (SPA) med Laravel-applikationer som API. Ett par applikationer använder Server Side Rendering (SSR) genom Nuxt. Vi använder antingen Webpack eller Vite som byggmotor. Pakethantering skiftar mellan NPM, Yarn och PNPM. För realtidsnotiser används Pusher i ett flertal applikationer, samt en egen sockets.io-server för testning.