Kokonaisvaltaisen DevOps toimintamallin käyttöönotto tarjoaa mahtavan tilaisuuden parantaa ohjelmiston kehityssykliä monenlaisten automaatioiden kautta. Tämän myötä monessa yrityksessä mietitäänkin parhaillaan DevOpsiin siirtymistä, tai jo olemassa olevien DevOps prosessien ja työkalujen täydentämistä.
Koko DevOps alustan suunnitteluun ja ylläpitämiseen liittyy kuitenkin monia teknisiä ja hallinnollisia haasteita. DevOpsiin liittyviä työkaluja ja ohjelmistoja on markkinoilla kymmeniä, jollei satoja. Tutkimuksen mukaan 39 prosenttia yrityksistä kokee vaikeuksia oikeiden työkalujen valinnassa.
Tässä kirjoituksessa tarkastellaan tarkemmin ensimmäistä ongelmaa, joka tulee vastaan kun DevOps päätetään ottaa kokonaisvaltaisesti käyttöön.
Mitkä työkalut palvelevat tarpeitamme mahdollisimman hyvin?
Jokaiseen DevOpsin eri vaiheeseen on tarjolla varsin vaikuttava määrä erilaisia maksullisia tai ilmaisia ratkaisuja. On hienoa, että vaihtoehtoja on niin paljon. Käytännössä jokaiseen tarpeeseen löytyy sopiva palvelukokonaisuus, jonka kanssa oman yrityksen tarpeet tulevat täytettyä. Työkalujen runsaus on kuitenkin kaksiteräinen miekka. Vaihtoehdot pitäisi pystyä tuntemaan riittävän hyvin, jotta valinta voidaan tehdä luottavaisin mielin.
Evaluaation tekeminen yksittäisestä työkalusta ei ole mikään vaatimaton urakka. Riippuen valitun komponentin kompleksisuudesta saattaa alustavankin arvioin tekemiseen kulua yhden henkilön työviikko.
Jokaisessa DevOps työvaiheessa on myös yleensä vähintään kaksi isoa nimeä palveluntarjoajana, jotka olisi aina hyvä ottaa mukaan arviointiin. Kun tämä yhdistetään siihen, että DevOpsissa vaiheita on useita, kasvaa arvioitavien komponenttien määrä helposti varsin suureksi.
Arvioitavaa on siis paljon. Puhumattakaan siitä, että valittujen komponenttien yhteensopivuus tulee myös varmistaa.
Kokonaisen DevOps ympäristön käyttöönotto nollasta saattaakin kaatua pelkästään jo siihen, että evaluaatioon ja suunnitteluun ei yksinkertaisesti ole riittävästi aikaa tai resursseja. Tämä on onneksi harvoin se tilanne mistä lähdetään liikkeelle. Todennäköisesti yrityksessä on jo käytössä järjestelmiä (versionhallinta, testaus jne.), jotka ohjaajat ja rajaavat kokonaisratkaisun suunnittelua.
Mitkä ovat työkalujen valintakriteerit?
On ensisijaisen tärkeää, että palvelut toimivat keskenään hyvin yhteen. Järjestelmissä kannattaa olla valmis sisäänrakennettu integraatio muihin jo valittuihin palveluihin, jotta ei tarvitse itse huolehtia tai tehdä merkittäviä muutoksia järjestelmiä päivitettäessä.
Valituissa palveluissa tulisi mielellään olla myös hyvin dokumentointu API, jonka avulla palvelut voidaan liittää vaikka ulkoiseen raportointi tai tiketöintijärjestelmään.
Kokonaisratkaisun hintaa ei myöskään sovi unohtaa. Useisiin, varsinkin SaaS-palveluihin, liittyy piilokustannuksia, jotka tulevat ajankohtaisiksi vasta ehkä vuosien päästä käyttöönoton jälkeen käyttäjämäärien kasvaessa.
Hyvä esimerkki piilokustannuksista on SSO, tai AD/LDAP integraatio käyttäjien hallintaan, joka on ominaisuutena yleensä aina liitetty kalliimpaan käyttäjäkohtaiseen lisenssiin. Toinen esimerkki voisi olla, vaikka CI/CD putkien ajaminen. Alku saattaa monesti olla jopa ilmaista, mutta ohjelmistotiimin kasvaessa ei x-kappaletta ajoja päivässä enää riitäkään, tai ajoja pitää saada parallellisoitua.
Tai ehkäpä uudessa projektissa onkin asiakkaan puolelta tietoturvaan, tai auditointiin liittyviä vaatimuksia? Alkuperäinen €10/käyttäjä/kk hinta saattaa jopa kymmenkertaistua, kun joudutaan siirtymään “Enterprise” luokkaan.
Loppu hyvin kaikki hyvin?
Ei välttämättä! Kuten aiemmin jo totesin, niin kokonaisvaltaisen DevOps järjestelmän evaluaatio ja käyttöönotto on suhteellisen haasteellinen kokonaisuus. Siihen liittyy monia osia ja käyttötapauksia, joita ei aina osata ottaa huomioon ennen tuotantoon siirtymistä.
Koko DevOps harjoituksen läpivienti saattaa olla niin pitkä ja raskas prosessi, että jos joku valituista komponenteista ei sovikaan tuotantoon niin hyvin kuin oli aluksi ajateltu, voi olla liian myöhäistä aloittaa prosessia uudestaan. Usein aikataulu- ja kustannussyyt painavat vaakakupissa enemmän. Päädytään tilanteeseen, jossa tuotantoon joudutaan siirtymään ei-optimaalisen ratkaisun kanssa.
Ikävä kyllä, näin laajaan kokonaisuuteen on hankala hankkia osaamista ja kokemusta lyhyellä varoitusajalla. Internet on hyvä lähdeä hakea muiden kokemuksia ratkaisujen toteutuksista ja löytää sitä kautta suurimmat sudenkuopat toteutuksissa. Internet ei kuitenkaan yleensä tarjoa ratkaisua, tai kokonaisarkkitehtuuria juuri teidän tarpeisiinne. Tässä kohtaa on hyvä tukeutua kumppaniin, jolla on jo pitkä kokemus DevOps järjestelmien rakentamisesta ja jonka kanssa voidaan alkaa suunnittelemaan organisaationne näköistä arkkitehtuuria.
Millä perustein itse valitsimme työkalut?
Olemme tehneet ohjelmistokehitystä yrityksenä jo yli kymmenen vuotta. Siinä ajassa olemme ehtineet kokeilemaan tusinoittain erilaisia palveluita, tuotteita ja kokonaisuuksia.
Alunperin rakensimme DevOps ratkaisuja ensisijaisesti itsellemme, tehostaaksemme omaa palvelutuotantoamme. Taustalla pyöri kuitenkin aina pieni ajatus, että entäpä jos tarjoaisimma asiantuntemustamme DevOpsista myös muille? Jos tämä on hyödyntänyt meitä sisäisesti näin paljon, niin varmasti osaamisellemme löytyisi kiinnostusta myös talon ulkopuolelta!
Oma kehitysympäristömme on rakennettu, muutaman peruspalvelun ympärille, joiden toimivuuteen olemme oppineet luottamaan.
GOOGLE CLOUD
Hyvät ja helposti lähestyttävät työkalut kapasiteetin hallintaan. Google tarjoaa kapasiteettia, myös Suomessa sijaitsevasta konesalista, joka on usein tärkeää asiakkaillemme. Ehkä myös paras hostattu Kubernetes alusta GKE? 🙂
KUBERNETES
Luonnollinen jatke kontitettujen palvelujen hallintaan. Muitakin hyviä orkestrointiratkaisuja on toki myös ja ne voivat olla nopeampia, tai johonkin tiettyyn tarkoitukseen paremmin soveltuvia. Meille on tärkeää, että pystymme tekemään yhdellä työkalulla mahdollisimman monta eri asiaa.
GITLAB
Versionhallinta, CI/CD, Docker rekisteri, metriikat ja paljon muita ominaisuuksia yhden katon alla. Lisäksi palvelua kehitetään erittäin aktiivisesti ja tarjolla on osaava tekninen tuki sitä tarvittaessa.
TERRAFORM
Suosituin IaC alusta, jolla kapasiteetinhallinta multicloud ympäristössä helpottuu huomattavasti.
Toki mukaan mahtuu muitakin palveluja, mutta ne vaihtelevat helposti kehitysprojektin luonteesta riippuen.
Lopuksi
Uskomme, että kiinnostusta DevOps osaamiselle ja palveluille löytyy, joten perustimme kokonaan erillisen DevOps-tiimin. Olemme keränneet parhaan osaamisemme vuosien DevOps projekteista. Tiimimme keskeisenä tehtävänä on jatkaa omien DevOps työkalujemme ja prosessien kehittämistä niin, että pysymme jatkuvasti teknologian kärjessä ja että tuottamamme ratkaisut ovat aina mahdollisimman helposti tuotavissa myös muiden käytettäväksi.
Tarjoamme DevOps työkaluihin ja tapoihin liittyviä koulutuksia, joiden avulla asiakas voi hankkia uutta osaamista tai parantaa entisestään omaa ammattitaitoa. Olemme myös koonneet valmiin DevOps “starter” paketin, jolla saa helposti ja nopeasti käyttöön oman DevOps ympäristön. Se vastaa suurelta osin ympäristöä, mitä itse käytämme päivittäin. Asiantuntijamme ovat myös käytettävissä jo olemassa olevien ympäristöjen jatkokehitykseen tai vaihtoehtoisesti täyspäiväiseen ylläpitoon.
Autamme mielellämme DevOps matkanne käynnistystä konsultaatiolla tai koulutuksella. Jos olet kiinnostunut starter-paketistamme, älä epäröi olla yhteydessä.