Gå til innholdet

Reversibilitetstesten

Finnes også på 28 språk

English · Español · 日本語 · Português (Brasil) · Français · Deutsch · Italiano · 한국어 · 简体中文 · Português (Portugal) · 繁體中文 · Bahasa Indonesia · Türkçe · Polski · Tiếng Việt · ไทย · Nederlands · العربية · עברית · Українська · हिन्दी · Русский · Svenska · Dansk · Suomi · Español (México) · Français (Canada) · Deutsch (Schweiz)

A freshly poured concrete slab sets around four anchor bolts on a steel template and upright conduits, bordered by timber formwork, with a wheelbarrow on the ground beyond.
Bildet er laget med KI

Modul 3 av 7 i kapitlet Tenk som en dataarkitekt, kapittel 1 i kurset Data Architect. Hver modul står på egne ben. Forrige: Datamodellen er skjelettet · Neste: Arkitektur er kunsten å avveie

Spørsmålet denne modulen besvarer: Hvordan skiller du en arkitektonisk beslutning fra en vanlig?

Arkitekter tar mange beslutninger.

Men ikke alle beslutninger er arkitektoniske beslutninger.

Det er et viktig skille. Hvis vi behandler hver beslutning som arkitektur, bruker vi all tiden vår på å diskutere ting som er relativt enkle å endre. Hvis vi ikke kjenner igjen beslutningene som virkelig er arkitektoniske, kan vi ta en beslutning på fem minutter i dag som tar fem år å nøste opp.

Så hvordan ser vi forskjellen?

Jeg liker å stille et enkelt spørsmål:

Hvor vanskelig blir denne beslutningen å reversere senere?

Jeg kaller dette reversibilitetstesten (the Reversibility Test).

Jo vanskeligere noe er å reversere, og jo mer annet som kommer til å avhenge av det, desto mer arkitektonisk oppmerksomhet fortjener det.

La oss starte med noe enkelt.

Vi kaller et felt Kundekategori. Seks måneder senere bestemmer virksomheten at alle egentlig kaller det Kundesegment. Vi endrer etiketten. Det kan være litt dokumentasjon å oppdatere og litt brukeropplæring, men dette er ingen stor arkitektonisk hendelse. Vi må likevel leve med det opprinnelige API-navnet, for å endre det har mye større konsekvenser. Så dette kan bety at vi må håndtere en endret etikett, og forvirringen som kan følge med.

Vi tok en beslutning. Vi ombestemte oss. Vi gikk videre.

Sammenlign det med en annen beslutning.

Vi lager en identifikator for kunder. Vi bestemmer hva den betyr, hvilket format den har, og hvilket system som oppretter den. Så publiserer vi den.

Salesforce bruker den. Datavarehuset bruker den. Integrasjonsplattformen bruker den. Kundeportalen bruker den. Fem andre applikasjoner begynner å lagre den. Rapporter og datapipelines bruker den. Kanskje ser kundene den etter hvert.

Tre år senere sier noen:

Vi burde nok ikke ha designet identifikatoren sånn.

Det er en helt annen samtale.

Forskjellen er ikke at den ene beslutningen er mer teknisk enn den andre.

Forskjellen er reversibilitet.

Slik kan det skje. Si at virksomheten har bygget nøklene sine av en del av kundens navn pluss et nummer. Det fungerer i årevis, fordi ingen noen gang har måttet endre et navn. Så, et år eller mer senere, endres et navn likevel, og plutselig passer ikke nøklene med mønsteret resten av dataene forventer. Dette er en av grunnene til at nøkler ikke bør ha noen iboende betydning.

En arkitektonisk beslutning har en tendens til å samle ting rundt seg. Jeg tenker på det som tyngdekraft.

Velg en objektmodell, og automatisering bygges rundt den.

Velg en nøkkel, og andre systemer begynner å lagre den.

Velg hvor masterdata bor, og integrasjoner begynner å flyte mot og bort fra det stedet.

Velg en delingsmodell, og forretningsprosesser begynner å avhenge av hvem som kan se hva.

