Blogi ja uutiset

Takaisin
2.11.2021

Automaation taso yllätti Tommin – DevOps pyrkii manuaalisen työn minimointiin

Tommi on ollut DevOps-hommissa Funidatan infratiimissä muutaman kuukauden. Tiimin tärkeimpänä tavoitteena on ennaltaehkäistä ongelmatilanteiden syntymistä, jotta asiakkaillamme on koko ajan toimiva palvelu käytössä. Kyselimme Tommilta ensimmäisten kuukausien fiiliksiä ja hänen ajatuksiaan DevOps-työstä.

Moi Tommi, kuka olet ja mistä tulet?

Olen Tommi, kotoisin Seinäjoelta ja muuttanut urheilun sekä koulun perässä pääkaupunkiseudulle noin yhdeksän vuotta sitten. Valmistuin alkuvuodesta Aalto-yliopistosta tietotekniikan diplomi-insinööriksi ja aloitin elokuussa Funidatalla DevOps-hommissa infra-tiimissä. Vapaa-ajalla tykkään rakentaa ja parhaillaan onkin remppaprojekti menossa. Käsillä tekeminen on hyvää vaihtelua aivotyöhön.

Mitä DevOps-työnkuvaan kuuluu Funidatalla?

Olemme tehneet työmme hyvin, kun kukaan ei huomaa mitään ja kaikki toimii. DevOps on kohtuullisen uusi termi IT-alalla eikä sen kirjallinen määritelmä ole vielä täysin yksiselitteinen. Idea taustalla on kuitenkin aina sama: poistetaan vanhan ajan siiloajattelua kehityksen ja ylläpidon välillä ja samalla pyritään automatisoimaan ylläpidollisia töitä.

Teemme tosi paljon yhteistyötä kehittäjiemme kanssa, autamme kehitysympäristöjen ylläpidossa ja kehitämme myös automaattiset testauspipelinet. Jos esimerkiksi tuotannossa ilmenee bugeja, ovat ne kehittäjien lisäksi meidän työpöydillämme eli olemme myös kehityksessä mukana. Vaikka meidän tiimimme nimi on infra, poikkeaa se vanhasta infra-tiimiajattelusta DevOpsin verran. Lähinnä se tarkoittaa sitä, että pyrimme minimoimaan kaiken manuaalisen työn. Sitä voisi kuvailla jopa siten, että pyrimme saamaan itsemme työttömiksi.

Tuotantopäivitykset tapahtuvat viideltä, mutta muutoin emme tee ns. toimistotyöajan ulkopuolista työtä emmekä myöskään päivystä kellon ympäri. Pyrimme myös siihen, että järjestelmä osaisi selviytyä arvaamattomista ongelmista itsestään.

Olet ollut pari kuukautta Funidatalla, mikä yllätti eniten?

Ehdottomasti Sisun koko ja automatisointi. Kun aiemmin käytin Sisua opiskelijana, ymmärsin, että siellä on varmasti paljon kaikkia tietokantajuttuja, mutta kokonaisuus hahmottui vasta paremmin aloittaessani täällä. Se, että näin isossa järjestelmässä on kaikki niin pitkälle automatisoitu, on wow, tosi hieno juttu! Korkealla tasolla nämä eivät ole yleensä kauhean monimutkaisia tai vaikeita, mutta käytännössä tämän kokoisen järjestelmän automaatiota näkee harvoin. Näin ison järjestelmän automatisointi tähän pisteeseen yllätti, vaikka tavallaan osasin odottaa sitä.

DevOpsiin liittyy vahvasti infrastructure as a code eli tehdään infrasta koodia. Meillä konfiguraation hallinta liittyy olennaisesti tuohon eli määrittelemme infran ja konfiguraation koodina. Käytännössä meillä on kaikki määritelty koodiksi. Kun kaikki on koodissa, niitä voi ajaa tietyillä työkaluilla ja hallita myöskin automaattisesti. Meillä pyörii AWS:ssä virtuaalikoneilla kontteja ja voimme yhdellä komennolla sanoa, että nyt haluamme Sisun testiympäristöön näin monta konttia tälle virtuaalikoneelle ja sitten se tekee ne. Jokainen käyttämämme palvelin/virtuaalikone/palvelu provisioidaan ja/tai konfiguroidaan käyttämällä Terraformia sekä Ansiblea. Suurimpaan osaan tarpeitamme käytämme AWS:n eri palveluita kuten EC2, RDS ja VPC.

DevOps-tiimin Tommi

DevOps-tiimin Tommi yllättyi Sisun laajuudesta ja automaation tasosta.

