Sikker, compliant og skalérbar afstemning i skyen

Kontakt

Jan-Erik Revsbech, CTO

Systemet

Online valgsystem

Assembly voting leverer valgsoftware til til afholdelse af digitale lov- og vedtægtsbestemte afstemninger ved generalforsamlinger, årsmøder og lign. Uanset om deltagerne befinder sig i samme lokale, eller om de sidder hver for sig. 

Løsningen giver en brugervenligt system til at afholde valg direkte i en browser og leveres som en Software-as-a-service platform.

Assembly voting har været kunde host Peytz i flere år, og fald det derfor naturligt at gøre brug af vores Cloud ekspertise. 

Udfordringen

Dynamisk skalérbarhed og uforudsigeligt brugsmønster

Som en SaaS platform er det svært at forudsige hvornår der er brug for mange ressourcer, kunderne kan selv oprette og afvikle valg, og hvis mange kunder har mange store valg samtidig, er der behov for stor kapacitet. Det er derfor nødvendigt enten at have meget høj kapacitet som tager højde for at der være mange samtidige valg, eller at have et system som automatisk tilpasser sig behovet. 

At køre med overkapacitet i 98% af tiden er selvsagt en dyr løsning, og Assembly Voting bad derfor Peytz om at skitsere et setup som automatisk skalerer op og ned baseret på forbrug. Selvfølgelig uden at gå på kompromis med sikkerhed og behovet for compliance.

Process og løsning

AWS, Containere og skalerbar infrastruktur

Webapplikationer med behov for dynamisk skalering, og hvor workload kan variere meget, er en af den type applikationer som bedst kan udnytte Cloud computing. I cloud miljøer er betalingen forbrugsafregnet og der er altid masser af ressourcer, og man skal derfor ikke dimensionere sin infrastruktur efter maksimal kapacitet - man betaler kun for det man bruger. 

Sammen med Assembly Voting lavede vi et assesment af den angivne applikation med henblik på at lave en transition til en public cloud og opbygning af en dynamisk skalerbar infrastruktur. 

Valget faldt på en containerized platform og på Amazon Web Services (AWS) som cloud provider.

Teknikken bag

ECS, Fargate, CloudWatch, Aurora Serverless, AWS Codebuild og Terraform

For at sikre maksimal skalérbarhed og minimum management, faldt valget på en en container baseret løsning hostet i AWS Elastic Container Service Fargate. Løsning er en pay-as-you-go fully managed service som giver mulighed for at skalere antallet af containere nærmest uendeligt. Applikationen består af tre forskellige services som har hver deres ECS task definition, og kan skaleres individuelt. 

Skalering af applikationen foregår via en custom CloudWatch metrik som angiver hvor mange brugere der pt bruger platformen, således at der kan skaleres efter behov.

Applikationen bruger en central database, og der var derfor behov for at lave en infrastruktur hvor database også kan skaleres dynamisk. Valget faldt på AWS Aurora serverless som ligeledes er en fully managed database service, hvor patching og skalering håndteres af AWS.

Som en del af projektet, er der opsat AWS Codebuild og AWS Codepipeline til CI/CD  som også sikrer, at der bygges Docker containere ved hvert commit og at applikationen kan deployes automatisk til et staging mijlø, og manuelt til produktion.

Systemet er opsat med Terraform.

Brug for en gennemtænkt Cloud-løsning?