LINKED EVENTS: rajapinnan tekniset vaatimukset

Linked events on Djangon (web-ohjelmistokehys) päälle rakennettu tietovarasto ja ohjelmointirajapinta tapahtumatietojen tallennukseen ja jakamiseen. Linked events ei tarjoa varsinaista tapahtumakalenteria tai muutakaan yleisökäyttöliittymää tietoihin, ainoastaan Django Rest Framework -moduulilla toteutetun REST-rajapinnan, jonka kautta tapahtumatietoihin pääsee käsiksi.

Linked events -palvelinsovelluksen asennus ja ylläpito edellyttää kokemusta Ubuntu server (tai Debian) linux-käyttöjärjestelmästä sekä web-palvelinprosesseista.

Linked events -palvelinsovelluksen kehitystyö edellyttää Pythonin hallintaa ja Django-osaamista tai valmiutta opetella Djangon toimintaperiaatteet sekä yleistä ymmärrystä (relaatio)tietokannoista, HTTP-protokollasta, REST-rajapinnoista ja JSON-dataformaatista. Jonkin muun web-ohjelmistokehyksen (esimerkiksi Ruby on Rails) osaamisesta on varmasti hyötyä Djangon opettelussa.

Rajapintaa käyttävän asiakassovelluksen kehittäminen onnistuu millä tahansa tekniikalla tai ohjelmointikielellä, jolla voi tehdä HTTP GET -pyynnön rajapintaan ja käsitellä rajapinnan palauttaman JSON-muotoisen vastauksen. Esimerkkeinä ohjelmointikielistä voidaan mainita Javascript (nettisivut, palvelinsovellukset), Java (Android-sovellukset, palvelinsovellukset), Objective-C/Swift (iOS-sovellukset), Python, PHP, Perl (palvelinsovellukset) ja niin edelleen.

Linked events -järjestelmän lähdekoodiin voi tutustua tarkemmin Githubissa osoitteessa github.com/City-of-Helsinki/linkedevents.

Palvelimen resurssivaatimukset

Linked events -palvelinsovellus ja asennusohjelma on testattu toimivaksi Ubuntu 14.04 server -käyttöjärjestelmässä. Todennäköisesti Linked events toimii myös muissa suhteellisen tuoreissa Linux-levitysversioissa, mutta virallista ohjetta niiden käyttöön ei toistaiseksi ole.

Järjestelmää voi kokeilla virtuaalikoneessa, jossa on vähintään
2 GB RAM-muistia
1 CPU-core

Tuotantokäytössä tarvittavien palvelinresurssien määrän ratkaisee palvelun kuormitus, mutta minimivaatimuksena voidaan pitää
4 GB RAM-muistia
2 CPU-corea

Tarvittavat palvelinohjelmistot

Linked eventsin käyttöön tuotannossa tarvitaan relaatiotietokanta, python3-ympäristö, WSGI-palvelin sekä proxy.

Relaatiotietokanta

Paras vaihtoehto tietokantaohjelmistoksi on avoimen lähdekoodin PostgreSQL, sillä Linked events on riippuvainen sen PostGIS- ja HStore-laajennoksista. Muiden Djangon tukemien tietokantojen (MySQL, Oracle jne.) käyttö vaatii todennäköisesti suuria muutoksia tietorakenteisiin ja hakutoimintoihin.

Python-ympäristö

Linked eventsiä varten asennetaan eristetty Python-ympäristö (ns. virtualenv) Python-moduulien paremman hallinnan mahdollistamiseksi. Siihen asennetut moduulit eivät ole vuorovaikutuksessa käyttöjärjestelmän mukana tulleiden Python-resurssien kanssa. Pythonin minimiversio on 3.2.

WSGI-palvelin

Suositeltavia tapoja käynnistää Linked events Django-prosessi on käyttää joko uWSGI-palvelua tai supervisorgunicorn -yhdistelmää.

Proxy

WSGI-prosessi tarvitsee edustalle jonkin proxyn, esim. nginx:än tai Apachen. Suositeltavaa on käyttää nginx:ää.

Asennus

Githubista löytyvä README kuvaa miten Linked eventsin Helsinki-version saa toimimaan.

Asennukseen on tarjolla myös epävirallinen Ansible-skripti, jolla Linked eventsin voi asentaa testausta varten paikalliseen Vagrantilla määriteltyyn virtuaalikoneeseen tai Ubuntu 14.04 -käyttöjärjestelmällä varustetulle (virtuaali)palvelimelle.