Atlassian upgrade = hektinen päivä
Atlassian upgrade = hektinen päivä
.. tai oikeastaan hektiset kaksi viikkoa. Tehtiin Antin kanssa Atlassian upgrade asiakkaallle, jonka tuokehityksen työkalut ja toiminnot ovat vahvasti Atlassian-työkalujen varassa. Eli käytössä on niin sanotusti koko Atlassian-pakka:
- JIRA 2000 user – Backlogien ja tekemisen hallintaan
- Confluence 2000 user – määrittely, dokumentointi ja projektiseuranta yms. yms.
- Crucible, SVN repojen hallintaan ja koodikatselmointiin
- 18 JIRA ja 12 Confluence Pluginia
- sekä Crowd hallinnoimaan käyttäjiä näihin ja tusinaan muuhun open source välineeseen mm. Sonar, Nexus jne.
Tiedettiin jo aiemmista kerroista, että kyseessä ei tule olemaan helppo keikka, koska aiemmasta päivityksestä oli jo 18 kuukautta ja paljon uutta on ehtinyt tulla kuhunkin tuotteeseen ja Plugineihin. Pitkä historia ja iso käyttäjämäärä tarkoittaa myös isoa siirrettävää datamäärää.
Työ aloitetiin speksaamalla uudet Linux palvelimet, joiden versionosto tehtiin samalla. Tämän jälkeen Contribytellä tutkittiin eri työkalujen päivityspolut, tavoitteena mennä viimeisimpiin versioihin. Kinkkisimpänä JIRA, jossa siirrytään JIRA 6 sukupolvesta JIRA 7.2.6 :een. Tämä tarkoitti myös väliversion käyttöä päivityksessä, koska JIRA 7.2. ei ole päivitettävissä JIRA 6 tasolta. Asensimme siis myös JIRA 7.0:n JIRA datan konvertointia varten. Plugin puolella JIRA 7 tuo jonkin verran helpotusta, kun Agile Plugin muuttuu osaksi tuotetta ja muutama kirjasto tyyppinen Plugin on otettu osaksi tuotetta. Lisäksi arvioinnin yhteydessä onnistuttiin karsimaan muutama epämääräisellä käytöllä ollut lisäosa.
Applikaatioiden ja Pluginien kartoittamisen jälkeen päästiin asiaan. Saimme nopeasti uudet Linux-serverit käyntiin ja tunnukset niille VPN-yhteyksin. Muutenkin paikallinen pätevä IT-väki oli suureksi avuksi näin nopealla tahdilla tehdyssä projektissa. Nimipalvelumuutoksia, sertifikaatteja, palomuureja, muistin lisäyksiä ei tarvinnut kauaa odotella, kun tekijät oli saatavissa Skypellä ja puhelimella.
Käytännössä upgrade-toimet tehtiin 2-3 kertaa etukäteen kullekin sovellukselle, jotta ’suurena’ päivänä kaikki menee rutiinilla ja on instrumentit tiedossa operaation tekemiseen. Näiden kertojen väleissä testattiin liittyvät järjestelmät mahdollisuuksien rajoissa. Loppuvuoden kiireissä käyttäjien ajan kunnioittaminen on myös tärkeää. Atlassian-työkalujen vahvuudet ovat muokattavuus ja aktiivisen ekosysteemin laajennokset eli Pluginit. Tämä on kuitenkin ylläpidon kannalta haastavaa, koska ei ole yhtä tahoa tai edes tarkkaa puitetta miten kokonaisuus toimii version nostojen yhteydessä. Tässäkin tapauksessa erityisiä haasteita löytyi kahden Pluginin kohdalla
JIRA Structure Plugin on vahvasti kytköksissä JIRA data rakenteisiin, jotka nyt muunnettiin kaksi kertaa. Kokeilun kautta huomattiin, että tämä Plugin ei voi olla asennettuna JIRA-dataa importoitaessa. Lisäksi Pluginin asennus importin jälkeen aiheuttaa 20 minuutin hiljaisuuden serverillä sen rouskutellessa tietokantamuutoksia. Tässä ehtii nousta hikikarpalot niskaan, kun huoltokatkon loppu lähestyy, palvelin ei vastaa eikä lokeissa näy mitään eloa.
Confluencen puolella erityishuomioita vaati Refined Wikin teemat, joihin oli tullut tyylimuutoksia, joiden puitteissa alkuperäistä, käyttäjille tuttua, layout:ia ei voi säilyttää täysin. Lopulta päädyttiin muokkaamaan uudesta teemasta hieman parempi käyttäjien pyyntöjen pohjalta. Lähinnä tarvetta oli saada lisää efektiivistä tilaa ruudulle pienentämällä ylä- ja sivupalkkeja sekä uudistamalla ulkonäköä.
Perjantai aamuna kello kuusi istuimme War-roomissa asiakkaan toimistolla tavoitteena saada kaikki valmiiksi 12:een mennessä, juuri ennen kuin USAn käyttäjät tulevat konttorille. Homma lähti käyntiin Crowdin päivittämisestä, jotta voimme tarkastaa ensimmäisenä kaikki liitännäiset. Siirto onnistui hyvin ja sertifikaatitkin toimivat DNS osoitteen muutoksen jälkeen. Olimme etukäteen muuttaneet DNS TTL eli vanhentumisajan 3:een minuuttiin, jotta ei jouduta odottelemaan tätä. Säätöä oli vielä Apache proxyn uudelleen ohjauksissa, mutta kun nuo saatiin kuntoon aloimme, yksi kerrallaan saada vahvistuksia eri sovellusten omistajilta, että uusi Crowd toimii odotetusti. SVN, Nexus Crowd, Bitbucket.. so good so far.
Samaan aikaan, kun Antti sääti Crowd konffeja, aloitin itse JIRA-data importeja. Me oltiin laskettu, että kaikki välivaiheet huomioiden tähän menisi 2.5-3 tuntia. Ensimmäinen import JIRA 7.0:ään näytti menevän hyvin. Sitten vielä indeksien generointi ja uusi export. Toinen import JIRA 7.2:een ei näyttänytkään yhtä hyvältä. Loki näytti, että tietokannasta ei löydy kaikkia attribuutteja eikä operaatiot täysin onnistu. Normaalia pidempään kestäneen importin jälkeen palvelimelle kirjautuminen näytti vielä natsaavan, mutta iso osa datasta oli hukassa. Kello lähestyi jo kymmentä. Samalla Antin tekemä Confluence-siirto oli mennyt ongelmitta läpi ja ensimmäiset käyttäjät validoivat jo omia dokumenttejaan. Meillä oli vielä aikaa ottaa uusi yritys JIRA importista. Jos päätämme palauttaa vanhan JIRAn tällä kertaa, tarkoittaa se myös Confluencen version palauttamista tai näiden välisen integraation heikentymistä seuraavaan katkoon asti.
Toinen JIRA import kierros alkoi samaan tapaan hyvin JIRA 7.0:n osalta.
- Tietokanta tyhjäksi
- JIRA käyntiin ja lisenssi sisään
- Data import
- Structure Plugin asennus
- Indexsointi
- Export
Kaikki hyvin tähän asti, kunnes kohdassa 4. alkoi tapahtua uutta. Palatessamme kahvinhakureissulta WAR-room:iin näytöllä pyörivästä lokitiedostosta kävi ilmi Structure Plugin oli aloittanut oman JIRA 6→7 konversion, joka kesti ylimääräiset 20 min. Tämä oli jäänyt käynnistymättä ensimmäisellä kierroksella. Tämän jälkeen toinen yritys jatkui samalla kaavalla JIRA 7.2. osalta. Iltapäivää oli kulunut jo toista tuntia, kun JIRA 7.2. vihdoin starttasi viimeisen kerran. Kaikki datat löytyy, Structure toimii. Kaikki kunnossa! Tarkastuksessa huomattiin, että Issueita (JIRA Item) oli yksi enemmän kuin vanhalla palvelimella. Joku oli ehtinyt syöttää minuutin aikana, jonka JIRA 7.0 oli käynnissä yhden Bugi-raportin!
Käyttäjien ensirynnistyksen jälkeen kaikki näytti rauhoittuneen, paitsi Crowd, autentikointipalvelin, joka urakoi CPU punaisella kokoajan. Liikennettä tuli lähes 100 autentikointipyyntöä sekunnissa. Syypääksi paljastui Nexus-järjestelmä, jonka avustama Maven-käännösskripti vaati tarkennuksen uuden Crowd:in määrittelyihin. Crowdiin oli lisätty ominaisuus, joka näkyi muutoksena rajapintakyselyn vastauksessa ja tästä Maven-build ei pitänyt. Lopuksi fiksailtiin vielä Application Link:it ja Atlassianin Welcome-notifikaatit pois päältä. Kello olikin jo 17:00 ja aika lähteä pelaamaan korista lasten kanssa.
Mitä tekisimme toisin ensikerralla? Ainakin pehmeämpi tuoli. 11:n tunnin istuminen vanhankoulun neukkarituolilla – ei hyvä. 🙂
Itse operaation osalta: aina voisi harjoitella siirtoja enemmän, selvittää enemmän taustoja kunkin sovelluksen sekä pluginien osalta, kysyä ohjeita ja luoda yhteydet uusiin Plugin valmistajiin. Mutta tärkeimpänä onnistumiseen vaikuttavan tekijänä itse pidän pääkäyttäjien ja IT:n ihmisten saatavuutta ja kykyä toimia nopeasti päivtyksen aikana. Juuri tämän takia tällä kertaa kaikki onnistui, ja melkein aikataulussa,
Lasse Mikkonen
Teknologiajohtaja
Lasse on Contribyten perustajajäsen, joka nykyisin vastaa yrityksen käyttämistä työkaluista sekä portfoliosta. Hänellä on 20 vuoden kokemus ohjelmistokehityksestä sekä konsultoinnista, ja hänen erityisosaamisensa liittyy konfiguraariohallintaan sekä prosessiosaamiseen. Teknologiajohtajan tehtävien lisäksi Lasse konsultoi ja pitää koulutuksia.