ModARO: A Modular Approach to Architecture Reconstruction of Distributed Microservice Codebases
Dit artikel presenteert ModARO, een modulaire aanpak voor de reconstructie van microservice-architecturen die de creatie en het hergebruik van technologie-specifieke extractoren over gedistribueerde repositories mogelijk maakt, waarmee architecturale drift en documentatieproblemen effectief worden aangepakt via een gevalideerd, flexibel framework.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer
Stel je voor dat je de manager bent van een enorme, bruisende stad die volledig bestaat uit kleine, onafhankelijke wijken. Elke wijk (een microservice) is gebouwd door een ander team, met andere bouwmaterialen (programmeertalen), verschillende blauwdrukken (configuraties) en verschillende stijlen. Hoewel dit de stad flexibel en snel te bouwen maakt, maakt het het ook ontzettend moeilijk om de stad als geheel te begrijpen. Als één wijk haar loodgieterswerk verandert, wat is dan het effect op het elektriciteitsnet in een andere wijk? Vaak verliezen de stadsplanners (ontwikkelaars) het grote plaatje uit het oog, en raken de oude kaarten (documentatie) verouderd.
Dit artikel introduceert ModARO, een nieuwe tool die ontworpen is om automatisch de stadskaart opnieuw te tekenen door naar de gebouwen zelf te kijken. Hier is hoe het werkt, eenvoudig uitgelegd:
1. Het Probleem: Het "One-Size-Fits-None" Dilemma
Stel je voor dat je een robot hebt die blauwdrukken kan lezen om te begrijpen hoe een huis is gebouwd.
- Het Probleem: In de wereld van microservices is elk huis anders. De ene is gemaakt van hout (Java), de andere van staal (Python) en weer een andere van glas (Go). Een robot die geprogrammeerd is om houtblauwdrukken te lezen, faalt bij stalen blauwdrukken.
- De Complicatie: Bovendien zijn deze wijken vaak verspreid over verschillende steden (aparte code-repositories). Je kunt niet zomaar één robot naar de hele stad sturen om alles tegelijk te bekijken; je moet een robot naar elke wijk afzonderlijk sturen en vervolgens proberen de rapporten aan elkaar te naaien.
2. De Oplossing: ModARO (De Modulaire LEGO-set)
De auteurs creëerden ModARO, wat lijkt op een universele LEGO-set voor het bouwen van kaarttekenende robots. In plaats van één grote, starre robot voor een specifieiafgestemde stad te bouwen, bouw je kleine, uitwisselbare Extractors (de LEGO-steentjes).
- De Extractors: Dit zijn kleine, gespecialiseerde scripts. Eén script weet hoe het "Hout"-blauwdrukken (Java-bestanden) moet lezen, een ander weet hoe het "Staal" (Python) leest, en een ander weet hoe het de "Zoneringwetten van de Stad" (Docker-configuratiefiles) moet lezen.
- De Gedeelde Taal (Het Model): Om deze verschillende scripts met elkaar te laten communiceren, schrijven ze al hun bevindingen in een Gedeeld Notitieblok (het Architectuurmodel).
- Analogie: Stel je voor dat de "Hout"-robot een deur vindt en in het notitieblok schrijft: "Deur gevonden op locatie X". De "Staal"-robot hoeft niet te weten hoe de Hout-robot de deur heeft gevonden; hij leest alleen het notitieblok, ziet "Deur op X" staan, en voegt zijn eigen notitie toe: "Deur is vergrendeld."
- Omdat ze allemaal akkoord gaan met het formaat van het notitieblok, kun je de "Hout"-robot later vervangen door een "Bamboe"-robot, en het systeem blijft zonder problemen werken.
3. De "Distributed" Magie
Het artikel benadrukt een uniek kenmerk: Distributed Architecture Reconstruction.
- De Oude Manier: Om de hele stad in kaart te brengen, moest je alle blauwdrukken van elke wijk verzamelen in één grote kamer, ze sorteren en dan de kaart tekenen. Dit is traag en schendt de "onafhankelijke" aard van de wijken.
- De ModARO-manier: Je stuurt een robot naar Wijk A. Hij tekent zijn deel van de kaart en slaat deze op. Je stuurt een robot naar Wijk B. Hij tekent zijn deel. Later, wanneer de stad klaar is om te worden geïmplementeerd, voeg je de twee gedeeltelijke kaarten simpelweg samen (merge).
- De "Retroactieve Link": Soms zegt Wijk A: "Ik maak verbinding met Wijk B," maar kent zij het adres van B nog niet. ModARO staat Wijk A toe om een "placeholder-notitie" (een link) te schrijven die zegt: "Verbind met wie ook de naam 'B' heeft." Zodod de kaarten worden samengevoegd, vindt het systeem automatisch "B" en verbindt de punten.
4. Werkt het? (De Tests)
De onderzoekers hebben dit systeem op twee manieren getest:
Test A: De "Real World" Uitdaging (10 Open Source Projecten)
Ze namen 10 verschillende open-source microservice-projecten (sommige groot, sommige klein, met verschillende talen) en vroegen ModARO om hun kaarten te recreëren op basis alleen van de verstrekte code en documentatie.
- Resultaat: Het werkte! ModARO slaagde erin om architecturale details (zoals welke services met elkaar communiceren, welke talen ze gebruiken en waar databases zich bevinden) te extraheren uit een breed scala aan technologieën.
- Beperking: Het kon geen "gedachtenlezende" informatie lezen (zoals hoogwaardige beschrijvingen van wat een service doet, als dat niet in de code stond geschreven) of informatie die verborgen zat in complexe, dynamische code die menselijke intuïtie vereiste om te ontcijferen.
Test B: De Menselijke Test (8 Industrie-ontwikkelaars)
Ze vroegen 8 professionele softwareontwikkelaars om ModARO te gebruiken en het te vergelijken met een bestaande tool genaamd ReSSA.
- Het Oordeel: De ontwikkelaars gaven de voorkeur aan ModARO.
- Waarom? Ze vonden ModARO gemakkelijker in gebruik omdat het aanvoelde als het schrijven van normale code (die zij al kenden), terwijl de andere tool aanvoelde als het oplossen van verwarrende, een-regelige puzzels.
- De Kanttekening: Ze vonden het nog steeds een beetje lastig om "regular expressions" (een manier om naar tekstpatronen te zoeken) te gebruiken om specifieke code te vinden. Ze wensten zich intelligentere tools die de codestructuur beter konden begrijpen, maar ze waren erg tevreden over de algemene flexibiliteit van ModARO.
Samenvatting
ModARO is een tool waarmee ontwikkelaars kleine, herbruikbare "verkenners" kunnen bouwen om verschillende delen van een complex softwaresysteem te verkennen. Deze verkenners schrijven hun bevindingen in een gedeeld notitieblok, waardoor het systeem automatisch een volledige kaart van de architectuur kan samenvoegen, zelfs als het systeem verdeeld is over veel verschillende mappen of veel verschillende programmeertalen gebruikt. Het maakt het bijhouden van de "stadskaart" makkelijker, sneller en minder foutgevoelig voor menselijke fouten.
Verdrinkt u in papers in uw vakgebied?
Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.