Infotehnoloogia ettevõtjale 1367 sõna
help_circle"[Architect must] bring technical realism into a project."" — Michael Pichler (2011) Did You Ever Wonder What an IT Architect Does?
Süsteemi arhitektuuri mõiste ja vajadus selle järele. Arhitektuuri esitamise tehnikad. Põhimõtteid ja juhiseid süsteemi arhitektuuri kujundamiseks.
Praktiliselt iga reaalselt kasulik süsteem:
Süsteemi arhitektuur on vajalik selleks, et:
Eristada:
Mõneti paradoksaalne, kuid sageli süsteemil polegi korralikku arhitektuuri kirjeldust. Detailid on kirjeldatud, kuid üldpilt on ainult süsteemi tegija peas.
Arhitektuuri all mõistetakse süsteemi üldist struktuuri. Loodava süsteemi korral – lahenduse alusraamistikku. Arhitektuuri mõistega on ajalooliselt, lahutamatult seotud esteetiline mõõde. Arhitektuur ei ole ainult mõõdetavad proportsioonid vaid ka nende proportsioonide otstarbekus ja efektiivsus kõige laiemas, ka esteetilises mõttes.
Arhitektuur on midagi püsivat (süsteemi tunnusjooned või omadused, mis on suhteliselt raskesti muudetavad või muutuvad; ajutine ei ole arhitektuur). Arhitektuur on midagi olulist. Arhitektuur on midagi inimese poolt kujundatut (juhuslik või looduslikult arenenud ei ole arhitektuur).
Arhitektuur on midagi ümbruskonnaga suhtestuvat (vaevalt on arhitektuuri, mis seisab omaette). Arhitektuur on eriti süsteemi tervikstruktuur; see on kuidas-asjad-koos-käivad.
Arhitektuur on idee (kandev idee?) ja selle teostus.
Arhitektuur on sisemine ehitus, ühendav alusstruktuur, aga ka väliselt, kasutaja poolt nähtav ja kogetav.
“Architecture, of a system — The fundamental and unifying system structure defined in terms of system elements, interfaces, processes, constraints, and behaviors.” – INCOSE SAWG
“Architecture, of a system — The fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution.” – IEEE P1471
Olulisemad momendid süsteemi arhitektuuri loomisel:
Arhitekt loob vajadusi rahuldava, teostatava süsteemi kontseptsiooni, tagab selle kontseptsiooni ühtsena säilimise arenduse protsessis ning kontrollib loodud süsteemi valmisolekut kasutusse võtuks.
Arhitekt sünteesib erinevad vaated ja nõudmised ühtseks tervikuks – leiab optimaalse lahenduse, tehes vajadusel kompromisse erinevate nõudmiste ja piirangute vahel. Lahendus peab olema ühest küljest vajadusi rahuldav, teisest küljest teostatav. Arhitekti töö ei piirdu projekti valmimisega; ta osaleb aktiivselt lahenduse teostamisel, nõuandja ja järelevalvaja rollides.
Igal vähegi tõsisemal süsteemil peaks olema arhitekt.
Kas arhitektuur on abstraktne või konkreetne mõiste?
Kuidas näeme arhitektuuri? Kas arhitektuuri saab tajuda vahetult?
Kas kahemõõtmeline diagramm on arhitektuur?
Kas kolmemõõtmeline virtuaalmaailm on arhitektuur?
Arhitektuuri esitused, kirjeldused ja arhitektuur ise on erinevad. Süsteemi arhitektuur alati on tervik. Seda tervikut on äärmiselt raske ühe skeemi abil esitada. Selle tõttu esitatakse süsteemi arhitektuur tavaliselt spetsialiseeritud jooniste – vaadete – abil.
Arhitektuurivaade on süsteemi lihtsustatud kirjeldus abstraktsioon) ühest vaatepunktist või vaatenurgast. Vaade ei esita antud vaatenurga jaoks ebaolulisi detaile.
Arhitektuuri kirjeldused on harilikult mitmevaatelised. Vaadete ja mudelite valik sõltub uuritavast probleemist.
Süsteemi vaade esitatakse harilikult visuaalsete kujutiste (diagrammide, skeemide, jooniste) abil, mida täiendavad tekstid (seletuskiri jooniste juurde). Kasutatakse nii praktikas väljakujunenud diagrammide tüüpe (kokkuleppeid tähistuste jm. kujutusviiside osas) kui ka formaliseeritud meetoditega antud diagrammitüüpe.
UML keel pakub 9 standardset diagrammitüüpi (vaadet), milles enimkasutatavad on:
Ärikasutajale on UML diagrammid tavaliselt liiga tehnilised.
Uuem, lihtne ja loogiline on “C4” meetod. Vt Simon Brown (2015) Communicating software architecture with sketches, diagrams and the C4 model.
Hea arhitektuur kestab. “The test of a good architecture is that it will last. The sound architecture is an enduring pattern.”
Thomas: tasakaalustatud / struktureeritud / elegantne ja lihtne / terviklik.
Booch: toimepidev (resilient) / lihtne / arusaadav (approachable) / erinevaid aspekte selgelt väljatoov (clear separation of concerns) / kohustuste tasakaal (balanced distribution of responsibilities) / majanduslike ja tehnoloogiliste piirangute tasakaal.
Kas arhitektuur ainult tekitatakse või tekib ka ise?
Dale Thomas loetleb huvitava rea arhitektuuri loomise „reegleid”. Seejuures:
Reeglite loetelu peaks süsteemi arendaja ise jätkama (leida oma tööstiilile sobivaid reegleid).
Maier, M et al (2001) The Art of Systems Architecting. CRC Press.
The Open Group. Arhitektuuriraamistik TOGAF.
Ehitusblokid, ingl building blocks on IT arhitektuuri kujundamise viis, kasutusel eelkõige suurtes süsteemides. Kavandatakse ja teostatakse rida komponente - “ehitusblokke” (taristulisi teenuseid), pöörates erilist tähelepanu komponentide kokkusobivusele (koostalitlusvõimele, ingl interoperability). Komponte kombineerides saab paindlikult ja kuluefektiivselt teha erinevaid lahendusi ja teenuseid.
Ehitusblokkide arhitektuuripõhimõte on kasutusel mitmete riikide rahvuslike e-taristute ehitamisel:
Ehitusblokkide arhitektuurile on rajatud ka suured pilveplatvormid, nt:
Spolsky, Joel (2008) Architecture astronauts take over
Oluline artikkel, räägib tihtiesinevast nähtusest - arhitektuuri minekust “pilvedesse”, reaalsustaju kadumisest.
RDX (2016) 10 Modern Software Over-Engineering Mistakes
“Sometimes Engineers get carried away. Instead of trying to solve the business problem, we waste our time trying to find the perfect abstractions.”
Tehniline, intrigeeriv kirjutis tänapäeva IT arhitektuuri mõnedest eksiteedest.
Blow, Jonathan (2011) Programming Aesthetics learned from making independent games (YouTube)
“It’s easy to see benefits of an idea developed for benefit’s sake! Very hard to measure subtle negatives chained to this idea. (Which often outweigh these benefits).”
Peavooluseisukohtadele oponeerivaid mõtteid tuntud arvutimängude programmeerijalt.
Sústrik, Martin () ZeroMQ. in: The Architecture of Open Source Applications.
“Make sure you understand the problem you are solving. Even a problem as simple as “make it fast” can take lot of work to understand properly”.
Tehniline, kuid IT arhitektuuri probleeme ilmekalt avav case study nimekalt sõnumijadasüsteemide (Message Queue) väljatöötajalt.