Teknisk arkitektur, Från logiska krav till fysisk infrastruktur
Huvudvarning, jag tittar ner på varningstablåerna i min viggen. Hydraulsystem 1 har slutat fungera. Som tur är har flygplanet två parallella system och är fortfarande fullt styrbart. Logiska krav har en teknisk lösningn.
Den tekniska arkitekturen med kraven mot den är detaljbeskrivningen av hur ett system ska implementeras. Det är instruktionen till den som ska skapa implementeringen.
Men att bara konstatera att "det ska finnas två system" räcker inte för ingenjören på ritbordet. Om båda hydraulsystemens rörledningar dras tätt intill varandra längs flygplanskroppen, kan en enda granatsplitter eller ett mekaniskt haveri slå ut båda systemen samtidigt (ett så kallat Common-Cause Failure). Den tekniska arkitekturen måste därför specificera den fysiska och logiska isoleringen: exakt hur rören ska dras via olika vägar, vilka oberoende pumpar som ska driva dem, och hur ventilerna ska fungera på komponentnivå för att garantera flygplanets luftvärdighet. I den digitala och händelsestyrda världen fungerar det på exakt samma sätt. När vi översätter ett logiskt säkerhetskrav (till exempel: "ett kritiskt larm måste alltid levereras och dess integritet garanteras") till teknisk arkitektur, använder vi OSI-modellen som vår ritning. Vi delar upp implementationen i en vertikal kedja för att isolera felkällor – från den högsta tjänstenivån ner till den fysiska hårdvaran och nätverksvägen.
Innehåll
Logiskt arkitektur till fysisk kod
Logisk Arkitektur (Vad ska vi göra?)
Service-arkitektur (Det skyddande kontraktet)
Teknisk Arkitektur (Hur bygger vi det?)
OSI-tänket skapar Cybervärdighet
Hög nivå: Tjänstearkitekturen (Services – OSI Lager 7)
Mellannivå: Mjukvara och Plattform (Software)
Under tjänsterna ligger mjukvaruskiktet som realiserar logiken. För att uppnå sann motståndskraft måste den tekniska arkitekturen medvetet bryta mjukvaru-monokulturen. Om vi kör exakt samma kod och plattform på alla ställen, kommer ett dolt mjukvarufel (ett systematiskt fel) att sänka alla instanser samtidigt.
Därför specificerar arkitekturen teknisk diversitet i plattformslagret. Vi kan välja att köra en molnspecifik kö i en kanal, en lättviktig meddelandemäklare som NATS i en annan, och Apache Kafka i en tredje. I denna arkitektur fungerar Apache Kafka som systemets "svarta låda" – en oföränderlig, distribuerad händelselogg som skriver allt till disk med strikta kontrollsummor (CRC32). Detta ger oss temporal redundans; om en bearbetningskomponent kraschar kan den spola tillbaka Kafkas logg och bygga upp sitt interna tillstånd till exakt rätt punkt igen, utan att data går förlorad.
Låg nivå: Infrastruktur, Enhet och Nätverksväg (Device, Network & Path – OSI Lager 1–4)
1 Logisk arkitektur till teknisk OSI7
Processen: Från logiska krav till tekniska skikt
Lägre lager (OSI 1–4): Transport och fysisk väg
Högre lager (OSI 7): Applikationslogik och systematiska fel
Resultatet: Ett kontrakt för implementationen
2. Dynamisk beskrivning av OSI 7
2.1. Tekniska funktioner – Vad mjukvaran gör internt
2.2. Tekniska processer – Hur flödet rör sig över tid
2.3 Varför den dynamiska beskrivningen är kritisk för Safety
2.4. Informationskravens natur: Den dynamiska beskrivningen på OSI 7
3. Informationsmodellering med UML
4. Fysisk realisering
Vi återvänder till flygplanet. Vi vet nu exakt att vi ska ha två hydraulsystem (Steg 1) och vi har definierat hur de dynamiskt ska ta över från varandra vid ett tryckfall (Steg 2). Men om vi köper båda hydraulpumparna från exakt samma tillverkningsbatch, och de innehåller samma mikroskopiska materialfel, kommer båda att brista exakt samtidigt. För att uppnå sann luftvärdighet måste vi välja olika leverantörer och fysiskt placera utrustningen i olika delar av flygplanskroppen
När vi bygger IT-system för samhällsviktiga funktioner gör vi exakt likadant. I det tredje steget transformerar vi vår logiska och dynamiska applikationsarkitektur till en stenhård fysisk infrastrukturritning. Det är här vi rör oss ner i botten av ArchiMates tekniklager och fattar besluten om vilka specifika plattformar systemet ska exekveras på.
Bryta monokulturen: Noder och Systemmjukvara
Tekniska processer – Hur flödet rör sig över tid
Från OSI 7 till OSI 1–4
5. Mjukvaru- & informationsarkitektur
Komponentdiagram (Struktur)
Sekvensdiagram (Dynamik)
Klassdiagram (Datastruktur)
En av de absolut största felkällorna i distribuerade system är att data muterar eller tolkas olika av olika komponenter. Det är här informationsarkitekturen säkras med UML.
Vi definierar stenhårda datamodeller för all information som flödar genom våra meddelandebussar (Kafka, NATS). Varje larm, varje röst och varje valideringsresultat modelleras som en klass med explicita attribut och datatyper (t.ex. LarmEvent med attribut som UUID, Timestamp, KritikalitetsNivå och Checksumma). Detta klassdiagram ligger till grund för de scheman (t.ex. Avro eller Protobuf) som tvingar Apache Kafka att fungera som en typ-säker, oföränderlig logg och förhindrar datamutationer.