Martin Kleppmann

Sun, Nov 22, 2020

En intressant person är Martin Kleppmann. Kleppmann forskar i distribuerade system vid Universitetet i Cambridge, men har en historia som systemutvecklare och entreprenör. I Advance Tech Podcast 2017-10-27 (podcast) så får vi en genomgång av Kleppmanns historia och samtidigt en sammanfattning av hans senare arbete med bland annat distribuerade system.

Här nedanför försöker jag mig på någon slags sammanställning av dom delar av hans arbete som jag tycker är intressanta, och hoppas få återkomma till hans arbete i framtiden för att fylla på delar som jag missat eller som tillkommit.

Skalbara distribuerade system

Martin Kleppmann är författaren bakom Designing Data-Intensive Applications - en referensbok för byggandet av skalbara distribuerade, data-intensiva, system. I Software Engineering Daily 2017-05-02 (podcast) intervjuas Kleppmann om boken. Han utvecklar bland annat sin kritik av den gängse tolkningen av CAP-teoremet (vilket han också gör i ovan nämnda Advance Tech Podcast-intervju). En av hans invändningar är att teoremet har en väldigt snäv definition av vad en “närverkspartion” innebär, vilket då skulle göra det svårt att generellt applicera teoremet på distribuerade system.

Kleppmann talar ofta om att lyfta redan etablerade databas-koncept så som transaktionsloggar och “materialized views” till systemnivå för att uppnå skalbarhet. Ett exempel är detta föredrag från Strangeloop 2014 (YouTube) där han talar om “att vända databasen ut-och-in”, och till exempel förvandla transaktionsloggen till en “first class citizen”. Kleppmann har även jobbat på LinkedIn med Apache Kafka, och återkommer ofta till Kafka som en tillämpning på en transaktionslogg i sammanhang som detta. Som huvudtalare på Kafka Summit SF 2018 (YouTube) så argumenterar Kleppmann till och med för att det går att uppfylla ACID med hjälp av Apache Kafka, vilket kan ses som ytterligare argument för att det skulle vara logiskt (för att uppnå skalbarhet) att “vända databasen ut-och-in”.

Händelsedriven arkitektur

Kleppmanns angreppssätt på skalbarhet i distribuerade system överlappar ofta koncept inom händelsedriven arkitektur. I ett föredrag från Domain Driven Design Europe 2016 (YouTube), pratar Kleppmann om hur idéerna kring transaktionsloggar och “materialized views” inom “streaming platforms” kom att växa fram parallellt med koncepten Event Sourcing och Command Query Responsibility Segregation (CQRS) inom Domain Driven Design (DDD) (vilket han också gör i ovan nämnda Advance Tech Podcast-intervju). Att “internetföretag” så som Google et al, har försökt lösa skalbarhet, och kallat det “streaming platforms”, med hjälp av samma angreppssätt som människorna kring Enterprise-mjukvara har försökt lösa modellering av komplexa problemdomäner, och kallat det DDD. Att dessa idéer har vuxit fram parallellt, i olika sammanhang, framhåller Kleppmann som bevis på att dom har relevans.

Conflict-Free Replicated Data Types

Ett annat område inom vilket Martin Kleppmann verkar är Conflict-Free Replicated Data Types (CRDTs). I Software Engineering Daily 2017-12-08 (podcast) redogör Kleppmann för hur CRDTs tar vid där Operation Transformation (OT) misslyckades, det vill säga tillhandahålla alogritmer för replikering av data mellan decentraliserade datakällor (online eller offline) på ett förutsägbart sätt. En tillämpning för CRDTs skulle alltså kunna vara motsvarande Google Docs, men utan central server. Kleppmann går även in på att förklara hur CRDTs fundamentalt skiljer sig från Block Chain (BC) genom hur BC hela tiden bygger på konsensus bland alla klienter kring vilket som ska bli nästa block i kedjan (vilket innebär att eventuella andra kandidater helt enkelt kasseras), medan CRDTs handlar om att sammanfoga alla klienters förändringar (eftersom alla förändringar är lika signifikanta).

I sitt föredrag på On The Beach 2018 (YouTube) pratar Kleppmann mer om tillämpningen av CRTDs, hur det kan se ut, och hur det faktiskt möjliggör distribuerat samarbete mellan klienter, utan central server.

I ovan nämnda intervju i Advance Tech Podcast så pratar om Martin Kleppmann om sitt arbete med CRDTs och reflekterar över hur dom bakomliggande idéerna inom CRDTs överlappar med idéer inom händelsedriven arkitektur.