wk voetbal webapp: dag 1

 
04 april 2010

Nog geen dag terug op de Sogyo-boerderij en ik zit alweer op een volgend (intern) project: een wk 2010 voetbalpool webapplicatie. Dit is een research-project waarvoor we van Agentschap NL (voorheen o.a. SenterNovem) een subsidie hebben gekregen in het kader van de WBSO (Wet Bevordering Speur- en Ontwikkelingswerk). Nou is een voetbalpool niet erg vernieuwend, maar wel de manier waarop we de applicatie gaan opzetten.

We gaan namelijk volledig volgens Event Driven Architecture werken, waarbij alle functionaliteit via asynchrone events wordt afgehandeld.  Daarnaast leven er binnen Sogyo recent een aantal andere concepten die we ook zullen proberen te gebruiken: DDD (Domain Driven Design), CQRS (Command Query Responsibility Separation) en het Actor model.

Tijdens deze eerste dag (of eigenlijk halve dag) is het team geformeerd en aan elkaar voorgesteld. Op alfabetische volgorde doen mee: Anatoly, Christa, Jan-Willem, ikzelf, Ralf en Rick. Arno heeft een soort managers-rol en Simon is de opdrachtgever: hij heeft al eens zo’n soort applicatie geschreven voor eerdere EK’s en WK’s, en heeft dus al een hele beschrijving van wensen en eisen van de applicatie.

Binnen de applicatie moeten gebruikers zich kunnen registreren en aanmelden; ze moeten voorspellingen kunnen invullen; en ze moeten een (of meerdere) groep(en) kunnen aanmaken om een pool te kunnen opzetten voor bijv. hun collega’s, en ze moeten zich kunnen aanmelden voor een groep. Een beheerder van zo’n pool (groep) moet nieuwe aanmeldingen dan weigeren of toelaten. De applicatie moet overzichten kunnen laten zien van wie er van iedereen de beste voorspellingen heeft gedaan, en van ingelogde gebruikers hoe ze ervoor staan binnen de algehele rankings en binnen hun eigen pools. Ook komt er een overzicht welke pool er gemiddeld de beste voorspellingen heeft gedaan. Als nice-to-have komt er een chat-mogelijkheid/status-update en we willen ook nog een iPhone– en Android-applicatie bouwen om de overzichten te kunnen bekijken. En dit alles moet rond begin mei in elk geval zodanig draaien dat we live kunnen met beperkte functionaliteit (inloggen, voorspellingen invoeren) en we bij het begin van het WK volledig up-and-running zijn.

Als eerste vragen kwamen naar voren: welk platform kiezen we om tegenaan te programmeren, en waar en hoe gaan we de applicatie hosten? Niet iedereen in ons team had ervaring met .Net terwijl eigenlijk wel iedereen al eens met de JVM had kennisgemaakt. (Toegegeven, mijn eigen ervaring is niet erg groot maar de JVM is ook wel weer eens verfrissend na 2,5 jaar .Net) Het wordt dus een JVM. Ralf kwam met het voorstel om als programmeertaal Scala eens uit te proberen: dat is een hybride (functionele en objectgeorienteerde) taal die op de JVM draait, en bovendien in de libraries al een Actor-constructie kent. Nog niemand van ons is echt bekend met Scala, dus dat wordt een leuke uitdaging – we moeten perslot vernieuwend bezig zijn :-)

Wat betreft hosting was Arno al vrij snel duidelijk: dat willen we niet in-house doen, vanwege mogelijke risico’s. We moeten dus een hosting-partij zoeken. Dat kan er een zijn waar we een VM kunnen neerzetten, of we kunnen ‘in de cloud’ gaan. De Google App Engine kwam naar voren als hosting-partij, maar die heeft als nadeel dat applicaties niet continu kunnen draaien. Binnen het Actor-model wil je eigenlijk al je actoren live houden, en dan werkt het Google-model niet echt lekker zonder allerlei rare toeren uit te gaan halen, omdat je app maar iets van 30 seconden mag draaien. Het zou erop neerkomen dat we voor elke actor een Google App zouden moeten aanmaken, en dat moet dan dus ook dynamisch geregeld worden – al met al een nogal vieze constructie. MS Azure is eigenlijk niet eens ter sprake gekomen, dus we gaan eens kijken naar Amazon EC2.

Kortom: er is nog een hoop te onderzoeken zelfs al voordat we aan de slag kunnen, wat ons dus ook de rest van deze eerste dag al heeft beziggehouden.

…en toen werd het half zes, en alles was wel.


Werken met ?
Kijk dan bij onze mogelijkheden voor starters en/of ervaren IT'ers.


Categorieën: Development


Reacties (4)

  • Azure zou toch wel een interessante optie kunnen zijn, aangezien de infrastructuur zich wel leent voor een event-gedreven benadering. Zo zijn er in Azure queues aanwezig en kan je je actoren in een backgroundworker role laten executeren.

    Geplaatst op 04 april 2010 om 9:55 Permalink

    • Ivo Limmen schreef:

      Overigens heeft Google’s AppEngine ook vrij jobs, het is (volgens mij) ook mogelijk om het daar in te doen.

      Geplaatst op 04 april 2010 om 18:25 Permalink

      • Ivo Limmen schreef:

        Ik bedoelde uiteraard: cron jobs. Mijn telefoon ‘verbeterde’ het naar vrij.

        Geplaatst op 06 april 2010 om 6:36 Permalink

        • Jasper Stein schreef:

          @Ivo: bedankt voor de suggestie. Ik heb het in de groep gegooid. (Zie dag 3)

          Geplaatst op 06 april 2010 om 16:38 Permalink