Solution Architecture
Kokonaisarkkitehtuuri kuvaa organisaation, joksi se haluaa tulla: tavoitetiloina, periaatteina ja standardeina, joiden on tarkoitus kestää vuosia. Silti yhtäkään asiakasta ei palvele tavoitetila; arvon tuottavat konkreettiset hankkeet. Jossakin kohtaa kokonaisnäkymän ja toimivan ohjelmiston välissä jonkun on päätettävä täsmälleen, miten juuri tämä hanke rakennetaan, mitä se uudelleenkäyttää ja kuinka pitkälle se saa taivuttaa sääntöjä ennen kuin se lakkaa olemasta johdonmukainen. Tämä työ on ratkaisuarkkitehtuuria: oma erillinen osaamisalueensa, ei laimennettua kokonaisarkkitehtuuria eikä johtavan kehittäjän arvonimi. Hyvin tehtynä se on tapa, jolla kokonaisarkkitehtuuri saavuttaa maanpinnan; ohitettuna se on paikka, jossa hyvät arkkitehtuurit kuolevat hiljaa, hanke kerrallaan.
Miksi silta on nyt tärkeä
Useimmat kokonaisarkkitehtuuriin panostaneet organisaatiot törmäävät ennen pitkää samaan kiusalliseen kuiluun. Niillä on viitearkkitehtuureja, periaateluetteloita, teknologiastandardeja ja tavoitetoimintamalli, ja niillä on myös toimitussalkku, joka näyttää sivuuttavan suurimman osan kaikesta tästä. Tuotokset eivät ole vääriä. Ne on yksinkertaisesti asemoitu abstraktiotasolle, jonka pohjalta yksikään toimitustiimi ei voi toimia suoraan. Periaate kuten suosi valmista rakentamisen sijaan bulkkiominaisuuksissa ei kerro hanketiimille, täyttääkö edessä oleva tietty SaaS-tuote juuri tämän prosessin tietojen sijaintia koskevat rajoitteet. Kokonaisnäkymä vastaa kysymyksiin, joita hanke ei esitä, ja vaikenee kysymyksistä, joihin hankkeen on vastattava juuri tässä sprintissä.
Ratkaisuarkkitehtuuri on olemassa kuroakseen tämän kuilun umpeen tarkoituksellisesti sen sijaan, että se suljettaisiin sattumalta. Se on nyt tärkeämpi kuin vuosikymmen sitten syistä, jotka ovat rakenteellisia, eivät muoti-ilmiöitä. Toimitus on kiihtynyt: tiimit julkaisevat jatkuvasti, ja lykätty arkkitehtuuripäätös on päätös, jonka tekee se, joka kirjoittaa koodin ensimmäisenä. Ympäristöt ovat pirstaloituneet: keskimääräinen yritys kokoaa ratkaisunsa nykyään yhtä aikaa cloud-alustoista, valmisohjelmistoista, low-code-työkaluista ja legacy-ytimistä, joten toimivien tapojen määrä rakentaa mikä tahansa asia on moninkertaistunut. Ja epäjohdonmukaisuuden hinta on noussut: tavoiteintegraatiomallia noudattamatta rakennettu integraatio ei ole vain epäsiisti, vaan siitä tulee kantava riippuvuus, joka rajoittaa jokaista tulevaa hanketta, joka koskettaa samaa dataa. Silta on tärkeä, koska liikenne sen yli on lisääntynyt ja pudotus sen alla syventynyt.
Mitä ratkaisuarkkitehtuuri todella on
Ensimmäinen selkeästi lausumisen arvoinen periaate koskee laajuutta. Kokonaisarkkitehtuuri päättelee koko salkun ja koko aikajanan yli. Ratkaisuarkkitehtuuri päättelee yksittäisen hankkeen sisällä ja sen koko elinkaaren yli, alkuvaiheesta tuotantoon. Työn yksikkö on ratkaisu: johdonmukainen suunnitelma yhdelle järjestelmälle tai kyvykkyysmuutokselle, ilmaistuna riittävän yksityiskohtaisesti, jotta toimitus voi edetä, ja riittävän jäsennellysti, jotta sen yhteensopivuus laajempaan ympäristöön voidaan arvioida. Ratkaisuarkkitehti omistaa rakennettavan asian suunnittelun ja vastaa sen yhteensopivuudesta kaiken sen kanssa, mitä se ei rakenna.
Ratkaisuarkkitehtuuri ei ole yksittäinen tuotos vaan pieni, kurinalainen joukko päätöksiä. Se määrittää ratkaisun rakenteen: komponentit, niiden vastuut ja rajat. Se määrittää, miten ratkaisu täyttää toiminnalliset vaatimuksensa, mutta ennen kaikkea, miten se täyttää laatuvaatimuksensa: suorituskyvyn, käytettävyyden, turvallisuuden ja ylläpidettävyyden ominaisuudet, jotka harvoin näkyvät backlogilla mutta jotka ratkaisevat, selviääkö asia kohtaamisesta tuotannon kanssa. Se määrittää ratkaisun suhteen ympäristöön: mitä olemassa olevia kyvykkyyksiä se hyödyntää, mitä se tarjoaa, mitä standardeja se omaksuu ja mistä se tietoisesti poikkeaa. Ja se kirjaa perustelut, jotta päätökset voivat ymmärtää, kyseenalaistaa ja arvioida uudelleen ihmiset, jotka eivät olleet paikalla.
Erottava tekijä, joka erottaa pätevän ratkaisuarkkitehtuurin koristelusta, on vaatimusten käsittely suhteessa tavoitteeseen. Heikko suunnitelma täyttää vaatimukset ja sivuuttaa tavoitearkkitehtuurin. Naiivi suunnitelma kunnioittaa tavoitearkkitehtuuria ja epäonnistuu hiljaa hankalaksi kokemassaan vaatimuksessa. Vahva ratkaisuarkkitehtuuri pitää molempia jännitteessä: täyttää vaatimuksen, mukautuu tavoitteeseen siltä osin kuin voi, ja siellä missä se aidosti ei voi, nimeää ristiriidan, määrittää kunkin vaihtoehdon kustannuksen ja pyytää päätöstä sen sijaan, että tekisi sellaisen laiminlyönnin kautta. Tällä tasolla arkkitehtuuri on kompromissien hallintaa, ja ensisijainen tuotos ei ole kaavio vaan puolustettavissa oleva kanta.
Miten osaamisalue on muuttumassa
Useat kehityskulut muokkaavat sitä, missä ratkaisuarkkitehtuurin on oltava hyvä. Ensimmäinen on siirtymä räätälöidystä rakentamisesta kokoamiseen. Kasvava osa ratkaisuista kootaan koodaamisen sijaan: SaaS-tuotteita, alustapalveluita, valmismoduuleja ja integraatiokerroksia ommellaan yhteen. Tämä siirtää arkkitehdin painopisteen sisäosien suunnittelusta saumojen suunnitteluun. Vaikeat päätökset siirtyvät rajapinnoille: miten tuotteet integroidaan, missä data hallinnoidaan, miten identiteetti kulkee, miten kyvykkyys voidaan myöhemmin korvata purkamatta kaikkea sen ympäriltä. Kokoaminen ei ole rakentamista helpompaa. Se keskittää vaikeuden liitoskohtiin.
Toinen kehityskulku on alusta- ja tuotetoimintamalli. Kun organisaatiot järjestävät toimituksen pitkäikäisten tuotetiimien ja sisäisten alustojen ympärille, ratkaisuarkkitehtuuria harjoitetaan yhä useammin näiden tiimien sisällä sen sijaan, että se sanellaan keskitetystä toiminnosta. Viitearkkitehtuurista tulee joukko valmiiksi viitoitettuja polkuja ja alustakyvykkyyksiä, jotka tiimit ottavat käyttöön oletusarvoisesti, ja ratkaisuarkkitehdin työ siirtyy sen tuntemiseen, milloin viitoitettu polku sopii ja milloin tietty hanke on ansainnut oikeuden poiketa siltä. Hallinta siirtyy hyväksyntäporteista alustaan itseensä koodattuihin suojakaiteisiin.
Kolmas on ei-toiminnallisten ja sääntelyllisten näkökohtien kasvava painoarvo. Tietosuoja, toiminnallisen kestävyyden vaatimukset, suvereniteettisäännöt ja yhä useammin automatisoitujen ja tekoälypohjaisten päätösten jäljitettävyys muokkaavat ratkaisusuunnitelmia jo ensimmäisestä luonnoksesta lähtien sen sijaan, että ne lisättäisiin jälkikäteen ennen käyttöönottoa. Ratkaisuarkkitehtuuri, joka ei kykene ilmaisemaan missä data sijaitsee, kuka pääsee siihen käsiksi ja miten järjestelmä käyttäytyy riippuvuuden pettäessä, ei ole enää pelkästään puutteellinen, vaan usein vaatimustenvastainen. Viimeinen kehityskulku on generatiivisten työkalujen saapuminen itse suunnittelu- ja rakennusprosessiin, mikä nopeuttaa koodin ja ehdokassuunnitelmien tuottamista ja siten pikemminkin nostaa kuin laskee ihmisen johdonmukaisuusarvion arvoa, koska nyt on triviaalin helppoa tuottaa paikallisesti uskottava ratkaisu, joka on kokonaisuutena väärä.
Periaatteet, jotka saavat suunnitelman pitämään
Ratkaisuarkkitehtuuri, joka selviää kohtaamisesta toimituksen ja seuraavien kolmen hankkeen kanssa, noudattaa yleensä kourallista periaatteita. Ensimmäinen on tarkoituksenmukaisuus tyylikkyyden edelle. Oikea suunnitelma on se, joka täyttää tämän hankkeen vaatimukset hyväksyttävällä kustannuksella pysyen samalla johdonmukaisena ympäristön kanssa, ei kehittynein suunnitelma, jonka arkkitehti pystyy piirtämään. Kehittyneisyys, jota vaatimus ei edellytä, on rasite, jota joku muu joutuu ylläpitämään.
Toinen on uudelleenkäyttö ennen luomista. Ennen kuin ratkaisu tuo uuden komponentin, uuden integraatiomallin tai uuden teknologian, arkkitehti on ympäristölle velkaa aidon yrityksen täyttää tarve sillä, mikä on jo olemassa. Jokainen täysin uusi elementti on pysyvä lisäys pinta-alaan, jota organisaation on ajettava, suojattava ja ymmärrettävä. Uudelleenkäyttö ei ole vain taloudellista, vaan se on ensisijainen mekanismi, jolla kokonaisarkkitehtuuri pysyy johdonmukaisena kasvaessaan.
Kolmas on suunnittele saumoihin. Ratkaisun osat, jotka todennäköisimmin muuttuvat, eli tuotteet, toimittajat ja moduulit, tulisi eristää vakaiden rajojen taakse, jotta muutos pysyy hallittuna. Löyhä kytkentä ei ole esteettinen mieltymys, vaan ominaisuus, joka ratkaisee, voiko seuraava hanke edetä neuvottelematta tätä uudelleen. Neljäs on tee ei-toiminnallisesta näkyvää: ilmaise käytettävyys-, suorituskyky-, turvallisuus- ja palautumisodotukset suunnittelun lähtötietoina, koska laatuominaisuus, jota ei suunnitella, on laatuominaisuus, joka löydetään häiriötilanteessa. Viides, ja useimmin laiminlyöty, on jäljitettävät päätökset. Jokainen olennainen valinta tulisi kirjata vaihtoehtoineen ja perusteluineen. Tämä tekee ratkaisuarkkitehtuurista elävän voimavaran arkeologisen arvoituksen sijaan, ja tämä mahdollistaa sen, että poikkeama tavoitteesta on rehellinen, dokumentoitu poikkeus eikä hiljainen rapautuminen.
Missä ratkaisuarkkitehtuurit epäonnistuvat
Norsunluutorni. Arkkitehtuuri tuotetaan eristyksissä, luovutetaan toimitukselle valmiina tuotoksena, ja se poikkeaa rakennetusta järjestelmästä viikkojen sisällä. Suunnitelma ei ollut niinkään väärä kuin se ei ollut koskaan todellinen, koska sitä eivät muovanneet sen rakentajien kohtaamat kitkat. Ratkaisuarkkitehtuurista, joka ei pysy kosketuksissa toimitukseen, tulee dokumentaatio järjestelmästä, jota ei ole olemassa.
Kumileima. Vastakkainen epäonnistuminen. Arkkitehtuuri kutistuu hallinnan tarkistuspisteeksi, jossa suunnitelmat hyväksytään sen sijaan, että niitä muovattaisiin. Siihen mennessä kun suunnitelma saavuttaa arviointilautakunnan, tärkeät päätökset on jo tehty koodissa, ja lautakunta voi vain siunata ne tai käynnistää kalliin uudelleentyön. Liian myöhään harjoitettu arkkitehtuuri ei ole arkkitehtuuria, se on auditointia.
Hiljainen poikkeama. Hanke täyttää vaatimuksen, jonka tavoitearkkitehtuuri tekee hankalaksi, ja ratkaisee ristiriidan hiljaa sivuuttamalla tavoitteen. Poikkeusta ei nosteta esiin, kustannusta ei kirjata, ja ympäristöön kertyy dokumentoimattomia poikkeamia, kunnes tavoitearkkitehtuuri kuvaa organisaatiota, jota ei enää ole olemassa. Tämä on kaikkein syövyttävin epäonnistuminen, koska jokainen yksittäinen tapaus on itsessään järkevä ja yhdessä kohtalokas.
Ylihiominen ja sen kaksonen. Suunnitelma ratkaisee ongelmia, joita hankkeella ei ole, lisäten joustavuutta, kerroksia ja abstraktiota hypoteettisia tulevaisuuksia vastaan, ja toimitus maksaa valinnanvarasta, jota kukaan ei tule käyttämään. Sen kaksonen on pysyväksi kirjattu taktinen oikaisu: tarkoituksellinen kompromissi, joka tehdään määräajan saavuttamiseksi ja jota ei sitten koskaan tarkastella uudelleen, niin että lainaksi otettu tekninen velka muunnetaan hiljaa omaksi pääomaksi. Molemmilla epäonnistumisilla on yhteinen perussyy: kompromissi tehtiin tekemättä sitä näkyväksi. Lähes jokainen vakava ratkaisuarkkitehtuurin epäonnistuminen kiteytyy samaan asiaan: seurauksiltaan merkittävä päätös tehtiin implisiittisesti, jonkun toimesta joka ei tiennyt sen olevan merkittävä, hetkellä jolloin sen kirjaaminen oli halpaa ja kirjaamatta jättäminen kallista.
Miten Nashua työskentelee ratkaisuarkkitehtuurin parissa
Nashua kohtelee ratkaisuarkkitehtuuria käytäntönä, joka elää kokonaisnäkymän ja toimitustiimin välissä eikä kuulu täysin kummallekaan. Lähdemme liikkeelle tavoitearkkitehtuurista ja periaatteista, jotka organisaatiolla jo on, tai autamme luomaan minimaalisen toimivan version siellä missä ne ovat ohuita, ja työskentelemme sitten hanke kerrallaan muuntaaksemme tuon näkymän suunnitelmiksi, joiden pohjalta toimitus voi toimia. Painopiste on päätösten tuottamisessa, ei dokumenteissa. Tuotos, jota kukaan ei käytä rakentamiseen tai hallintaan, on yleiskustannus, ja olemme sen suhteen säästeliäitä.
Käytännössä tämä tarkoittaa, että ratkaisuarkkitehtimme työskentelevät lähellä toimitusta eivätkä sen yläpuolella. He muovaavat suunnitelmaa vuoropuhelussa niiden insinöörien kanssa, jotka sen rakentavat, ja niiden liiketoiminnan omistajien kanssa, jotka sitä ylläpitävät, jotta arkkitehtuuri heijastaa todellisia rajoitteita eikä ihanteellistettuja. Teemme yhteensopivuuden ympäristöön näkyväksi jokaisessa olennaisessa päätöksessä: mitä uudelleenkäytetään, mitä otetaan käyttöön ja missä suunnitelma kunnioittaa tavoitetta tai poikkeaa siitä. Kun poikkeama on perusteltu, kohtelemme sitä ensiluokkaisena poikkeuksena, määritettynä ja kirjattuna, jotta organisaatio näkee mistä se luopuu ja voi valita tietoisesti. Kun viitoitettu polku sopii, otamme sen, koska standardin arvo toteutuu vain, kun sitä käytetään.
Olemme yhtä tarkkaharkintaisia ei-toiminnallisen ja sääntelyllisen suunnittelun suhteen. Käytettävyys, suorituskyky, turvallisuus, kestävyys, tietojen sijainti ja automatisoitujen päätösten jäljitettävyys kohdellaan suunnittelun lähtötietoina jo ensimmäisestä keskustelusta lähtien, ei portteina ennen käyttöönottoa. Ja pyrimme jättämään organisaation kyvykkäämmäksi kuin sen löysimme, juurruttamalla päätöskirjaukset, suojakaiteet ja arviointitavat, joiden avulla sen omat tiimit voivat ylläpitää johdonmukaisuutta sen jälkeen kun astumme sivuun. Tavoitteena ei koskaan ole yksittäinen hyvin suunniteltu ratkaisu. Se on toimitussalkku, joka pysyy linjassa kokonaisarkkitehtuurin kanssa, koska linjaus on rakennettu siihen, miten ratkaisut suunnitellaan.
Missä Nashua tekee eron
Ero, jonka Nashua tuo, on harkinta, jota harjoitetaan siinä pisteessä, jossa arkkitehtuuri kohtaa todellisen hankkeen, tuettuna kyvyllä saada tuo harkinta pitämään. Monet yritykset osaavat piirtää tavoitearkkitehtuurin, ja monet osaavat rakentaa ohjelmistoja. Harvinainen kyvykkyys on se kurinalaisuus, joka yhdistää nämä kaksi: kyky pitää hankkeen vaatimuksia ja yrityksen periaatteita samassa kädessä, nähdä mitkä kompromissit ovat merkittäviä ja tehdä ne näkyviksi sen sijaan, että antaisi niiden asettua hiljaa koodiin. Tämä on työtä, jota teemme hanke kerrallaan, kunnes johdonmukaisuudesta tulee salkun ominaisuus dokumentin pyrkimyksen sijaan.
Tähän liittyy myös käytännöllinen seuraus, joka muuttaa sen, mitä työ saa olettaa. Kun toimeksianto edellyttää kyvykkyyttä, jota ei vielä ole olemassa, sen ei tarvitse odottaa hankintasykliä tai toimittajan tiekarttaa. enterprise platform on rakennettu mukautumaan lähes mihin tahansa ominaisuuteen ripeästi, agenttipohjaisen suunnittelun avulla: tarvittava kuvataan selkokielellä ja generoidaan nopeasti, mutta aina lujien arkkitehtuuriperiaatteiden puitteissa ja tiukan laadunvarmistuksen alaisena, jotta nopeus ei koskaan tule johdonmukaisuuden, turvallisuuden tai hallinnan kustannuksella. Vaikutus on strateginen eikä pelkästään kätevä. Se siirtää tee tai osta -rajaa, pitää valinnanvaran halpana ja antaa arkkitehtuurin seurata strategiaa sen sijaan, että strategia taipuisi siihen, mitä sattui olemaan hyllyllä.
Se mikä lopulta erottaa käytäntömme, on että olemme vastuussa koko kaaren yli, kokonaisnäkymästä ratkaisusuunnittelun kautta tuotannossa toimivaan järjestelmään, ja kannamme arkkitehtuuripäätöstemme seuraukset sen sijaan, että luovuttaisimme ne rajapinnalla. Tämä vastuunkanto muuttaa päätösten laatua. Ratkaisuarkkitehtuuri on vain niin hyvä kuin sen uskollisuus sille, mitä todella rakennetaan ja miten se käyttäytyy tuotannossa, ja organisaatiota ei palvele minkään yksittäisen suunnitelman tyylikkyys vaan jokaisen samaa tarkoitusta kunnioittavan suunnitelman kertynyt johdonmukaisuus. Nashua tekee eron varmistamalla, että jokainen ratkaisu, omilla ehdoillaan ja omassa hankkeessaan, jättää kokonaisarkkitehtuurin vahvemmaksi kuin sen löysi.
