Leveraging the First Futamura Projection for Large-scale Rule Parallelisation in an Industrial Datalog Engine

Kuupäev

2024

Ajakirja pealkiri

Ajakirja ISSN

Köite pealkiri

Kirjastaja

Tartu Ülikool

Abstrakt

Süsteemi valed konfiguratsioonid võivad põhjustada palju probleeme alates käivitamisest kuni süsteemi töökindluseni. Nende seadistuste õigsuse eest võib vastutada DevOpsi meeskond, aga seda vastutust võib laiendada ka arendajatele. Viimane jaotab töökoormuse paljude inimeste vahel ja õigesti tehes tõstab see produktiivsust tervikuna. Arendajate abistamiseks selle ülesande täitmisel on väga kasu süsteemist, mis leiab valed sätted automaatselt. Üks selline ettevõtte sisemine tööriist kannab nime Neodora, mis kasutab Open Policy Agent-it koodihoidlate (ing repository) ja tõmbekutsete (ing pull request) koodi õigsuse kontrollimiseks. See annab arendajatele kiirema ja lihtsama viisi vigade avastamiseks ja parandamiseks. Kuigi Neodora täidab oma eesmärki edukalt, selle jõudlust saaks ikkagi suurendada. Neodora töötab suurepäraselt üksikute koodihoidlate ja tõmbetaotluste puhul, kuid raskusi tekitab Bulk-Neodora teostus. Bulk-Neodora on mõeldud igapäevaseks ettevõtte koodihoidlate skaneerimiseks. Seda tehakse käivitades Neodorat iga koodihoidla peal. Mõned Neodora reeglid teevad aga HTTP-päringuid, mis on samad olenemata sellest, millist koodihoidlat skaneeritakse. Esitleme Neodora uut versiooni, mis kõrvaldab selle nõrga koha, vähendades Bulk-Neodora tööaega märkimisväärselt. See saavutati Futamura esimese projektsiooni ja paralleelsuse kasutamisega. Lisaks asendati kettatoimingud (ing discoperations) kiiremate mälusiseste (ing in-memory) toimingutega. Muudatused Neodoras vähendasid Bulk-Neodora tööaega peaaegu viisteist korda.

Kirjeldus

Märksõnad

Datalog, Open Policy Agent, Rego, Futamura projection, partial evaluation, osaline hindamine

Viide