Mikä on DevOpsin tarkoitus ja mitä tällä kaikella tavoitellaan?

Tässä tiimissä ja roolissa tärkein tavoite ja pyrkimys on, että asiakkaillamme on koko ajan toimiva palvelu käytössä. Hoidamme järjestelmäpäivityksiä säännöllisesti ja päivitämme myös Sisun versioita. Monitoroinnin avulla huomaamme mahdolliset ongelmat järjestelmässä tai sovelluksessa ja reagoimme siihen joko itse tai pohdimme kehittäjien kanssa mitä sille voisi tehdä ja ettei se toistuisi uudelleen. Kehitämme siis itse palvelua, mutta myös infrastruktuuria siten, että palvelu pysyy käytettävänä varmemmin. Tavoitteena on pitää Sisu stabiilina.

Mietimme, voisiko esimerkiksi automaattista testausta saada nopeammaksi, voisiko sitä optimoida ajon kautta, voiko jotain testejä ajaa rinnakkain tai voiko niille provisioida lisää resursseja. Autamme myös Sisun kehittäjiä tekemään laadukkaampaa työtä nopeammin. Ylläpidämme tarvittavia kehitysympäristöjä ja voimme esimerkiksi kehittää testausautomaatiota nopeammaksi rinnakkaisajon tai vain optimoinnin kautta. Näin kehittäjät saavat nopeammin palautetta tekemistään muutoksista ja tiedon siitä, onko muutoksissa mahdollisia bugeja.

Mitä meillä on mielestäsi tehty hyvin?

Ylipäätään se, että aivan kaikkia ympäristöjä hallinnoidaan automaattisesti. Vaikka Sisu on tosi iso ja on paljon kaikkea, josta en vielä tiedä yhtään mitään, niin sen kaiken automatisointi on iso juttu. Myöskin se, että koodi on pysynyt ylläpidettävänä, kertoo paljon laadukkaasta työstä. Koen, että on tehty järkeviä ja hyviä teknologiavalintoja, joissa maturiteettitaso on kohtuullinen. Teknologiat ovat laajasti käytössä ja niille löytyy laaja yhteisön tuki.

Verkkotason jutut ovat mallikkaasti hoidettu. Jokainen Sisua käyttävä korkeakoulu on eriytetty palvelin- ja verkkotasolla, mikä on ennen kaikkea tietoturvasyistä hyvä asia. Olemme suojautuneet hyvin verkkotasolla ja kaikki on tehty automatisoidusti. Jos mukaan tulee uusi korkeakoulu, meillä on paljon valmista konfigurointia, jota voidaan suoraan hyödyntää. Tämä mahdollistaa korkeakoulujen lisäämiseen infraamme kivuttomasti säilyttäen silti turvallisuuden.

Millaisia kehityskohteita löydät meidän DevOps-toiminnastamme?

Sisu ei skaalaudu automaattisesti kuormituksen mukaan. Eli jos yhtäkkiä tulee merkittävän suuri käyttäjäpiikki, täytyy skaalaus toistaiseksi tehdä manuaalisesti. Sekin tosin on automatisoitu jo hyvin pitkälle eikä vaadi kuin yhden rivin muutoksen. Sisulla on sen verran resursseja, että missään normaalitilanteessa se ei mene nurin tai ole saavuttamattomissa. Automaattinen skaalautuminen ei ole ongelma, koska esimerkiksi opetukseen ilmoittautumiset eivät mene Sisussa nopeusjärjestyksessä, joten merkittäviä käyttäjäryntäyksiä ei edes pitäisi tulla.

Mitä merkitystä tällä kaikella on loppukäyttäjälle?

Tietysti ylipäätään se, että järjestelmä on käytössä, saatavilla ja tietoturvallinen käyttää. Tuemme kehittäjiä, jotta saamme tuotannossa ilmeneviä mahdollisia bugeja korjattua nopeammin, jotta loppukäyttäjillä on toimivampi järjestelmä ja vasteaika olisi nopeampi. DevOpsissa näihin kaikkiin voi vaikuttaa.

Mikä on parasta Funidatalla?

Olen ennen ajatellut, että töihin mennään vaan tekemään töitä. Onkin ollut tosi mageeta löytää tällainen työpaikka, jossa asiantunteva porukka yhdistyy yhteisölliseksi kokonaisuudeksi. Täällä on mukava ja lämmin yhteisö, johon on päässyt hyvin myös etänä sopeutumaan. Lisäksi Slackissä käytetään emojeja tosi paljon ja niiden käyttö on tosi nokkelaa. Ajattelin, että ei vitsi tämä on siistiä!