Play Magnus

Play Magnus: Skalert for globalt trøkk!

Når vi jobber med Play Magnus og en internasjonal merkevare som Magnus Carlsen må vi tenke stor skala i alt vi gjør.

Play Magnus er en sjakkapp hvor du kan spille mot den virtuelle Magnus Carlsen på forskjellige alderstrinn. Du starter gjerne med å spille mot Magnus på 5 år, for så å prøve deg på Magnus 6 år og opp til 23 år etterhvert som du mestrer sjakk bedre.

Hensikten er å engasjere unge og gamle til å spille mer sjakk, og samtidig bli kjent med Magnus Carlsen. Det er treningsopplegg i appen som skal gjøre sjakkspillerne enda bedre og  konkurranser som skal engasjere,  og dette skal knytte spillerne tettere til Magnus Carlsens univers.

Det som ikke kommer så tydelig frem gjennom å studere appen i seg selv er den tjenesteplattformen som utgjør et ”game center” for Play Magnus. Denne tjenesteplattformen er det appene kommuniserer med om alt. Den inneholder informasjon om brukere, innhold, sjakkspill som er spilt, statistikker og konkurranser med mer. Altså alt Play Magnus og merkevaren trenger av informasjon nå og i fremtiden.

Hovedgrunnene for å lage en egen tjenesteplattform og ”game center” for Play Magnus er å eie dataene selv, og være et kryssplattform-knutepunkt for alle typer systemer og enheter som skal koble seg på dette universet. I tillegg er det viktig å kunne forme data som strømmer inn og ut av tjenesteplattformen etter behovene til Play Magnus universet på egne premisser. Vi legger også til rette for kryssplattform i fremtiden ved å bruke Xamarin til apputvikling. Dette gjør at vi kan gjenbruke store deler av forretningslaget og sjakkmotor på tvers av plattformer, og bygge felles kodebase i C#. Dette gir en kodebase som har svært høy kvalitet og robusthet.

Les mer om hvordan vi benytter Xamarin i prosjekter i Making Waves.

Brukerne og krav til brukeropplevelsen

Så hva vet vi om brukerne på denne nye tjenesteplattformen for Play Magnus? Hvordan vil denne veksten skje? Vil brukermassen vokse jevnt eller vil det skje i bølger? Alt vi vet kan vi bare anta gjennom analyser og tidligere erfaringer. Så ved å ta høyde for store tall og tenke at vi må bygge for alt fra 10 brukere til millioner vil jeg i alle fall kunne være sikrere på at systemet vi bygger er klar for bruken som kan forekomme en gang i fremtiden. Avhengig av oppmerksomhet i tradisjonelle- og sosiale medier, kan vi anta at det vil komme perioder med større vekst og aktivitet i forhold til aktiviteter som skjer rundt produktet og Magnus Carlsen selv.

graph1 Play Magnus: Skalert for globalt trøkk!

Fra forretningssiden høres millioner av brukere strålende ut, men fra den tekniske siden byr dette på en mengde utfordringer som må sees i sammenheng med forretningssiden. Dette handler om så mye mer enn å bare bygge applikasjoner og en database på en server som skal levere til alle disse brukerne. Det handler først og fremst om at brukerens opplevelse av systemene vi bygger skal være enestående.

La meg først forklare hva jeg mener med en enestående brukeropplevelse. Det skal være tilnærmet 100% oppetid på tjenesteplattformen med lave responstider til enhver tid. Applikasjonene som bygges rundt tjenesteplattformen skal ha gjennomgående god brukeropplevelse, og det skal aldri oppstå problemer som kan hindre brukerne på noen måte. Dersom vi klarer å levere denne opplevelsen uansett antall brukere og variasjoner i antall aktive brukere har vi oppnådd det ultimate og nærmest utopiske tilstander på en tjenesteplattform.

Tradisjonell serverdrift eller skytjenester?

Ved tradisjonell serverdrift forsøker man å anta på forhånd hvor mange servere og hvor stor båndbredde tjenesteplattformen trenger, men konsekvensen er ofte smertefulle erfaringer fordi man tok feil. Vi har vel alle opplevd billettsystemer som ikke er tilgjengelig når det er stor trafikk til nettsiden. Det er et eksempel på at det mangler mekanismer for å gjøre det i øyeblikket systemet trenger økt kapasitet, og da er det for sent.

scenario1 Play Magnus: Skalert for globalt trøkk!

Skytjenester kjennetegnes ved at det skalerer dynamisk ved kapasitetsbehov, og vi benytter slike skytjenester hver dag uten å alltid vite det. For eksempel når vi lagrer filer til Dropbox, og når vi spiller av video gjennom nettaviser eller Netflix. Vi merker ikke forskjellen på om dette står på en server i nabobygget eller om det kjører som en skytjeneste, og det er hensikten. Brukerne skal få kapasitet når de trenger det, og da blir alle fornøyd.

