Skip to content
huhtikuu 2026Operaatiot9 minJulkaistu

500 hengen tapahtuma hajautettuna järjestelmänä

Isot tapahtumat eivät kaadu keskellä vaan saumoissa. Lainaa hajautetuista järjestelmistä idempotenssi, vastapaine, varareitit ja hallittu heikkeneminen ja vie ne kentälle.

Isot tapahtumat eivät juuri koskaan kaadu siitä kohdasta, mistä luulisi. Pääpuhe pidetään, ruoka tulee ajallaan, ja se asia, jota jännitit kolme viikkoa, menee ihan hyvin. Rikki menee kahden osan liitos, jotka molemmat toimivat yksinään täydellisesti: ilmoittautuminen antoi sisäänkirjautumiselle väärän listan, bussi tuli mutta kukaan ei kertonut ryhmänvetäjille että portti vaihtui, työpaja venyi joten lounas ruuhkautui ja iltapäivä alkoi sekamelskassa. Vika asuu siinä raossa, jossa kaksi ihmistä molemmat olettivat että toinen hoitaa.

Vedin Nuorissa Kotkissa, jossa koordinoin valtakunnallisia hankkeita, yli kaksikymmentä tapahtumaa vuodessa sadoille nuorille. Jossain tapahtuman numero kolmekymmentä kohdalla lakkasin ajattelemasta tapahtumaa suunnitelmana ja aloin ajatella sitä hajautettuna järjestelmänä. En söpönä vertauskuvana vaan insinöörikehyksenä, jossa on samat vikatilat ja samat korjaukset. Kun tein niin, tapahtumat muuttuivat paljon vähemmän stressaaviksi, eikä siksi että minusta olisi tullut parempi sankaritempuissa. Vaan siksi että lakkasin nojaamasta niihin.

Saumoista se rikkoutuu

Hajautettu järjestelmä on joukko itsenäisiä osia, jotka koordinoivat keskenään epäluotettavan verkon yli, missä mikä tahansa osa voi pettää milloin tahansa ja viestit katoavat tai tulevat perille kahdesti. Kuvaile nyt iso tapahtuma. Ilmoittautuminen, kuljetukset, catering, paikan henkilökunta, ohjelmavastaavat, vapaaehtoiset ja 500 teiniä, kaikki käynnissä yhtä aikaa, koordinoimassa kautta historian epäluotettavimman verkon yli: ihmiset, joiden puhelimessa on 30 prosenttia akkua rakennuksessa, jossa ei ole kenttää.

Osat toimivat enimmäkseen. Koordinointi tappaa. Hyödyllinen kysymys lakkaa siis olemasta "tekeekö jokainen työnsä" ja muuttuu muotoon "mitä tapahtuu siirtokohdassa, ja mitä tapahtuu kun viesti katoaa". Hajautettujen järjestelmien suunnittelu on käyttänyt vuosikymmeniä juuri tuohon kysymykseen. Tässä viisi vastausta, jotka ovat ansainneet paikkansa tavassani vetää hommia.

Idempotenssi: kahdesti tekemisen pitää tuottaa sama kuin kerran

Hajautetuissa järjestelmissä idempotenssi tarkoittaa operaatiota, jonka voi turvallisesti toistaa. Veloita korttia samalla pyyntötunnisteella kahdesti, asiakas maksaa kerran. Tätä halutaan, koska viestit lähetetään uudelleen, ja uudelleenyrityksen ei saa soveltua kahteen kertaan.

Kentällä tämä on tuplakirjautuminen. Lapsi saapuu, hänet merkitään paikalle, jono tukkeutuu, toinen vapaaehtoinen omalla erillisellä paperilistallaan päästää hänet läpi uudestaan, ja päälukusi sanoo 501 kun salissa on 499. Kaksi saa saman petipaikan, yksi saa kaksi ruokalippua, seuraava ei yhtään. "Uudelleenyritys" on ihminen, joka tekee saman vaiheen kahdesti, koska ei nähnyt että se oli jo tehty.

Korjaus on sama kuin koodissa: tee operaatiosta turvallisesti toistettava antamalla jokaiselle yksikölle yksi totuuden lähde, jonka kuka tahansa toimija voi lukea. Yksi yhteinen sisäänkirjautumislista, reaaliaikainen, ei kolmea paperikopiota. Ranneke, joka näkyvästi kertoo "tämä henkilö on käsitelty", jotta toinen vapaaehtoinen näkee aiemman tilan ennen kuin toimii. Ranneke on idempotenssiavain. Et luota siihen että ihmiset ovat huolellisia, vaan suunnittelet niin että huolimaton ja huolellinen tuottavat saman lopputuloksen.

Testi mille tahansa toistuvalle vaiheelle: jos kaksi väsynyttä vapaaehtoista molemmat tekevät sen, saatko oikean vastauksen? Jos vastaus on "vain jos he koordinoivat täydellisesti", se on bugi, ei prosessi.

Varareitit: jokainen kriittinen polku tarvitsee heikennetyn tilan

