This post was published 7 years ago, when author was 22. Read it with discretion.
Kirjoitus on julkaistu alunperin Duden blogissa.
Syksyllä 2016 sattui tilanne jota ei toivoisi edes pahimmalle kilpailijalleen, joka piti Duden teknisen tiimin hereillä lukuisia öitä viikko toisensa jälkeen, vaikutti käynnissä oleviin projekteihin, firman yleiseen mielialaan ja ennen kaikkea asiakkaittemme internetnäkyvyyteen. Uusi palvelinympäristö alkoi oireilla pahasti ilman selvää syytä, eikä mikään tehty toimenpide tuntunut auttavan.
Lopulta tilanne äityi niin pahaksi, että rakensimme uuden palvelinympäristön toiselle palveluntarjoajalle ja siirsimme kaikki sivustot sinne yhden yön aikana.
Tämä on (pitkähkö) kirjoitus siitä mitä tapahtui, kuinka korjasimme pahan tilanteen ja mitä opimme. Jos pidemmän tekstin lukeminen ei nappaa, alustuksen jälkeen on tarjolla mahdollisuus hypätä lukemaan suoraan mitä opimme.
Aluksi on kuitenkin pohjustettava hieman sitä, miten tähän tilanteeseen päädyttiin.
Duden alkuaikoina 2013-2014 asiakkaille tarjottiin sivutilaa hostingkumppanin kautta, sillä kahden miehen puulaakin ei kannattanut laittaa paukkuja palvelinylläpitoon jo ihan resurssisyistä, vaikka Ronilla palvelimista kokemusta onkin taustalla. Homma skulasi, keskityttiin sivustojen vääntämiseen ja asiakkaat olivat tyytyväisiä.
Vuosien saatossa entistä useampi asiakas vaihtoi sivustoudistuksen yhteydessä vanhan sivutilansa Duden pakettiin hostingkumppanin palvelimelle, kehittämiseen käytetyt työkalut kehittyivät harppauksin ja firmakin kasvoi.
Entistä kehittyneemmät työkalut ja vanhan hostingkumppanin palvelinympäristö eivät kuitenkaan pitkällä jänteellä pelanneet aina yhteen parhaimmalla mahdollisella tavalla. Lisäksi haluttiin kehityksen kärjellä olevaa teknologiaa käyttöön, ja olipahan sattunut myös muutama ikävämpi katkokin sivustojen toiminnassa.
Näiltä pohjilta uusien asiakkuuksien sivustoja ryhdyttiin pystyttämään Duden itse ylläpitämille DigitalOceanin virtuaalipalvelimille, jotka olivat odottamassa asiakkaita vuodenvaihteessa 2015. Tuotantoon saatiin pitkään kaivattuja uudemman teknologian ratkaisuja, kuten HHVM:ää ja Nginxin tuoreinta versiota ryyditettynä Googlen PageSpeed moduulilla nopeamman sivulatauksen saavuttamiseksi.
Paletti uusiksi
Keväällä 2016 palvelinkuviota pysähdyttiin miettimään uudestaan, tavoitteena yhtenäistää asiakkaiden sivutilojen ympäristöt, helpottaa ylläpitoa, löytää ratkaisu joka skaalautuu tulevaisuudessa paremmin ja laskea useasta Dropletista aiheutuneita kustannuksia.
Pohdinnan tuloksena päädyimme rakentamaan kahden edustapalvelimen, kahden tietokantapalvelimen ja yhden tiedostopalvelimen ympäristön ranskalaiselle palveluntarjoajalle nimeltä OVH. Uuteen ympäristöön siirrettiin kaikki sivustot jotka sijaitsi hostingkumppanilla sekä DigitalOceanin virtuaalipalvelimilla. Suurin piirtein samaan aikaan allekirjoittanut, eli Timi, tuli mukaan Duden remmiin ja palvelinosaamisen määrä tuplaantui.
Uudessa palvelinympäristössä on lähes aina aluksi pientä tuunattavaa ja viritettävää, kun nähdään miten se reagoi tuotannossa oikeaan käyttöön. Niin tälläkin kertaa, jopa sen verran että tajusimme alkuperäisen useaan konesaliin hajautetun kokoonpanon olleen hieman huono veto ja pistimme palvelinympäristön OVH:lla kokonaan uusiksi vaihtaen virtualisointitekniikkaa sekä siirtäen kaikki palvelimet samaan fyysiseen laitesaliin.
Uudelleen kasatun ympäristön kanssa olimme tyytyväisiä viikon aktiivisen virittelyn jälkeen ja siirryimme normaaliin ylläpitosykliin, eli prosessien automaattiseen monitorointiin usealla eri työkalulla, varmuuskopioiden automaattiseen rullaukseen ja säännöllisesti suoritettaviin manuaalisiin palvelinohjelmistojen päivityksiin.
Sitten se paska osui
Syyskuun alkupuolella se ruskea möhnä alkoi sitten osua tuulettimeen, alkuun salakavalasti lirahdellen. Automatiikkamme havaitsi useampana satunnaisena alkuyönä asiakkaiden sivustojen hitautta sekä satunnaista lyhyitä putoamista savuttamattomiin. Tekniikan tiimi ryhtyi selvittämään asiaa ja poissulkemaan mahdollisia aiheuttajia yksitellen, samalla kun OVH:lle lähetettiin tukipyyntö selvittää onko heidän infrastruktuurissa tai palvelinlaitteistossa vikaa.
Loppukuuta kohden ruskeaa alkoi osua tuulettimen lapoihin kiihtyvää vauhtia ja ongelma alkoi paisua kuin pullataikina. Duden tekninen tiimi ja ulkopuolinen konsultti poissulki mahdollisia aiheuttajia hurjaa tahtia, kokeillen kaikkia mahdollisia skenaarioita ongelman aiheuttajaksi ja sen poistamiseksi. Syyksi alettiin epäillä tiedostopalvelinta. Kuitenkaan OVH:n omat, epäselvästi ja -tarkasti kommunikoidut, tutkimukset eivät paljastaneet mitään vikaa.
Tässä vaiheessa Ronin ja Timin illat sekä yöt sujuivat toisensa jälkeen Netflixin tai nukkumisen sijaan komentoriviä näpytellen, kummankin koittaen epätoivoisesti löytää ongelman tarkempaa syytä ja samalla taata asiakkaiden sivustojen toiminta. Tällöin ryhdyimme tiedottamaan tilanteesta aktiivisesti asiakkaita.
Sanomattakin selvää, että tässä vaiheessa palvelinympäristön ongelmista oli tullut tekniikan poikien ykkösprioriteetti ja oikeastaan kaikkien asiakasprojektien kehitystahti hidastui niin minimiin kuin luvattujen aikataulujen puitteissa oli mahdollista.
Aamut alkoi muutamien tuntien yöunien jälkeen palvelinten tilanteen tarkistamisella, työpäivät ja alkuillat kului suorittaen erinäisiä diagnostiikkoja, lukien lokeja ja tehden toimia jotta tilanne ei toistuisi. Illat sekä yöt tilanne oli niin sanotusti päällä ja tällöin paukkuja laitettiin aiheutuvan haitan minimoimiseksi sekä reaaliajassa tutkimiseen. OVH:n asiakaspalvelusta ei ollut tässä vaiheessa apua nimeksikään ja tilanne alkoi käydä sietämättömäksi.
Lopulta lokakuun 2016 alussa päätimme siirtää palvelimet ja rakentaa palvelinympäristön uudestaan jälleen kerran, tällä kertaa toiselle palveluntarjoajalle sillä OVH:n reagointi ja asiakaspalvelu ei ollut ollut toivotulla tasolla. Muutaman päivän sisäisten keskustelujen ja mahdollisten palveluntarjoajien kartoittamisen jälkeen päädyimme tilaamaan uuden palvelinympäristön sekä sen pystytyksen Multimilta, joka on kotimainen toimija.
Tämän päätöksen jälkeen asiat lähtivät rullaamaan suhteellisen nopeasti eteenpäin. Suunnittelimme yhdessä Multimin asiantuntijoiden kanssa uuden palvelinympäristömme parissa päivässä ja sovimme että se pystytetään mahdollisimman pian.
Uudet fyysiset koneet sekä niiden välille rakennettu privaattiverkko oli pystyssä lokakuun toisella viikolla, jonka jälkeen ryhdyimme pistämään pystyyn virtuaalikoneita ja asentamaan palvelinohjelmistoja. Seuraavat seitsemän päivää testasimme uusia palvelimia huolellisesti ja viritimme niiden säätöjä kohdilleen tiiviissä yhteistyössä Multimin asiantuntijoiden kanssa.
Kuun puolivälissä olimme vakuuttuneita uudesta palveluntarjoajastamme sekä -ympäristöstä, joten pistimme härdelliksi ja siirsimme asiakkaittemme sivustot suomessa sijaitseville uusille palvelimille. Yhdessä yössä.
Ongelman pitkittyminen ja sen parissa vietetyt pitkät päivät olivat aika lailla syöneet jaksamisen finaaliin, joten sivustojen siirto tuntui ylitsepääsemättömän isolta työltä vaikka kaikki tiesivät että se on tehtävä.
Colaa kului pullokaupalla kun ensin suunniteltiin toimenpiteet jotka tulee tehdä siirron yhteydessä, kirjattiin sivustot ylös jotta yksikään ei unohtuisi, sivustoja siirrettiin sekä testattiin yksi kerrallaan ja kaiken tämän jälkeen palvelinten tilaa valvottiin aamuyön pikkutunneille saakka.
Voitte muuten olla varmoja, että palvelimia monitoroitiin erityisellä tarkkuudella koko loppuvuosi 2016, vaikka väsymys oli kaikilla huipussaan. Ja monitoroidaan edelleen, vaikka yhtäkään ongelmaa ei ole ilmennyt Multimille siirtymisen jälkeen.
Nykyinen palvelinympäristö
Multimin kanssa rakennettu palvelinympäristö muistuttaa suurelta osin sitä, minkälaisen pistimme alunperin OVH:llakin pystyyn. Poikkeuksena se, että palvelimet sijaitsevat ranskan sijaan nykyisin suomen armeijan vanhaan (perus)kallioluolastoon rakennetussa korkean turvaluokituksen konesalissa ja käyvät 100% ekologisella tuulivoimalla.
Itse kokoonpanoon kuuluu kaksi fyysistä mikropalvelinta jotka on virtualisoitu yhteensä neljäksi palvelimeksi; kahdeksi edustapalvelimeksi ja kahdeksi tietokantapalvelimeksi. Lisäksi on kaksi erillistä fyysistä tiedostopalvelinta, toinen asiakkaiden sivustojen tuotantoversioita varten ja toinen varmuuskopioille. Kaikkien näiden fyysisten palvelinten välille on toteutettu oma sisäverkko nopeampaa ja häiriötöntä liikennöintiä varten. Julkinen liikenne kulkee taasen suoraan kolmen suurimman verkko-operaattorin runkoverkkoon.
Palvelinten virtualisointi on toteutettu vikasietoisuutta ja skaalautumista silmällä pitäen. Tarvittaessa virtuaalipalvelimet voidaan siirtää fyysiseltä palvelimelta toiselle ilman huomattavaa katkoa, jopa nostaa pystyyn toisella palvelimella vaikka toinen olisi vikaantunut ja täysin poissa pelistä. Fyysisten palvelinten resurssit on mitoitettu siten, että ne pystyvät hoitamaan yksinäänkin neljän virtuaalipalvelimen aiheuttaman kuorman ongelmitta.
Mitä tästä kaikesta opittiin?
Nyt kun syksyn koitoksista on kulunut jo hyvä tovi, meillä on ollut aikaa pohtia mikä meni vikaan ja mitä olisi voinut tehdä toisin. Paljon on mielessä, mutta seuraavista asioista on toivottavasti hyötyä myös muille.
Valitse palveluntarjoaja huolella
Päädyimme OVH:n asiakkaaksi hieman heppoisin perustein, luottaen siihen, että OVH isona palveluntarjoajana osaa asiansa. Jälkiviisaana on hyvä todeta, että tätä olisi pitänyt kaivella vielä tarkemmin ja kysyä useamman ihmisen mielipidettä.
Multimista taasen ei ole kuulunut lukuisilta henkilöiltä muuta kuin hyvää ja Timin aiemmat henkilökohtaisen asiakkuuden perusteella palvelut sekä asiakaspalvelu ovat toimineet moitteetta vuosia.
Tee suunnittelu yhteistyössä palveluntarjoajan kanssa
Jokainen palveluntarjoaja tuntee itse parhaiten tarjoamansa paletin, sen rajat sekä tavat saada siitä suurin hyöty irti. Suunnittelimme ja pystytimme OVH:n palvelinympäristön itse, mistä aiheutui ylimääräistä työtä sekä säätöä. Multimin kanssa suunnittelimme ympäristön tiiviissä yhteistyössä ja jätimme suosiolla sen pystyttämisen paremmin osaavien hoidettavaksi.
Reagoi asioihin nopeasti ja tarmokkaasti
OVH:lla ilmenneisiin ongelmiin olisi tullut reagoida paljon vahvemmin heti alkuun. Lukuisia tunteja yöunta olisi säästynyt, jos emme olisi jääneet odottamaan palveluntarjoajan omia, vaillinaisia, selvityksiä.
Toisaalta kupletin suunnittelu ja sivustojen siirto uudestaan ei ollut erityisen houkutteleva vaihtoehto, johon kuitenkin päädyimme lopulta kun ongelmat alkoivat käydä sietämättömiksi ilman näkyvissä olevaa muutosta tilanteeseen.
Jos tarjoat hostingia, pidä kaikki langat käsissäsi
Duden hostingpaketin hintaan kuuluu verkkotunnusten nimipalvelu, jota suurin osa asiakkaistamme hyödyntää. Tämä osoittautui suhteellisen suureksi pelastukseksi, sillä sivustojen siirto ja palvelinten vaihto vaatii aina myös muutoksia verkkotunnuksen nimipalveluun. Jos nimipalvelut eivät olisi olleet meidän hallussa, olisi nuo muutokset vieneet pahimmillaan lukuisia päiviä emmekä olisi pystyneet suorittamaan siirtoja toimiville palvelimille yhtä tehokkaasti.
Onneksi myös ne asiakkaat, joiden verkkotunnuksen nimipalvelu on heidän omassa hallinnassa tai kolmannella osapuolella, ymmärsivät asian kiireellisyyden ja suorittivat muutokset poikkeuksellisen nopeasti.
Viesti aktiivisesti sekä rehellisesti
Yksikään asiakkaistamme ei ollut erityisen näreissään ongelmista, vaikka heidän sivustot olivatkin lukuisina alkuöinä pimeänä. Tulikivenkatkuisten viestien sijaan asiakkaat tsemppasivat ja toivottivat jaksamista, vaikka toki toivoivatkin meidän tapaan ongelmien nopeaa loppumista. Tähän oli varmasti yhtenä hyvin suurena tekijänä Duden valitsema tie tiedottaa tilanteesta ja sen aiheuttamista toimenpiteistä todenmukaisesti sekä mahdollisimman seikkaperäisesti.
Ainoa hieman pieleen mennyt asia oli aika joka kesti tämän viestimisen aloittamiseen, se olisi tullut tehdä heti ongelman toistuessa toisen kerran.
Lopuksi pitää vielä kerran pyytää ongelmia nöyrimmästi anteeksi asiakkailtamme ja samalla kiittää heitä tsemppaamisesta sekä ymmärryksestä. Iso kiitos kuuluu myös Multimin asiantuntujoille, joiden avulla saimme suomeen palvelinympäristön jonka toimintaan voi luottaa sekä ongelmien selvittämiseen osallistuneelle konsultille.