Velg et integrasjonsmønster, og systemer begynner å avhenge av timingen og oppførselen dets.

Jo lenger disse beslutningene eksisterer, desto mer tyngdekraft får de. Til slutt betyr det å endre den opprinnelige beslutningen å endre alt som har samlet seg rundt den.

KI kjenner også den tyngdekraften. Et KI-verktøy jobber ut fra det som allerede finnes i systemet: når et sentralt designelement først er der, behandler hver KI-interaksjon etterpå det elementet som et faktum og fortsetter å bygge på det, og bygge på det, og bygge på det. Beslutningen gir gjenklang fremover gjennom mange flere beslutninger, og ingen mennesker går noen gang tilbake og ser på den opprinnelige. Hver generering legger til tyngdekraft.

Derfor betyr det noe at datamodellen er «skjelettet». Vi er ikke forsiktige fordi endring er dårlig. Vi er forsiktige fordi avhengigheter gjør endring dyrt.

Når jeg ser på en designbeslutning, stiller jeg to spørsmål:

Hvor vanskelig er dette å reversere?

Hvor mye kommer til å avhenge av det?

De henger sammen, men er ikke identiske. Noe kan være teknisk enkelt å endre, men ha hundrevis av konsumenter. Folk pleide å gi standardobjekter nye etiketter for tydelighetens skyld, for eksempel konto (Account) som «Kunde». Enkelt å gjøre. Så ville et annet system bruke kontoer til partnere, og det gikk ikke. Noe annet kan ha bare noen få konsumenter, men kreve en enorm migrering for å endres, som API-navnet til et objekt som refereres mange steder internt. Ingen utenfor ser det, men et feil navn fortsetter å forvirre teamet. Begge deler fortjener oppmerksomhet.

Tenk på noen vanlige databeslutninger:

  • Hvilket Salesforce-objekt representerer dette forretningsbegrepet?
  • Hva er den unike ID-en?
  • Hvilket system er system of record (kildesystemet)?
  • Kopieres disse dataene inn i Salesforce, eller hentes de et annet sted?
  • Er dette ett objekt eller flere relaterte objekter?
  • Hvem eier dataene, og hvor lenge beholder vi dem?
  • Hva er standardgrensene våre for tilgang?
  • Hvordan flyttes disse dataene mellom systemer?

Det er noe helt annet enn å bestemme hvor et felt skal vises på en Lightning-side. Sidedesign betyr også noe. Prisen for å ta feil er en annen.

Reversibilitetstesten Et rutenett på to ganger to. Vannrett: hvor vanskelig en beslutning er å reversere, fra lett til vanskelig. Loddrett: hvor mye som kommer til å avhenge av den, fra lite til mye. Nederst til venstre, «Bare bestem»: en feltetikett og et sideoppsett. Øverst til venstre, «Lett å endre, mye avhenger av det»: koordiner endringen. Nederst til høyre, «Vanskelig å endre, lite avhenger av det»: planlegg migreringen. Øverst til høyre, uthevet, «Arkitektonisk»: den unike identifikatoren, system of record og objektmodellen; sett ned farten, og skriv ned hvorfor. LETT Å ENDRE, MYE AVHENGER AV DET koordiner endringen Å gi konto nytt navn til «Kunde» så trenger et annet system kontoer for partnere ARKITEKTONISK sett ned farten, og skriv ned hvorfor Den unike identifikatoren System of record Objektmodellen BARE BESTEM endre det senere hvis du trenger det En feltetikett Et sideoppsett VANSKELIG Å ENDRE, LITE AVHENGER AV DET planlegg migreringen API-navnet til et internt objekt ingen ser det, men det forvirrer teamet HVOR VANSKELIG Å REVERSERE Lett Vanskelig HVOR MYE SOM KOMMER TIL Å AVHENGE AV DET Lite Mye Hvor vanskelig er dette å reversere? Hvor mye kommer til å avhenge av det? Begge høye: en arkitektonisk beslutning. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

En annen måte å tenke på reversibilitet er sprengradius (blast radius): hvis jeg endrer denne beslutningen, hva annet flytter seg?