Kypsät järjestelmät eivät oleta onnellista polkua. Maksupalvelu on alhaalla, joten veloitus laitetaan jonoon ja yritetään uudelleen. Suosittelupalvelu aikakatkeaa, joten näytetään geneerinen lista tyhjän laatikon sijaan. Varareitti tarkoittaa että pettävä riippuvuus heikentää kokemusta sen sijaan että pysäyttäisi sen.

Tapahtumat ovat täynnä yksittäisiä kriittisiä pisteitä, joita kukaan ei nimennyt ennen kuin ne pettivät. Ilmoittautumiskone kuolee ovella mukanaan ainoa kopio listasta. Se ainoa ihminen, joka tietää cateringin henkilömäärän, on bussissa ilman kenttää. Videotykki syö sen diaesityksen, jonka varaan koko sessio rakennettiin.

Joten ennen jokaista tapahtumaa teen saman tylsän kierroksen: kävelen läpi jokaisen kriittisen polun ja kysyn "mikä on heikennetty tila". Sisäänkirjautumisen varareitti on tulostettu lista, ajan tasalla sen aamun mukaan, joka pitää oven liikkeessä koneen käynnistyessä uudelleen. Diaesityksen varareitti on fasilitaattori, joka osaa vetää session yhden sivun rungosta, koska se suunniteltiin kestämään ilman näyttöä. Mikään näistä varareiteistä ei ole hyvä. Niiden ei ole tarkoituskaan olla. Niiden on tarkoitus olla parempia kuin pysähtyminen, ja se on paljon matalampi rima kuin ihmiset olettavat.

Vastapaine: suojaa hidas osa ennen kuin se hukkuu

Vastapaine on se, mitä järjestelmä tekee kun yksi vaihe ei pysy perässä. Jono täyttyy, ja sen sijaan että ottaisi vastaan työtä jota ei pysty käsittelemään ja kaatuisi, järjestelmä työntää takaisin: hidastaa sisäänottoa, pudottaa kuormaa, tasoittaa piikin. Ilman sitä etupään ryöppy kaataa takapään osan.

Fyysinen versio on pullonkaula, joka synnyttää tungoksen. Viisisataa lasta saapuu 20 minuutin ikkunassa, koska silloin bussit tulevat, ja sisäänkirjautuminen ehtii käsitellä ehkä kahdeksan minuutissa. Jono on katastrofi. Ihmisille tulee kylmä, tylsää, alkaa tönimistä, ja koko tapahtuman tunnelman määrää turhautuminen ennen kuin kukaan on edes sisällä.

Et voi tehdä sisäänkirjautumisesta äärettömän nopeaa, joten hallitset sinne tulevaa virtaa. Porrasta saapumiset: ryhmä A klo 9.00, ryhmä B klo 9.20, kerrottu etukäteen, jolloin piikistä tulee virta. Jaa jono sukunimen alkukirjaimen mukaan, jottei yksi hidas ilmoittautuminen tuki kaikkia takanaan. Laita lämpimät juomat, musiikkia ja yksi ihminen, jonka koko homma on pitää jono inhimillisenä siihen kohtaan missä jono muodostuu, jolloin 10 minuutin odotus ei maksa sinulle mitään. Kuorman pudotusta ja puskurointia sovellettuna käytävälliseen teinejä.

Syvempi liike on löytää hitain vaiheesi tahallaan, ennen päivää, ja päättää miten suojaat sen. Sellainen on aina, ja jos et tiedä että se on sisäänkirjautumistiski, päivä löytää sen puolestasi, pahimmalla mahdollisella hetkellä, kaikkien edessä.

Havainnoitavuus: et voi korjata sitä mitä et näe

Mikä erottaa rauhallisen operatiivisen tiimin paniikkiin joutuneesta, ei ole vähäisempi määrä ongelmia. Se on niiden näkeminen ajoissa, kun ne ovat vielä pieniä. Ohjelmistossa se on havainnoitavuus: lokit, mittarit ja hälytykset, jotka kertovat että jokin menee pieleen ennen kuin käyttäjät kertovat.

Tapahtuman vastine on raa'an matalateknologinen, ja melkein kukaan ei rakenna sitä. Useimmat koordinaattorit ovat sokeita: he saavat tietää että lounas on 30 minuuttia myöhässä silloin kun 500 nälkäistä lasta seisoo keittiön edessä joka ei ole valmis, mikä on sama kuin oppisi palvelusi olevan alhaalla vihaisista twiiteistä eikä omasta näkymästäsi.

Mitä nykyään pyöritän on yksi yhteinen kanava, yleensä ryhmächatti, johon jokainen aluevastaava postaa yhden lyhyen tilannekuvan kiinteissä tarkistuspisteissä: "kuljetus: kaikki ryhmät perillä." "catering: lounas aikataulussa, kasvisruokia vajaa kymmenen." "sessio 3: venyy 15 min yli." Halpaa, ja se muuttaa kaiken, koska se kääntää hiljaiset paikalliset ongelmat aikaisiksi signaaleiksi. Kasvisruoan vajaus nousee esiin klo 11.15 chatin rivinä eikä klo 12.30 kymmenenä lapsena joilla ei ole mitään syötävää. Et tarvitse valvomoa. Tarvitset että jokainen osa lähettää sykkeen, ja yhden ihmisen seuraamaan virtaa.

