Ett socialt spel med serverlös arkitektur på AWS-molnet

 

GuessMyLife är ett socialt frågespel utvecklat på uppdrag av en prisbelönt författare. Det designades för uppmuntra besökarna till att registrera sig och tillbringa tid på webbplatsen. Det utvecklades nativt till molnet med serverlös arkitektur med bland annat Go, AWS Lambda, AWS API Gateway, AWS SES och AWS SNS.

Projektet började som en abstrakt idé hos kunden om ett onlinespel för att engagera besökarna. Huvudsyftet med applikationen var att få besökarna engagerade så fort de kom till landningssidan och sedan hålla dem fortsatt motiverade.

Kunden, Stefan Ekberg, är en svensk författare och manusförfattare med över 25 års erfarenhet av att skriva böcker inom marknadsföring, ledarskap och företagande.

Våra skickliga mjukvaruutvecklare och designers jobbade ihop med kunden för att förbättra den ursprungliga idén. Kundens öppenhet inför nya idéer gjorde det enkelt för oss att dela våra synpunkter och tankar.

Några av de viktigaste synpunkterna vi hade var att spelet borde vara enkelt och ge snabba belöningar med resultat till användaren. Det passade väl med applikationens huvudsyfte och kunden både instämde och uppskattade idén.

Det här sociala spelet handlar om att gissa sig till personlighetsdrag utifrån bilder på personer. Bilderna visas i form av ett horisontellt bildspel, där varje kort har ett foto och en fråga.

Frågan ber användaren om gissningar om egenskaper som ålder, nationalitet, utbildning osv. Efter ett par gissningar dyker det upp ett kort som ber användaren att registrera sig. Efter registrering kan användaren ladda upp egna bilder och få dem inkluderade i spelet.

Applikationen skapar veckovisa rapporter med statistik över webbplatsens besökares engagemang. API för Facebook och Twitter är integrerade för att användarna ska kunna dela med sig av dessa rapporter på sociala medier. Det ger fler återkommande besökare och lockar samtidigt nya till applikationen.

Applikationen har utvecklats med inbyggt stöd för flera språk. För tillfället finns den både på svenska och engelska. Framöver kan flera språk läggas till, utan några större kodförändringar.

Vad lärde vi oss?

Det här var ett av de första projekten vi utvecklade med Golang. De utvecklare som tillägnades uppgiften lyckades utan problem skapa en säker och robust applikation. Vi har nu ett fullfjädrat team av Go-utvecklare – eller Gophers, som de också kallas.

Att göra egna applikationer ovanpå serverlös arkitektur var relativt nytt för oss. Vi gjorde omfattande research innan projektet började för att bekanta oss med de vanligaste misstagen med en sådan typ av arkitektur.

Serverlös arkitektur innebär betydligt lägre kostnader för hosting av applikationen, så för kunden är det därför mer kostnadseffektivt.

Kostnaden för AWS Lambda bygger på antalet hanterade förfrågningar. När en app precis har lanserats kan kostnaderna därför förväntas vara minimala på grund av låg trafik.

Om vi hade valt traditionell arkitektur hade kunden behövt betala för alla resurser oavsett trafikmängd eller hur mycket de använts.

Teknisk information

  • Golang – Ett perfekt språk när man behöver kombinera säkerhet, samtidighet och enkelhet. Det är ett snabbt språk i jämförelse med språk som PHP och dess effektiva hantering av samtidighet gör att man kan leverera smidiga användarupplevelser även under hög belastning.
  • Serverlös arkitektur – En av de utmaningar vi stötte på var hur vi skulle bygga systemet för att hantera varierande trafik – från ett par hundra till flera tusen förfrågningar per sekund. Vi löste det genom att bygga systemet med serverlös arkitektur, vilket gör att det skalar automatiskt efter belastning. För det serverlösa ramverket använder vi följande AWS-tjänster: Lambda, Simple Notification System och API Gateway.
  • Amazon Cognito – Den här tjänsten integrerades för att sköta registrering och inloggningar. AWS S3-tjänsten används för att säkerställa att applikationens data lagras tryggt och säkert på servrar med hög tillgänglighet.
  • Amazon Simple Email Service – Den här tjänsten installerades för att hantera e-postutskick och DNS-hantering sköts med hjälp av Amazon Route S3.

Databasen ligger på MySQL-instanser hos Amazon RDS, med multi-AZ för hög tillgänglighet och failoverstöd.

Framtida planer

Vi ser fram emot att göra en mobilapp av applikationen. Vi tror att spelet skulle vara mycket mer engagerande som en mobilapp. Pushmeddelanden skulle också hjälpa med att hålla engagemanget uppe och lyckas få tillbaka användarna till systemet mer regelbundet.

Ett socialt spel med serverlös arkitektur på AWS-molnet
Att arbeta med LiteBreeze var helt fantastiskt. Deras tekniska kompetens och värdefulla insikter förbättrade mina idéer och projektet. De är mer av en ansvarstagande utvecklingspartner än bara ett mjukvaruteam. Jag rekommenderar gärna LiteBreeze! - Stefan Ekberg (Stockholm)
Team of developers who worked on this project: Jithin, Priyesh, Ragunathan, Kiran A, Krishna Raj