upper right bubble
ephort logo
contact icon
lower left bubble

Sådan blev Firmagave-shop.dk klar til 35.000 besøgende på samme tid

Sådan blev Firmagave-shop.dk klar til 35.000 besøgende på samme tid

35.000 besøgende på Firmagave-shop.dk i de samme sekunder stiller store krav til teknisk skalering.

Hvis ikke backenden spiller, så går webshoppen ganske enkelt ned - og brugerne får en dårlig oplevelse.

For Firmagave-shop kan det have den konsekvens, at deres kunder opsiger samarbejdet.

Laravel som framework

Firmagave-shop behøver egentlig ikke den store præsentation - det ligger lidt i navnet.

De er en virksomhed, der sælger firmagaver digitalt. Firmagave-shops kunder er virksomheder med helt op til 35.000 medarbejdere.

Og hvert år får de 35.000 medarbejdere at vide, at på en bestemt dato på et bestemt klokkeslæt, kan de gå ind på Firmagave-shop.dk, logge ind og så vælge deres julegave.

Og det er det, der sker. Medarbejderne sidder klar til at logge ind, og det sætter naturligvis et pres på Firmagave-shops tekniske skalering.

Hvad har vi hjulpet med?

For at Firmagave-shop.dk kunne stå så skarpt som muligt, har vi hos Ephort hjulpet Andreas fra Firmagave-shop med at forberede sig til den trafikerede dag, hvor 35.000 medarbejdere fra en af Danmarks største virksomheder skulle vælge deres julegave.

Andreas ville gerne sikre at webshoppen:

  • kan håndtere alle de besøgende på samme tid
  • ikke har behov for køsystem
  • ikke sælger flere varer end der er på lager, selv hvis flere personer bestiller i samme sekund

Det har vi gjort - teknisk

Ligesom Egon Olsen startede vi med at lægge en plan. Planen var:

  • at lave et benchmarking-script, så vi kunne vurdere hvad løsningen kunne klare i dag
  • identificere de flaskehalse og optimeringsmuligheder der var
  • optimere kodebasen, så den eksekverede så effektivt som muligt
  • opsætte load balancers og horisontal skalering, så infrastrukturen kunne håndtere den store mængde trafik
  • verificere at den nye opsætning kunne klare det forventede antal besøgende

Og nu bliver det teknisk.

Den applikation, der skulle udsættes for trafik, var bygget på en kombination af PHP, Laravel og MySQL.

Derudover tilføjede vi Redis, som vi anvendte til at gemme bruger-sessioner centralt samt til håndtering af kø-opgaver.

Load balancer blev opsat som en service hos cloud-provideren.

I Laravel var det muligt at lave en del optimeringer. Der er stor forskel på, hvordan en standard Laravel-installation performer versus en optimeret Laravel-installation.

Vi udnyttede de forskellige caching-muligheder, der er indbygget i frameworket, og trak også et par arbejdsopgaver ud fra det synkrone flow og over til et køsystem i stedet.

MySQL-databasen fik også en gennemgang, hvor det var muligt at optimere selve MySQL-konfigurationen både ift. databaseforbindelser, men også ift. InnoDB cache-laget.

På applikationsserver-fronten valgte vi at gå med færre større instanser i stedet for mange små, hvilket satte krav til tuning af bl.a. open file limits på operativsystemet samt webserveren.

PHP-serveren kunne optimeres både ift. opcache-grænseværdier, men også antallet af worker nodes skulle justeres, så det passede bedre til mængden af tilgængelig RAM samt CPU-kerner.

Kort sagt: Vi optimerede hele kæden fra applikation til infrastruktur.

Løsningen bygger stadig på PHP, Laravel og MySQL, suppleret med Redis til sessioner og kø-opgaver.

Det oplevede vi på dagen

På dagen fulgte vi med i ressourceforbruget på tværs af serverne og tog stikprøver i applikations- og serverlogs.

Udover et par justeringer til applikationslaget forløb det planmæssigt, og serverne havde markant mere luft end forventet.

Databaseserveren var den eneste service, der ikke var horisontalt skaleret, og blev dermed en service, vi holdt ekstra øje med. Det viste sig dog, at den var af en sådan tilpasset størrelse, at den stort set ikke var påvirket af trafikken.

De største udsving i trafik var overstået efter 2-3 timer, hvorefter vi slukkede et par servere, og dagen efter var vi helt tilbage til normal serverkapacitet.

Alt i alt en vellykket dag, hvor Firmagave-shops kunder fik en god digital oplevelse - og det kan næsten ikke være vigtigere, når det er årets julegave, det handler om.

En meget spændende opgave, som taler lige til os.

"Samarbejdet med Ephort skabte fra start begejstring, da vi oplevede en stor teknisk viden og kunnen. Ephort har på kort tid hjulpet os med at optimere en platform, som kun havde én chance for at præstere. Deres evne til at gribe opgaven og gå målrettet til værks har været en stor hjælp og har uden tvivl været afgørende for den sæson, vi har gennemført. Der er ingen tvivl om, at Kristian og teamet har de tekniske kompetencer på plads, som skaber den tryghed, vi har brug for. Vi ser frem til at kunne trække på deres kompetencer til at skalere vores forretning yderligere."
Andreas Seierup Loop, Firmagave A/S

Få en uforpligtende snak

Mia Valentina Lauridsen

Mia Valentina Lauridsen

Kundeansvarlig

Du er velkommen til at ringe direkte på +45 21 90 71 75 eller skrive en mail på info@ephort.dk

Du kan også udfylde formularen, så kontakter vi dig hurtigst muligt.