Kuri on siinä, että "ei uutisia" pitää tarkoittaa "kaikki hyvin", joten hiljeneminen on itsessään signaali. Vastaava, joka lakkaa postaamasta, on palvelu joka lakkasi lähettämästä mittareita: et oleta että hän on kunnossa, vaan menet katsomaan.

Hallittu heikkeneminen: päätä mistä luovut ennen kuin on pakko

Kun järjestelmä on ylikuormittunut, hyvin suunniteltu versio pudottaa ei-välttämättömiä ominaisuuksia ja pitää ytimen elossa, samaan tapaan kuin videopalvelu tiputtaa resoluution alemmas sen sijaan että puskuroisi pysähdyksiin. Mitä et tee, on antaa yhden pettävän ominaisuuden kaataa koko sovellus.

Jokainen tapahtuma osuu hetkeen, jolloin et voi tehdä kaikkea mitä suunnittelit. Sessio venyy, kuljetus on myöhässä, sää kääntyy, ja jostain on tingittävä. Tiimit jotka selviävät päättivät rauhallisina, mikä on ydin ja mistä voi luopua. Tiimit jotka panikoivat yrittävät pelastaa koko suunnitelman ja menettävät salin.

Tässä se pieni esimerkki, joka opetti minulle tämän. Ulkotapahtuma, 500 lasta, iltapäivä jonka sää meni 20 minuutissa tilasta "ihan ok" tilaan "ei". Suunnitelma oli tiivis: iso ulkopeli, työpajoja, päätösseremonia, kaikki tiukasti aikataulutettu. Rehellinen prioriteettilista, kirjoitettuna etukäteen, oli lyhyt. Ydin: kaikki pysyvät turvassa, kuivina ja syöneinä, eikä kukaan odota sateessa ilman tietoa. Tärkeää: päätös, se osa jonka he muistaisivat. Luovuttavissa: ulkopeli ja yksi työpajalohko.

Joten pudotimme kuormaa. Jätimme pelin pois, yhdistimme kaksi työpajaa yhdeksi sisäsessioksi, suojelimme päätöstä. Se ei ollut paperilla ollut tapahtuma, mutta ydin piti, lapset pysyivät lämpiminä ja tiesivät mitä oli tekeillä, ja loppu osui silti maaliin, koska olimme päättäneet etukäteen mistä luopua. Vaihtoehdon on helppo kuvitella: koordinaattori improvisoimassa kaatosateessa 500 kylmettyneen lapsen toimiessa kuormitustestinä.

Kompromissit, rehellisesti

Tämä kehys on voimakas, ja se on myös mahdollista viedä liian pitkälle.

Pienen tapahtuman voi yliviritellä. Viidentoista hengen työpaja ei tarvitse tilannekanavaa eikä vastapainesuunnitelmaa. Koko paketti on tapahtumiin, joissa saumoja ei voi pitää koossa yksi tarkkaavainen ihminen. Sovita koneisto mittakaavaan.

Sietokyky maksaa väljyyttä, ja väljyys näyttää tuhlaukselta kunnes sitä tarvitaan. Varalista jota kukaan ei käyttänyt, puskuri joka "tuhlasi" 15 minuuttia, toinen ihminen joka tiesi cateringin määrän: sujuvana päivänä nämä näyttävät yleiskuluilta. Eivät ne ole. Ne ovat vakuutusmaksu, ja se päivä jona ohitat ne, on se päivä jona opit mihin ne olivat.

Ihmiset eivät ole palveluja, ja vertauskuvalla on pohja. Et voi rajoittaa teinin taajuutta etkä yksikkötestata vapaaehtoisen aamua. Järjestelmäajattelu antaa sinulle oikean rakenteen. Lämpö, harkinta ja salin lukeminen antavat loput, eikä mikään arkkitehtuuri korvaa vetäjää joka huomaa että lapsella on huono päivä. Käytä kehystä saumoihin ja inhimillisyyttäsi ihmisiin.

Syy miksi palaan tähän linssiin yhä uudestaan on sama asia jonka sanon kaikesta mitä rakennan: skaala pyörii järjestelmillä, ei hyvällä tahdolla. Hyvä tahto on se sankarillinen koordinaattori, joka sprinttaa tulipalojen väliä koko päivän, ja se ihminen palaa loppuun tapahtumaan numero kymmenen mennessä. Järjestelmät ovat idempotentteja vaiheita, nimettyjä varareittejä, hallittua virtaa, tilannesyke ja ennen myrskyä kirjoitettu prioriteettilista. Tee niin, ja tapahtuma pyörii enimmäkseen itsestään, ja sinä saat olla läsnä siinä osassa joka merkitsee: 500 nuorta kokemassa päivän jonka he muistavat, sen sijaan että sinä olisit takakäytävällä laskemassa kuumeisesti päässä lounasmääriä.

Haluatko keskustella tästä aiheesta? Kirjoita suoraan.

jami@impactnode.fi