Anmeldelse av Martin Kleppmanns bok om distribuerte systemer «Designing Data-Intensive Applications»

Ettersom en kollega av meg kjente til min lidenskap og interesse for distribuerte systemer, anbefalte en kollega Martin Kleppmanns bok «Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems» som, selv om det for noen år siden, etter min mening er fortsatt svært aktuell for de som utvikler backend-applikasjoner og arkitekter som ønsker å migrere sine on-promise-systemer til skyen (f.eks. Azure, AWS, etc.).

Mens bokens endelige formål er å gi ideer om hvordan man kan bygge pålitelige applikasjoner som håndterer store mengder data, kan til og med back-end-utviklere som jobber med enklere systemer – som enkle API-er – finne det nyttig.

Forfatteren, Martin Kleppmann, som hvis du ikke kjenner ham, kan også sette pris på ham for hans youtube-kanal som snakker om distribuerte systemer, har den svært sjeldne evnen til å kunne forklare svært komplekse konsepter på en veldig enkel måte. Jeg må si en fantastisk forfatter.

Med utgangspunkt i en lang vei klargjør han de mest brukte begrepene, som pålitelighet, skalerbarhet, vedlikeholdbarhet, ACID, etc.
I tillegg forklarer han i detalj hvordan lokale databaser fungerer, derfor alle begrepene «transaksjon», opp til distribuerte databaser (f.eks. CosmosDB, Key-Value-store, etc).
Vi går fra ubrukeligheten til begrepet ACID og CAP-teoremet (som vi pleide å tro de var «Bibelen»), til forklaringen av 2PC (2 Phase Commit) og XA, serialisering, partisjonering, sharding og det grunnleggende konseptet med «konsensus», klarer å klargjøre ideene om de vanligste problemene vi finner på jobben.

Når vi snakker om distribuerte systemer, forklarer han fordelene og ulempene med meldingssystemer som RabbitMQ og Kafka, feilene du ikke bør gjøre og at ting ikke er så enkelt som det ser ut til. Detaljnivået han klarer å oppnå er imponerende, også takket være de enkle, ekte og lettfattelige eksemplene.
Han viser ingen kode (Java, C#, osv.), men holder seg på et høyere nivå. En bok som derfor passer for arkitekter, men også for lidenskapelige backend-utviklere som ønsker å bli mer involvert i diskusjoner/design.

Etter det setter han alt sammen for å foreslå sin visjon om hvordan man implementerer et komplekst system som imidlertid også er pålitelig og vedlikeholdbart over tid.

NB. for hvert kapittel rapporterer det om hundre lenker/referanser for de som ønsker å utdype et spesifikt emne, noe av enorm verdi, fordi det å ha den rette referansen i havet av tilgjengelig informasjon er uvurderlig.

Jeg har avklart hvor mange ting jeg tok «for gitt» som fungerer, for eksempel SQL Server «transaction isolation levels» og hvorfor «Transaction log» er viktig og hvordan den fungerer.
Allerede mens jeg leste fant jeg meg selv i møte med diskusjoner på jobben på en mye tryggere måte og med klare ideer om hva jeg sa, kjenne på fordeler og ulemper med de forskjellige løsningene, og fremfor alt foreslå alternativer.

Har du ikke lest den ennå? Du vet ikke hva du går glipp av!

Legg til en kommentar

Din e-postadresse vil ikke bli publisert.