Si at noe vi modellerte som et felt, egentlig må bli et underordnet objekt. Det er ikke bare en skjemaendring. Hva skjer med de eksisterende dataene? Med rapportene, integrasjonene som forventer det feltet, Apex og Flows som refererer til det, sikkerheten, analysene, en KI-agent med handlinger som avhenger av den opprinnelige strukturen?

Jo større radius, desto mer omhyggelig bør vi ta den opprinnelige beslutningen.

Det er også derfor arkitekter må se lenger enn sin egen del av systemet. Innenfra Salesforce kan en endring se enkel ut. Sett fra virksomheten kan den påvirke tolv andre systemer.

Beslutninger for virksomheten og beslutninger i Salesforce

Section titled “Beslutninger for virksomheten og beslutninger i Salesforce ”

En dataarkitekt tenker på to nivåer.

Inne i Salesforce bestemmer vi objekter, relasjoner, nøkler, volum, tilgang, automatisering og hvordan data oppfører seg på plattformen.

På tvers av virksomheten stiller vi bredere spørsmål. Hvor bor Kunde egentlig? Hvem eier Produkt? Hvilket system oppretter en Ordre? Hva er vår autoritative identifikator? Hvilken informasjon kopieres mellom systemer, og hvilken blir der den er?

De to nivåene må henge sammen. Jeg har sett Salesforce-implementeringer der den interne modellen ga perfekt mening isolert sett, men ikke passet med virksomheten rundt. Det er ikke nok. Strukturene i Salesforce må være representert på virksomhetsnivå, og beslutninger i virksomheten må flyte tilbake inn i Salesforce.

Arkitektur er toveistrafikk.

Arkitektur er trafikk i begge retninger To nivåer, det ene over det andre. På tvers av virksomheten: hvor Kunde bor, hvem som eier Produkt, hvilket system som oppretter en Ordre, kildesystemene, de autoritative identifikatorene, og hva som kopieres kontra hva som blir der det er. Inne i Salesforce-orgen: objekter og relasjoner, nøkler, volum, tilgang, automatisering, og hvordan data oppfører seg på plattformen. En pil peker nedover, «beslutninger flyter nedover»; en annen peker oppover, «strukturer flyter oppover». Arkitektur er trafikk i begge retninger. beslutninger flyter nedover strukturer flyter oppover På tvers av virksomheten Hvor bor Kunde? Hvem eier Produkt? Hvilket system oppretter en Ordre? Kildesystemer (system of record) De autoritative identifikatorene Hva som kopieres, og hva som blir der det er Inne i Salesforce-orgen Objekter og relasjoner Nøkler Volum Tilgang Automatisering Hvordan data oppfører seg på plattformen Arkitektur er trafikk i begge retninger. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

En fare i teknologi er at de beslutningene som er enklest å implementere, kan se ut som de enkleste å ta. Det er ikke det samme.

Å lage et nytt egendefinert objekt er enkelt. Å lage et nytt felt er enkelt. Å koble til et nytt API blir stadig enklere, og KI gjør alt sammen enda enklere.

Men hvor enkelt noe er å implementere, sier nesten ingenting om hva den arkitektoniske beslutningen koster.

Før en beslutning som er vanskelig å reversere, senk farten lenge nok til å spørre: Hvilket problem løser vi egentlig? Hvilke alternativer vurderte vi? Hva antar vi? Hva skjer når volumet vokser, og når virksomheten endrer seg? Hva annet kommer til å avhenge av dette? Hva skjer hvis vi tar feil?

Vi trenger ikke seks måneders gjennomgang hver gang vi lager et objekt. Men vi trenger ettertanke i forhold til hva det koster å ta feil. Hvis det er et objekt for én enkelt avdeling eller ett delsystem, kan du gå raskere frem. Hvis det er referansedata, et sentralt kundeobjekt eller noe som brukes på tvers av systemer, ta deg tid til å tenke det gjennom.

Det finnes et annet problem med viktige beslutninger: folk glemmer hvorfor de ble tatt.

