Kategoriat
PuistoHackers

Getting high on information – Puiston digitaalinen koti pilvessä

OC Puisto on nuorekas diginatiivi mitä suunnistusseuroihin tulee. Vaikka Suomen mestaruuksia emme vielä voitakaan metsässä, niin Garmin-käytössä, 3dRerun-reittianalyysissä, DataPuisto-väliaikavertailussa ja Tableau-analyyseissä olemme palkintosarjassa. 🏆 PuistoMasters-kisatkin järjestyivät näppärästi keväällä kun korona tappoi muut tapahtumat.

Niinpä onkin varsin luontevaa, että luomme OC Puistolle digitaalisen kodin. Onhan jäsenistömme kasvanut, ja sponsorimme ovat varmistaneet toimintamme muutamaksi lähivuodeksi. Tietty meillä on ollut digipresenssiä jo ennestään. Nettisivut löytyvät Juhan sponsoroimana meronen.net -palvelimella, DOMA-karttapalvelin niin ikään meronen.net -palvelimella ja DataPuisto Rikun firman Itäpajan palvelimella. Ei ole kuitenkaan tarpeen jatkaa näin epämuodollisesti enää tässä vaiheessa.

Hallitus päätti Nuuksion Huurteisen jälkeen pistää toimeksi. Ensimmäisen vaiheen suunnitelmaksi kiteytyi hynttyiden yhteenlaittaminen, eli nettisivujen, karttojen ja DataPuiston siirtäminen saman katon alle Puiston fasiliteetteihin. Palveluntarjoajassa kiinnosti se, että myös uusia sovelluksia voidaan niputtaa samaan kokonaisuuteen myöhemmissä vaiheissa.

Palveluntarjoajaksi seuloutui lopulta Google, kun perinteisemmistä webbihotellitoimijoista Hostingpalvelu näyttäytyi pitkään myös melko houkuttelevalta. Googlelle selvää etua antoi täysi ja varaukseton python-tuki, joka mahdollistaa mutkattoman DataPuiston siirron. Valintaa ohjasi pyrkimys alle 200 euron vuosikustannuksiin. Väljemmällä budjetilla virtuaalipalvelmien tarjoajia olisi toki ollut runsain mitoin tarjolla. Lisättäköön vielä, että onhan nyt Google Cloud Platform nyt todellakin tätä päivää verrattuna nyt vaikka GoDaddyyn. Kyllähän tässä täytyy vähän ajatella Puiston mainettakin!

Tältä pohjalta PuistoHackers ryhtyi hommiin. Ennen kuin päästiin Google Cloud Platformin kimppuun, täytyi ensin tehdä valmistavia töitä:

1 Ihan ensiksi hankittiin Puistolle ocpuisto.net -domainnimi. Google ei myy domain-nimiä Suomeen, joten tähän valittiin Hostingpalvelu. Aikamme asiakasportaalia pengottua ostimme Hostingpalvelulta itse ocpuisto.net -nimen lisäksi myös Domainparkki-palvelun, jotta saimme täyden DNS-hallinnan.

2 Seuraavaksi lähdettiin hankkimaan Google Workspacea ja G-Suite for non-profits-palvelua. Google, niinkuin useat muutkin softatoimijat, turvautuu TechSoupiin non-profit-hakijan verifioimiseksi. Niinpä tämä vaihe alkoi sillä, että Juha laittoi TechSoupille hakemuksen vetämään. Motiivina Non-profit -statukselle oli kustannukset: Non-profitit saavat G-Suiten ilmaiseksi käyttöön.

3 TechSoup oli myötämielinen ja saimme koodin, jolla Google Workspacen portit aukesivat. Saman tien pääsimme luomaan Puistolle digitaalisen henkilöllisyyden. Seura voi nyt lähettää ja vastaanottaa sähköpostia osoitteella ocpuisto@ocpuisto.net. Muitakin ocpuisto.net -mailiosoitteita on jo luotu, ja voidaan luoda oma vaikka jokaiselle, joka sellaisen haluaa.

4 JA SITTEN PÄÄSTIIN PILVEEN ⛅. Riku loi ocpuisto.net -organisaation Google Cloud Platformiin (GCP). Tässä vaiheessa kun käytössä oli jo Googlen hostaama puiston email-osoite, organisaatio syntyi lähes itsestään.

