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.