Noen ser på en arkitektur tre år senere og spør: «Hvorfor i all verden har noen designet det sånn?» Noen ganger er svaret at det var et dårlig design. Det skjer. Men noen ganger fantes det en veldig god grunn: en begrensning i plattformen som ikke lenger finnes, et regulatorisk krav, et annet system som ikke støttet den foretrukne løsningen, en avveining som ble akseptert bevisst for å nå en frist.

Hvis vi bare registrerer hva vi bestemte og ikke hvorfor, har den neste arkitekten ingen mulighet til å vite det.

Skriv ned viktige beslutninger. Det trenger ikke være et dokument på 50 sider. En nyttig beslutningslogg kan være veldig liten:

Kontekst: Hvilket problem løser vi?

Alternativer: Hvilke realistiske alternativer vurderte vi?

Beslutning: Hva valgte vi?

Konsekvenser: Hva vinner vi, og hva gir vi opp?

Eier: Hvem står ansvarlig for denne beslutningen?

Gjennomgang: Hvilken grunn eller dato bør få oss til å se på den igjen?

Verdien ligger ikke i dokumentet. Verdien ligger i å ta vare på resonnementet.

Og når en beslutning endres, ikke slett den opprinnelige. Erstatt den med en ny. Beslutningen som var riktig i 2027, er kanskje ikke riktig i 2030, fordi volumene, virksomheten, Salesforce og forståelsen vår endrer seg. Det jeg vil ta vare på, er historien: her var konteksten, her var beslutningen og hvorfor, her er hva som endret seg, og her er hva vi bestemmer nå. Det er langt mer verdifullt enn å late som om vi alltid visste svaret.

Beslutningsloggen To kort. Malen for beslutningsloggen stiller seks spørsmål: kontekst, hvilket problem løser vi; alternativer, hvilke realistiske alternativer vurderte vi; beslutning, hva valgte vi; konsekvenser, hva vinner vi, og hva gir vi opp; eier, hvem er ansvarlig; gjennomgang, hvilken grunn eller dato skal få oss til å se på den igjen. Ved siden av det samme kortet utfylt for historien om godkjenningene i modul 1: hver godkjenning trenger en godkjenner og en dato; alternativene var flere felter på salgsmuligheten eller et underordnet objekt Godkjenning; beslutningen ble et underordnet objekt Godkjenning; et hvilket som helst antall godkjenninger, til prisen av ett objekt til å rapportere på tvers av; eid av prosjektets dataarkitekt; vurderes på nytt hvis godkjenningene flytter til et annet system. Beslutningsloggen seks spørsmål, én side KONTEKST Hvilket problem løser vi? ALTERNATIVER Hvilke realistiske alternativer vurderte vi? BESLUTNING Hva valgte vi? KONSEKVENSER Hva vinner vi, og hva gir vi opp? EIER Hvem er ansvarlig for denne beslutningen? GJENNOMGANG Hvilken grunn eller dato skal få oss til å se på den igjen? Utfylt: godkjenningene fra modul 1 KONTEKST Hver godkjenning trenger en godkjenner og en dato ALTERNATIVER Feltene Godkjenner 2 og 3 på salgsmuligheten Et underordnet objekt Godkjenning BESLUTNING Et underordnet objekt Godkjenning KONSEKVENSER Et hvilket som helst antall godkjenninger, hver med sin dato Ett objekt til å rapportere på tvers av EIER Prosjektets dataarkitekt GJENNOMGANG Hvis godkjenningene flytter til et annet system Når en beslutning endres, ikke slett den. Erstatt den, og ta vare på historien. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Utover eksamen: KI forkorter tiden fra beslutning til avhengighet. Et KI-verktøy kan foreslå en datamodell på sekunder, og deretter lage objektene, automatiseringen, integrasjonskoden og brukergrensesnittet oppå den. Før tok det måneder med utvikling før mye avhang av en tvilsom beslutning; nå kommer avhengighetene nesten med en gang. Så gjennomgå beslutningene under resultatet, ikke bare resultatet. KI kan hjelpe: den kan liste opp alternativer, utfordre antakelser og lage utkast til beslutningsloggen. Men det er fortsatt arkitekten som bestemmer, og jo vanskeligere beslutningen er å reversere, desto viktigere er det menneskelige skjønnet.