5 Ensimmäisenä koeajona Riku ryhtyi siirtämään DataPuistoa GCP:hen. Mielessä oli Googlen serverless -vaihtoehdot. Google App Engine (GAE) vaikutti houkutelevammalta (lue: helpommalta) kuin Google Cloud Run, ja GAE:lla sitten lähdettiinkin liikkeelle, arkkitehdin hattu päässä. GCP:ssä toiminnot ryhmitellään projekteihin, appeihin, ja palveluihin. Lisäksi Serverless-ympäristöissä tehdään isojako kahteen – sovelluksien koodi ja staattiset konfiguraatiotiedostot pakataan read-only -ympäristöön, ja mediat ja muu dynaaminen jonnekin muualle. Googlella Cloud Storage on selvästi helpoin ratkaisu tähän.

Tämä serverless -strukturointi antaa kyllä parempaa siirrettävyyttä ja korkean tason tietoturvaa. Mutta ei hyötyä ilman pientä tuskaa – vaikeuskerrointa toi Djangon arkkitehtuurin huomioiminen, onhan DataPuisto rakennettu täysin Djangon päälle. Hankalia pulmia ei onneksi ilmaantunut, YouTube-videot antoivat hyviä ideoita etenemiseen!

Intensiivisen askarteluviikonlopun jälkeen DataPuiston siirto valmistui 95%:sti, ja tuleva DataPuisto löytyy koekäytössä osoitteessa https://datapuisto.ocpuisto.net . Samalla Rikun ymmärrys Googlen Cloud-pythonkirjastoista kasvoi kummasti. Mainiona bonuksena kaikki datapuisto-liikenne on nyt SSL/TLS-salattua, meillä on Google Trust Services -varmenne DataPuistoon ja kaikkin muihinkin osoitteisiin.

6 Samalla kun DataPuistoa ajettiin sisään, otettin Googlelta yhteiskäyttöön yksi Cloud SQL MySQL -instanssi. Tämä onkin palveluelementeistä ainoa, joka vääjäämättä aiheuttaa kustannuksia kympin kuussa. Kaikki muut elementit maksavat jännittävästi tuntipohjaisesti, jos niiden käyttö ylittää joku päivä vuorokausikohtaisen kiintiön. DataPuiston integrointi käyttämään tätä jaettua MySQL -instanssia ei nyt sujunut ihan heittämällä, mutta ei se mikään kestävyyssuorituskaan ollut.

7 Sitten kun oltiin klaarattu DataPuisto, Juha ja Riku kävivät webbisivujen kimppuun. Meronen.net -palvelimelta saatiin ongittua sekä sql-sisältö että kuvat multi-site -hässäkän joukosta. Riku rupesi puuhaamaan uutta GAE-wordpress-instanssia suoraan Googlen ohjeiden pohjalta. Google oli tehnyt aika hyvän skriptin, jolla kaikkiin asetustiedostoihin saatiin hyvät perusversiot. Selvisimme siis melko pienillä muokkauksilla. Ja jaetun Cloud SQL instanssin kytkeminen meni tosi näppärästi, sen kun loi vain sinne toisen kannan, ja rupesi käyttämään! Vanhan sisällön tuonti oli ainoa haaste. Julkaisujen tekstit tulivat kyllä kivasti XML-tiedostosta, mutta kuvien kanssa meni käsipeliaskarteluksi, jossa kuvat siirrettin Cloud Storageen käsin, ja XML-tiedostossa muokattiin linkkejä tekstieditorin replacella. SSL/TLS-salattu liikenne, eli selaimen lukko saatiin näppärästi myös tälle nettisaitille ihan kaupan päälle. Lopputuloksena syntyi uunituore alusta, jolta tämäkin juttu tarjoillaan. 😃

8 DOMA-kartta-arkiston siirtoprojekti ei ole alkanut vielä, mutta vähän tässä on jo ruvettu speksaamaan karttojen siirtämistä Cloud Storageen samalla kun koodi pysyy read-only -coressa. Sitä taitaa sivutuotoksena tässä oppia php:stäkin jotain…