Mitä on Site Reliability Engineering eli SRE

DevOps-kulttuurin suosion räjähdysmäisesti kasvaessa, Google omaksui oman menetelmänsä kehittää ja hallita sovelluspalveluita. Syntyi Site Reliability Engineering eli SRE. Tänä päivänä SRE:tä käyttävät Googlen lisäksi muun muassa Amazon, Netflix ja Microsoft.

SRE:n periaatteiden ympärille on rakentunut mittava kokoelma käytäntöjä niin tuotanto-ongelmien tehokkaaseen ratkaisemiseen kuin luotettavien ja itsekorjautuvien järjestelmien kehittämiseen.

Vuonna 2016 julkaistu kirja, Site Reliability Engineering, kertoo Googlen näkemyksen SRE:stä ja kuinka Google hyödyntää SRE:iä heidän sovelluspalveluiden kehityksessä.

 

Ohjaavat periaatteet: mittaa, korjaa, automatisoi

 

1. Kehitystyön ohjaaminen riskejä hallitsemalla

Sen sijaan, että yritettäisiin optimoida jokaisen järjestelmän luotettavuutta loputtomiin, SRE hyväksyy järjestelmien toimivan määriteltyjen palvelutasotavoitteiden (Service Level Objective, SLO) puitteissa. (Esimerkiksi palvelun tavoite on olla alhaalla maksimissaan 3 minuuttia kuukaudessa.)

Mitä matalampi palvelutason tavoite on, sitä enemmän kehitystiimillä on varaa tuottaa virheitä muutoksia julkaistessa. Jos tavoitteissa ei pysytä, vain virheitä korjaavat toimenpiteet sallitaan.

2. Mittaaminen

Jotta riskejä voidaan hallita, tarvitaan keino mitata, kuinka hyvin palvelu pysyy sille määriteltyjen tavoitteiden sisällä. Mittaus voidaan pohjata palveluista saatavaan metriikka- ja lokidataan.

3. Ylläpitotehtävien automatisointi

SRE:ssä palvelujen ylläpito nähdään ensisijaisesti sovelluskehityshaasteena. Tavoitteena on automatisoida mahdollisimman moni ylläpitotehtävistä, sen sijaan, että kehittäjät itse käsin korjaisivat palveluissa havaitut häiriöt. Ilman automatisointia ylläpitäjien määrää olisi kasvatettava palvelun järjestelmien kasvaessa. Tilannetta voidaan hallita asettamalla raja puurtamiselle (engl. toil), eli manuaalisille ylläpitotehtäville.

Esimerkiksi Googlen SRE-kehittäjät saavat puurtaa enintään puolet kehitykseen käytettävästä ajasta, loput ajasta on hyödynnettävä automatisointiin. Näin varmistetaan, että palvelu kehittyy jatkuvasti eteenpäin eikä jää jumiin vikojen korjaamiseen.

 

Miten SRE ja DevOps eroavat toisistaan?

 

DevOps voidaan nähdä ideologiana, jolla digitaalisia palveluja tuotetaan siten, että ohjelmiston kehitykseen, asennukseen, testaukseen ja ylläpitoon liittyviä tehtäviä automatisoidaan ja samalla poistetaan eri yksiköiden väliset siilot.

Site Reliability Engineering eli SRE ei varsinaisesti ole DevOpsin kanssa kilpaileva vaihtoehto, vaan pikemminkin DevOpsin periaatteita noudattava konkreettinen toteutus. DevOps on siis väljä ylätason malli ja SRE hyväksi havaittu tapa toteuttaa sitä käytännössä. SRE:ssä on kiinnitetty huomiota erityisesti toimintamallin ja järjestelmien skaalautuvuuteen ja luotettavuuteen.

Eli lyhyesti, DevOps kertoo, mitä on tehtävä ja SRE taas osoittaa, miten se tehdään käytännössä.

Katso ohesta Googlen tuottama video siitä, miten DevOps ja SRE eroavat toisistaan:

Haluatko oppia lisää?

Tervetuloa Site Reliability Engineering (SRE) Foundation℠ -valmennukseen. 

Tutustu tästä ja ilmoittaudu mukaan!