Kaikki muilla Tietojärjestelmät-sivun alasivuilla kerrotut asiat pätevät päällisin puolin Kompassiin, mutta Kompassi on sen verran monimutkainen eläin, että tässä vielä koosteena muutamia juttuja mitä siitä on hyvä tietää.
Kannattaa perehtyä Kompassin lähdekoodin seassa oleviin README.md-tiedostoihin, luokkien ja funktioiden docstringeihin, koodin kommentteihin sekä tietokantakenttien help_texteihin. Kooditason dokumentaatio on auttamattoman puutteellista, pärjäile .
Kaikki sellainen, joka koskee vain Kompassia itseään avoimen lähdekoodin sovelluksena, kuuluu kooditason dokumentaatioon. Tälle sivulle kuuluvat ne asiat, jotka käsittelevät osoitteessa https://kompassi.eu sijaitsevaa virallista Kompassi-asennusta sekä Kompassin kehitysprosessia osana Traconia, Desuconia ja Ropeconia.
Backlog sijaitsee Jirassa. Boardille pääsemiseksi tarvitaan kompassi-developers-ryhmäjäsenyys, jonka saa Japsulta. Ryhmän antaminen Kompassin taka-administa ei riitä, koska se ei päivitä ryhmäjäsenyyttä Crowdiin, vaan se pitää toistaiseksi päivittää käsin myös Crowdiin.
Jirassa käytetään Scrum-moodia vain siksi, että se tarjoaa tehokkaammat filtterit kuin Kanban-moodi. Prosessilla ei ole mitään tekemistä Scrumin kanssa. Japsu saattaa käynnistää ja lopettaa sprinttejä sen mukaan, mitä kulloinkin haluaa nähdä varsinaisella lapputaululla.
Kompassin kehityksessä noudatetaan kevennettyä versiota Git Flow -prosessista. Kevennysten perusteena on se, että Japsu tekee suurimman osan kehitystyöstä eikä muita kehittäjiä ole aina saatavilla esimerkiksi koodikatselmointeja varten. Kevennykset ovat seuraavat:
Siinä vaiheessa, kun jatkuvaa kehitystyötä tekeviä kehittäjiä on useampia, näistä kevennyksistä voidaan siirtyä kohti "oikeaa" Git Flow'ta ja Japsu alistaa mielellään omatkin muutoksensa katselmoinnille. Kehitystyön ja tuotantoonviennin nopeus ei saa kuitenkaan merkittävästi kärsiä.
Kompassista on olemassa kaksi rinnakkaista asennusta:
Ympäristö | Osoite | Mihin se on tarkoitettu | Päivityspolitiikka |
---|---|---|---|
Tuotanto | Kompassin varsinainen tuotantoympäristö. Tätä oikeat tapahtumat ja ihmiset käyttävät. | Jatkuvan integraation ns. CI-putki päivittää master-haarasta | |
Staging | Kompassin kehittämisen tueksi sekä esittelyyn muille tapahtumaorganisaatioille. Tänne voi antaa vapaammin pääkäyttäjätunnuksia joilla voi mellastaa vapaasti pääsemättä käsiksi henkilötietoihin tai aiheuttamatta tuhoa muille tapahtumille. | CI-putki päivittää development-haarasta |
Molemmat ympäristöt pyörivät Neula-palvelimella. Ympäristöjä hallitaan Ansible-konfiguraationhallinnan avulla.
Olet siis saanut aikaan jotain valmista? Hyvä!
Tietokantamigraatiot tehdään Djangon omalla migraatiotyökalulla. Niiden vastuulla on tietokannan rakenteen (taulujen, kenttien ja indeksien) päivittäminen ajan tasalle.
Migraatioiden lisäksi käytetään ns. idempotentteja setup-skriptejä. Idempotentti tarkoittaa sitä, että setup-skriptiä voi ajaa samaan asennukseen uudestaan ja uudestaan, eikä se myöhemmillä ajokerroilla riko mitään saati hajoa omaan mahdottomuuteensa, vaan varmistaa vain haluttujen resurssien olevan olemassa.
Setup-skriptin vastuut pähkinänkuoressa:
Omassa kehitysympäristössäsi voit ajaa setup-skriptin tai pelkät migraatiot Docker Composen avulla näin:
# käynnistä ensin kehitysympäristö toisessa terminaali-ikkunassa docker-compose up # setup-skriptin ajaminen docker-compose exec web python manage.py setup # pelkkien tietokantamigraatioiden ajaminen docker-compose exec web python manage.py migrate |
Staging- ja tuotantoympäristöissä setup-skriptin ja migraatioiden ajoon käytetään Jenkinsistä löytyvää kompassi-ops-työtä. Jenkins käyttää puolestaan näiden ajamiseen Ansible-skriptejä. Kuha pääsee Jenkinsiin, voi ajaa tietokantamigraatiot tai setup-skriptin vaikka ei ole SSH-pääsyä tai paikallista Ansible-ympäristöä.
Tuotanto- ja Staging-ympäristöissä tietokannan käyttöoikeudet on eriytetty siten, että tietokannan rakenteeseen vaikuttavat operaatiot – siis käytännössä migrate- ja setup-skriptit – ajetaan tietokannan omistajakäyttäjällä (ei kuitenkaan pääkäyttäjällä) ja sovellusta itseään pyöritetään matalammin oikeuksin. Lisää tästä voit lukea kooditason dokumentaatiosta.
Molempien tietokannat sijaitsevat tätä kirjoitettaessa vielä Neulan dockeroidussa PostgreSQL:ssä ja tätä lukiessasi ehkä jo Siilolla. Tietokantoja varmuuskopioidaan jatkuvasti Piiloon. Lue lisää tietokannoista.
Ympäristö | Tietokanta missä nyt (16.9.2017) | Tietokanta missä toivottavasti pian | Tavallinen käyttäjä (Sovelluksen ajo) | Tietokannan omistajakäyttäjä (Migrate- ja setup-skriptit) |
---|---|---|---|---|
Tuotanto | palvelin neula.kompassi.eu kontti kompassi.eu-docker (PostgreSQL 9.5) tietokanta kompassi | palvelin siilo.tracon.fi kontittamaton PostgreSQL 10 tietokanta kompassi | kompassi | kompassi_ddl |
Staging | palvelin neula.kompassi.eu kontti kompassi.eu-docker (PostgreSQL 9.5) tietokanta kompassidev | palvelin siilo.tracon.fi kontittamaton PostgreSQL 10 tietokanta kompassi | kompassidev | kompassidev_ddl |