En av ferdighetene jeg vil at du skal utvikle, er å vite hvor du skal bruke oppmerksomheten din.

Ikke gjør hvert konfigurasjonsvalg om til et arkitekturtoppmøte.

Men ikke ta lettvint en beslutning som organisasjonen må leve med det neste tiåret.

Spør:

Hvor vanskelig blir dette å reversere?

Hvor mye kommer til å avhenge av det?

Hvis svarene er svært vanskelig og mye, har du sannsynligvis funnet en arkitektonisk beslutning.

To beslutninger, to nivåer av oppmerksomhet To beslutninger side om side, med de samme to spørsmålene. Å gi en feltetikett nytt navn fra Kundekategori til Kundesegment: lett å reversere; litt dokumentasjon og opplæring avhenger av det; altså bestem og gå videre. Å velge master-detail eller lookup på et stort objekt som allerede har data: vanskelig å reversere, fordi hver eksisterende post må passe den nye regelen, og deling og sammendrag endres med det; hvem som kan se hver post, hva som slettes sammen med overordnet post, sammendragsfelter, rapporter, automatisering og hver integrasjon som laster inn data, avhenger av det; altså sett ned farten, utforsk alternativene, og skriv ned hvorfor. Gi en feltetikett nytt navn Kundekategori blir Kundesegment HVOR VANSKELIG Å REVERSERE? Lett: endre etiketten igjen HVOR MYE AVHENGER AV DET? Litt dokumentasjon Litt brukeropplæring ALTSÅ Bestem og gå videre Master-detail eller lookup? på et stort objekt som allerede har data HVOR VANSKELIG Å REVERSERE? Vanskelig: hver eksisterende post må passe den nye regelen Deling og sammendrag endres med det HVOR MYE AVHENGER AV DET? Hvem som kan se hver post Hva som slettes sammen med overordnet post Sammendragsfelter, rapporter, automatisering Hver integrasjon som laster inn data ALTSÅ Sett ned farten, utforsk alternativene Skriv ned hvorfor Ikke gjør hvert valg til et arkitekturtoppmøte. Ikke ta lettvint en beslutning du må leve med i et tiår. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Senk farten. Forstå kravet. Utforsk alternativene. Gjør avveiningene synlige. Ta beslutningen. Og skriv ned hvorfor.

Målet med arkitektur er ikke å ta beslutninger som aldri kan endres.

Målet er å kjenne igjen beslutningene der det kommer til å bli dyrt å ombestemme seg.

  • Hvilke beslutninger som er arkitektoniske: vanskelige å reversere, og med mye som avhenger av dem.
  • Hvor mye oppmerksomhet hver beslutning får, i forhold til hva det koster å ta feil.
  • Hvilke beslutninger som skrives ned, med kontekst, alternativer, konsekvenser, eier og tidspunkt for gjennomgang.
  • Hvordan beslutningene i Salesforce henger sammen med virksomhetens.
  • Object Relationships Overview (opens in a new tab), Salesforce Help (på engelsk, kontrollert 2026-10-09; kontrollert på nytt 2026-10-12): i en master-detail-relasjon følger detaljpostens tilgang og eierskap masterposten, og når du sletter en masterpost, slettes detaljpostene.
  • Considerations for Object Relationships (opens in a new tab), Salesforce Help (på engelsk, kontrollert 2026-10-09; kontrollert på nytt 2026-10-12): en lookup-relasjon kan bare gjøres om til master-detail når hver post har en verdi i den; konverteringen endrer delingsmodellen (til Controlled by Parent), og relasjonstypen avgjør hvilke standard rapporttyper som er tilgjengelige.
  • Roll-Up Summary Field (opens in a new tab), Salesforce Help (på engelsk, kontrollert 2026-10-09; kontrollert på nytt 2026-10-12): sammendragsfelt (roll-up summary) finnes bare på master-detail-relasjoner, og må slettes før en master-detail-relasjon kan bli en lookup-relasjon.