Keskustelimme asiakkaan kanssa, mitä
mieltä he ovat Googlen pilvipalvelun käytöstä. Heillä ei ollut
ongelmaa sielunsa myymisessä kansainväliselle yhtiölle. Asiakkaan
tulevaisuudensuunnitelmiin ei kuulu oman hakukonepalvelun
aloittamista, joten päätimme luottaa Googleen. Tietokanta on toki
kryptattu, mutta kryptausavain on koodissa, joka on Googlen hallussa.
Käytimme tietokantaratkaisuna App
Enginen omaa NoSQL tietokantaa. App Enginen datastore tarjoaa JDO
standardoidun DataNucleus merkintöjä syövän ORM tallennustilan.
Päädyimme ratkaisuun, koska se nopeuttaa tietokannan suunnittelua.
Toisena perusteena on helppo datan integraatio Vaatimeen, koska
pystymme käyttämään POJOja sekä tallennukseen, että itse
applikaation komponenteissa.
Tietokannasta tuli melko
"ei-relaatiomainen" ja lopulta aika huono. Suurta
hämmennystä aluksi herätti App Enginen indeksointiquota. Kun
testailimme aplikaatiota ensimmäisiä kertoja varsinaisella
alustalla, ihmettelimme miksi indeksointioperaatiota tapahtuu, vaikka
aplikaation ei pitäisi tehdä minkäänlaisia
tietokantaoperaatioita.
Syyksi paljastui ehkä suurin
haittapuoli App Enginessä Vaadin alustana. Vaadin tallentaa
istuntodataa tietokantaan. Tässä on muutama haittapuoli. Vaadin
tallentaa istuntodatan yhtenä entitynä, jonka maksimikoko on 1MB
App Enginessä. Jokainen uusi luku ja tallennusoperaatio vie myös
indeksointioperaatioquotaa, jonka huomasimme kuluvan nopeimmin. Myös
App Engine itsessään tallentaa istuntodataa, kylläkin pienemmissä
osissa, mutta aiheuttaa sitäkin enemmän indeksointioperaatioita.
Vaadin onneksi osaa hyödyntää
memcachea istuntodatan tallennuksessa, mikä vähentää ainakin
lukuoperaatioita. Ongelmana on kuitenkin istunnon koon kasvaminen,
lähinnä PDF ikkunoiden takia. Tilapäisenä ratkaisuna zippaan
istuntodatan ennen tallennusta. Tämä kutisti istuntodatan koon jopa
yhdeksäsosaan alkuperäisestä.
Istuntodataa alkaa aikaa myöten kertyä
jonkun verran. Putsaaminen on helppo suorittaa cronilla, joka kutsuu
Vaatimen servletin /CLEAN urlia, joka poistaa sekä App Enginen että
Vaatimen istuntodatan. Tässä voi hyödyntää backendiä, jonka
suoritusaikaquota on erillinen frontend suoritusajasta.
App Engine tarjoaa kohtuullisen
monipuolisen hallintapaneelin, josta näkee statistiikkaa erilasista
rajoituksista, tietokannasta ja logit. Loggaus onnistuu Javan omalla
JRE-kirjastolla, ja logitilaa on 1GB. Hallintapaneelista pääsee
tarkastelemaan instansseja ja säätää näille maksimimäärän tai
minimimäärän, tosin vain jos laskutus on päällä.
Comments
Post a Comment