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

Date

2024

Journal Title

Journal ISSN

Volume Title

Publisher

Tartu Ülikool

Abstract

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.

Description

Keywords

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

Citation