Arkkitehtuuripiirustus ilman osoitinta

Yksi työlääksi koettu ja siksi usein lapsipuolen asemaan päätyvä työtehtävä ohjelmistoprojekteissa on arkkitehtuurin dokumentointi. Kuva kertoo siinäkin enemmän kuin tuhat sanaa. Siksi piirustukset ja diagrammit ovat tärkeä osa tiedonsiirtoa ja jaettua ymmärrystä.

Arkkitehtuuripiirustus on kartta, joka auttaa sekä uusia ihmisiä hahmottamaan ohjelmistoprojektin toimintaa että projektin senioreita viestimään muutoksista ja kokonaisuudesta. Hyvin tehty, todellisuutta vastaava piirros parantaa projektin laatua. Selkeästä piirustuksesta selviävät muun muassa projektin eri osasten riippuvuudet ja niiden tietoturvariskit.

Arkkitehtuurin piirtäminen soveltuu parhaiten projektin suunnitteluvaiheeseen ja sen tavoitteiden dokumentointiin. Oikein käytettynä arkkitehtuurimuutokset täydennetään implementoinnin aikana myös arkkitehtuurisuunnitelmaan. Piirtämisen hyödyt hiipuvat jos käytössä on työkalustäkki, joka osaa tuottaa arkkitehtuurin jo olemassa olevasta IaC-konfiguraatiosta tai luodusta ympäristöstä. Samoin graafista piirustusta ei tarvita, jos osapuolet tuntevat aihealueen siinä määrin ettei selventäviä lisäpiirustuksia tarvita.

Arkkitehtuuripiirroksen koodin kehitykseen sopivat normaalit ohjelmointiprojektien prosessit. Halutut ominaisuudet tiketöidään, koodimuutokset kirjoitetaan yhdessä tai yksin ja kommitoidaan. Muutokset ovat siis katselmoitavissa ja hyväksyttävissä kuten mitkä tahansa muutkin ohjelmointiprojektin muutokset. Arkkitehtuuripiirroksen versionhallinta mahdollistaa hyvin muutosten viestinnän ja sen avulla voidaan selvittää tehtyjen muutosten perusteita. Koodin historia antaa myös mahdollisuuden arvioida mahdollisten tulevien muutosten merkitystä.

Koodilla luotava piirustus voidaan upottaa olemassa olevaan dokumentaatioon, jolloin käytössä on aina tuorein versio. Tarvittaessa voidaan luoda useita eri kokoisia kuvia eri kohteita varten, jolloin luodut kuvat ovat helposti saavutettavissa. Kaikki edellä mainitut käyttötapaukset ovat toteutettavissa tutuilla työkaluilla ja CI/CD-putkilla, eli jälleen voimme käyttää tuttuja työskentelytapoja.

Itse suosimani työkalu piirustusten luomiseen on Diagrams, joka on Pythonilla toteutettu työkalu pilvi- ja IT-arkkitehtuurin piirtämiseen. Diagrams sisältää alustakohtaiset logot yleisemmille pilvipalvelualustoille, kuten AWS, Azure ja GCP.

Olemassaolevan järjestelmän jatkokehityksen aikana tai uutta järjestelmää luotaessa arkkitehtuurista keskusteleminen käy selkeämmäksi kun käytössä on yhteinen, joustavasti muokattava piirustus. Koodia muokkaamalla on nopea tehdä muutoksia ja aktiivisella versionhallinnan käytöllä muutokset jäävät hyvin muistiin. Eri muutokset voidaan kommitoida versionhallintaan kuvaavilla saatesanoilla, jolloin jälkikäteenkin voidaan ymmärtää miksi jokin arkkitehtuurin piirre suunniteltiin jollain tavalla.

Luotu arkkitehtuuripiirros kuvaa aina ideaalitilaa ja tavoitetta. Todellisuus voi siis olla erilainen. Eri ympäristöissä, kuten kehitys-, testaus- ja tuotantoympäristöissä konfiguraatio voi vaihdella muutosten edetessä tuotantoon. Koodilla tehty arkkitehtuuripiirros on siten parhaimmillaan suunnittelussa ja tiedonsiirrossa.