Vi kan også bruke en kombinasjon av mange ulike skytjenester i samme virksomhet, slik at vi bruker de tjenester som passer perfekt til det som skal løses i tjenesteplattformen. Samtidig får vi en elastisitet og prismodell som tilpasser seg bruken til enhver tid. Det er økonomisk lønnsomt og gir en svært god brukeropplevelse. Dette er prinsipper som Play Magnus bygger på fra dag én.

Er dataene mine sikre for innsyn av uvedkommende?

Det finnes også grunner til å være skeptisk til skytjenester. Dette gjelder spesielt rundt personvern og sikring av sensitive data. For noen vil dette hindre bruken av noen skytjenester. Det gjelder altså å behandle data riktig i forhold til den tjenesten man benytter. De fleste anerkjente skytjenester respekterer kundenes private data og lar det være opp til kundene selv å håndtere hvordan data flyter inn og ut av datasentre. Spørsmål rundt sikkerhet og personvern er allikevel viktig å ha kontroll på.

Alle systemer som har persondata må forholde seg til personvernloven her i Norge, samtidig som alle systemer som respekterer brukerne sine bør være ærlig og åpen om hvordan brukerdata blir benyttet. Man bør alltid sette seg inn i betingelsene rundt datalagring og personvern hos de enkelte skytjenester man benytter. For de aller fleste vil det ikke være noe problem å balansere lagring og behandling av data med bruk av skytjenester på en god måte.

Play Magnus’ tjenesteplattform

Play Magnus er bygget på skytjenester på grunn av kapasitet, elastisitet, smidig og effektiv utvikling og økonomi på tjenesteplattformen. Kjernen i tjenesteplattformen utvikles på Azure Mobile Services som er en ”Backend as a service” (BaaS).  For utvikling tilbys det et REST API som kjører på Node.js og kan benyttes av alle mobile løsninger, samt web og applikasjoner. Azure Mobile Services håndterer også registrering av mobile enheter for pushvarsler, autentisering via kjente autentiseringsløsninger som Facebook, Twitter, Google+ og Microsoft Account.

Det er mye automatikk i Azure Mobile Services som gjør tjenesten så god. ”Dynamic Schema” utvider databasens kolonner til å reflektere det vi sender inn som JSON data til tjenesten slik at en utvikler kan gjøre «code first»-utvikling. Utviklere kan utvide APIet med egen logikk gjennom kode i Node.js. Det er fullt mulig å installere egne og tredjeparts moduler ved bruk av Git og npm install.

Det finnes svært gode veiledninger for hvordan du kan komme i gang med integrasjon på nettsiden til Azure Mobile Services for iOS, Android, Xamarin, Windows Phone, Windows Phone 8, Sencha og PhoneGap med flere. Det hele kjører på toppen av en MSSQL server som lagrer data i tjenesten med alle de muligheter det gir for rapportering og behandling av data.

I tjenesteplattformen er det også mange andre skytjenester som benyttes for tilby brukerne best mulig opplevelse og kapasitet til enhver tid. Dette er tjenester som:

  • Cloudinary for bildelagring og bildeprosesseringstjeneste.
  • SendGrid for utsending av e-post i stort omfang.
  • Google Storage som filtjeneste. 

Play Magnus bruker også skytjenester som støtter utviklingsteamet for overvåkning av systemer, analyse og produktivitet. Noen av disse er:

  • New Relic for overvåkning av Azure Mobile Services og underliggende tjenester.
  • Google Analytics for brukeradferd.
  • GitHub for håndtering av kildekode og utrulling av tjenester.

Stack Play Magnus: Skalert for globalt trøkk!

Erfaringer og veien videre

Fra et forretningsperspektiv er det mye å spare ved å bruke skytjenester som er spesialisert og optimalisert for å levere enestående brukeropplevelser, og hvor du kun betaler for det som er nødvendig til enhver tid. Vår erfaring fra et utviklingsperspektiv er at det er fantastisk morsomt og givende å jobbe med skytjenester fordi det ikke krever oppsett av infrastruktur og venting på ordre hos en driftspartner. Veien fra idé til virkelighet blir kort fordi alle verktøy og tjenester ligger klart. Dette gir økt produktivitet og kreativitet, og som team kan vi levere mye mer funksjonalitet med høy kvalitet på samme tid som ved utvikling på tradisjonell infrastruktur.

Når alt kommer til alt kan vi bare vite hvordan løsningen skalerer og leverer brukeropplevelse ved å erfare det gjennom lansering av produktet – dette gjelder også når vi bruker skytjenester. Vi går mange spennende uker og måneder i møte med Play Magnus; vi skal analysere trender, og vurdere kapasitet og kostnader ved skytjenestene vi benytter. Brukerne selv definerer hvordan tjenesteplattformen Play Magnus skalerer fra dag til dag og hvilke behov som kreves. Men det vi vet er at det er ubegrensede muligheter ved bruk av skytjenester for Play Magnus i fremtiden.

Publisert