Hacker News

Uri HN: Rev-dep – 20x aktar mgħaġġla knip.dev alternattiva tibni f'Go

Kummenti

15 min read Via github.com

Mewayz Team

Editorial Team

Hacker News

It-Taxxa Moħbija fuq Kull Tim tas-Softwer li Tkabbar

Kull proġett ta' softwer li jibqa' ħaj biżżejjed eventwalment jiffaċċja l-istess kriżi kwieta: il-codebase jibda jikber aktar malajr milli jifhem it-tim. Funzjonijiet li ħadd ma jsejjaħ, esportazzjonijiet li nħolqu għal karatteristika li ntbagħtet fl-2022 u nkisbet bil-kwiet, komponenti li jgħixu fuq disk iżda qatt ma jilħqu browser. Dan mhux sloppiness - huwa l-fiżika. It-timijiet jimxu malajr, ir-rekwiżiti jinbidlu, u l-entropija hija bla waqfien. Il-mistoqsija mhix jekk il-codebase tiegħek għandhiex kodiċi mejjet. Il-mistoqsija hija kemm qed tiswielek bħalissa.

Skont riċerka mit-tim tal-produttività tal-inġinerija ta' Google, l-iżviluppaturi jqattgħu medja ta'42% tal-ħin tal-kodifikazzjoni tagħhom jaqraw u jifhmu kodiċi eżistenti aktar milli jiktbu funzjonalità ġdida. Meta dak il-kodiċi eżistenti jinkludi eluf ta 'linji li m'għadhomx iservu l-ebda skop, dak il-perċentwal jitgħawweġ saħansitra ogħla. Għal tim ta' għaxar inġiniera, effettivament huma erba' impjegati full-time li ma jagħmlu xejn produttiv — mhux għax huma għażżien, iżda għax l-għodod tagħhom mhumiex qed iżommu l-pass mal-veloċità li biha s-software jixjieħ.

Dan hu għaliex mewġa ġdida ta' għodda għall-iżviluppaturi mibnija fuq lingwi tas-sistemi bħal Go u Rust qed tiġġenera eċċitament reali fiċ-ċrieki tal-inġinerija. Għodod bħal Rev-dep — analizzatur tad-dipendenza inversa li jsostni li jaħdem20x aktar malajrmill-knip.dev popolari ibbażat fuq JavaScript — jirrappreżentaw aktar minn sempliċiment titjib inkrementali. Huma jindikaw ħsieb mill-ġdid fundamentali ta' kif nistrumentaw il-proċess ta' żvilupp innifsu.

X'Tagħmel l-Analiżi tad-Dipendenza Reverse Attwalment

Qabel ma tifhem għaliex il-veloċità hija importanti ħafna, tgħin biex tifhem x'qed jagħmlu fil-fatt l-għodod tal-analiżi tad-dipendenza. Fi proġett JavaScript jew TypeScript, kull fajl jimporta minn fajls oħra. Kull funzjoni, klassi, jew kostanti li tiġi esportata minn modulu toħloq dipendenza potenzjali - xi ħaġa li partijiet oħra tal-kodiċi tal-bażi jistgħu jiddependu fuqha. L-analiżi tad-dipendenza "reverse" tbiddel din il-perspettiva: minflok tistaqsi "dan il-modulu x'jiddependi fuq," tistaqsi "x'jiddependi fuq dan il-modulu?"

Jekk it-tweġiba għal dik it-tieni mistoqsija hija "xejn," sibt kodiċi mejjet. Esportazzjoni li xejn ma jimporta hija skart. Funzjoni li xejn ma titlob hija dejn tekniku b'rata ta 'imgħax ta' kull xahar. Għodod ta' dipendenza inversa jimxu sistematikament fuq il-graff kollu tal-proġett tiegħek, immappjaw kull relazzjoni bejn il-moduli, u jgħollu l-wiċċ tan-nodi li m'għandhom l-ebda konnessjoni deħlin. Ir-riżultat huwa verifika preċiża ta' dak kollu fil-codebase tiegħek li jista' jitneħħa b'mod sikur.

Knip.dev jagħmel dan tajjeb għal proġetti JavaScript u TypeScript, u huwa rispettat ħafna fil-komunità. Iżda huwa miktub f'JavaScript, li jfisser li jimxi fuq Node.js, li jfisser li jiret ir-restrizzjonijiet kollha ta 'prestazzjoni b'ħajt wieħed ta' Node meta tagħmel traversal ta 'sistema ta' fajls fuq skala kbira u analiżi tas-simboli. Għal proġett b'500 fajl, dan huwa tajjeb. Għal proġett b'50,000 fajl — it-tip ta 'monorepo li jsaħħaħ il-prodotti SaaS ta' intrapriżi reali — l-analiżi tista 'tieħu minuti. U l-minuti, fil-cadence moderni CI/CD pipelines joperaw fi, huwa dealbreaker.

Għaliex Mur Tibdel il-Kalkolu

Go kienet iddisinjata mill-bidu għal eżattament it-tip ta' xogħol li titlob l-analiżi tad-dipendenza: I/O veloċi tal-fajls, primitives ta' konkorrenza eċċellenti, u overhead minimu ta' runtime. Fejn Node.js jipproċessa kompitu wieħed kull darba fuq ħajt wieħed u jiddependi fuq callbacks u wegħdiet għal paralleliżmu falz, Go jista 'jbid eluf ta' goroutines li ġenwinament jesegwixxu b'mod parallel fil-qlub kollha disponibbli tas-CPU. Għal kompitu li jinvolvi l-qari ta' mijiet ta' fajls, l-analiżi tal-AST tagħhom, u l-bini ta' graff tar-relazzjonijiet tas-simboli, din id-differenza arkitettonika tissarraf direttament fil-prestazzjoni tal-arloġġ tal-ħajt.

Il-veloċità ta' 20x mitluba minn Rev-dep mhix maġija — huwa dak li jiġri meta tqabbel il-lingwa t-tajba mal-problema t-tajba. In-natura kkumpilata ta' Go tfisser ukoll l-ebda penali ta' warmup JIT. Mill-bidu kiesaħ sal-analiżi kompleta, binarju Go qed jopera fil-prestazzjoni kważi l-ogħla. L-implikazzjoni prattika hija li l-analiżi li ħadet 90 sekonda f'għodda bbażata fuq Node tista 'tlesti taħt 5 sekondi f'ekwivalenti ta' Go implimentata tajjeb. Dik hija d-differenza bejn kontroll li l-iżviluppaturi jaqbżu għax "jieħu għal dejjem" u wieħed li jaħdem fuq kull impenn mingħajr ma ħadd ma jinduna bl-overhead.

"L-aqwa għodda għall-iżviluppatur hija waħda li toħroġ mill-mod. Jekk is-suite ta' analiżi tiegħek iżżid tliet minuti ma' kull pipeline CI, l-iżviluppaturi jsibu modi kif jaqbżuha. Il-veloċità mhix ħaġa tajba - hija l-prerekwiżit għall-adozzjoni."

Il-Każ tan-Negozju għall-Iġjene Codebase

Il-kodiċi mejjet mhuwiex biss problema estetika tal-iżviluppatur — għandu konsegwenzi kummerċjali konkreti li jingħaqdu maż-żmien. Ikkunsidra liema bażijiet ta' kodiċi minfuħin fil-fatt jiswew lill-organizzazzjonijiet:

  • Żminijiet tal-bini itwal li jnaqqsu l-pipelines tal-iskjerament u jnaqqsu n-numru ta’ rilaxxi li tim jista’ jibgħat mingħajr periklu fil-ġimgħa
  • Tagħbija konjittiva ogħla għall-inġiniera abbord, li jridu jqattgħu ġimgħat jiddistingwu mudelli attivi minn dawk abbandunati
  • Żieda fid-daqsijiet tal-pakketti li jweġġgħu l-prestazzjoni tal-applikazzjoni, partikolarment f'apps tal-web fejn kull kilobyte jaffettwa l-ħinijiet tat-tagħbija u r-rati ta' konverżjoni
  • Espansjoni tal-wiċċ tas-sigurtà — kodiċi mejjet li għadu fih dipendenzi għadu vettur għall-vulnerabbiltajiet f'dawk il-pakketti
  • Test suite bloat fejn it-testijiet għall-funzjonalità mneħħija jkomplu jaħdmu, jikkunsmaw minuti CI, u kultant ifallu b'modi konfużi
  • Sinjali foloz ta' kumplessità li jagħmlu d-deċiżjonijiet arkitettoniċi aktar diffiċli għax mhux ċar x'inhu li jiflaħ it-tagħbija u x'inhu vestiġjali

Studju tal-2023 mill-grupp DevOps Research and Assessment (DORA) sab li timijiet bi prattiki ta’ kwalità ta’ kodiċi b’saħħithom — inkluża t-tneħħija regolari ta’ kodiċi mejjet — bagħtu 2.4x aktar spiss u kellhom rati ta’ falliment tal-bidla 7x aktar baxximinn timijiet li ħallew id-dejn tekniku jakkumula. Il-korrelazzjoni mhix koinċidenza. Codebases nodfa huma aktar faċli biex tirraġuna dwarhom, aktar faċli biex jiġu ttestjati, u aktar faċli biex jinbidlu b'mod sikur.

Għan-negozji li jibnu fuq pjattaformi bħal Mewayz — li tagħti s-setgħa lil 138,000 utent fuq 207 moduli kummerċjali distinti li jvarjaw minn CRM u pagi għall-ġestjoni tal-flotta u għodod link-in-bio — codebase health immultiplika l-ishma. Meta l-pjattaforma tiegħek tifrex fuq dawk id-dominji funzjonali ħafna, il-wiċċ ta 'integrazzjoni bejn il-moduli huwa enormi. Esportazzjonijiet mhux użati f'modulu ewlieni jistgħu joħolqu aspettattivi foloz għal moduli dipendenti, iqanqlu renders mill-ġdid bla bżonn fis-saff tal-IU, u jikkomplikaw il-graff tad-dipendenza b'modi li jagħmlu bidliet futuri riskjużi.

Integrazzjoni tal-Analiżi tad-Dipendenza Fi Flussi tax-Xogħol tal-Iżvilupp Moderni

Il-qawwa reali ta 'għodda veloċi bħal Rev-dep mhijiex it-tindif ta' darba li tippermetti - hija l-abbiltà li tmexxi analiżi kontinwa bħala parti miċ-ċiklu ta 'żvilupp normali tiegħek. Meta scan kodiċi mejjet jieħu 4 sekondi minflok 4 minuti, tista 'żżidha mal-ganċijiet ta' qabel l-impenn tiegħek. Meta tieħu 4 sekondi minflok 4 minuti, il-pipeline tas-CI tiegħek jista' jfalli rikjesta tal-ġibda li tintroduċi esportazzjonijiet ġodda mhux użati aktar milli tħallihom jakkumulaw fis-skiet.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

Din il-bidla minn "avveniment ta' tindif trimestrali" għal "xatba ta' kwalità kontinwa" hija analoga għal dak li ġara meta linters saru veloċi biżżejjed biex jaħdmu fuq kull keystroke f'IDE. Qabel ma ESLint dam f'ħin reali, l-istil tal-kodiċi kien infurzat minn reviżjonijiet perjodiċi tal-kodiċi. Wara, sar ambjentali - parti mill-iżviluppaturi tal-loop feedback esperjenzaw waqt il-kitba tal-kodiċi, mhux wara. Analiżi ta 'dipendenza mgħaġġla tista' toħloq l-istess pressjoni ta 'kwalità ambjentali madwar kodiċi mejjet.

It-twaqqif ta' dan il-fluss tax-xogħol tipikament jinvolvi tliet komponenti:

  1. Analiżi tal-linja bażi: Mexxi l-għodda mal-kodiċi attwali tiegħek biex tifhem l-iskala tal-kodiċi mejjet eżistenti. Tippruvax tirranġa kollox f'daqqa — trija b'modulu u prijoritizza skont ir-riskju.
  2. Infurzar tas-CI: Żid l-analiżi mal-pipeline tiegħek b'limitu — ifalli fuq kwalunkwe esportazzjonijiet li għadhom kif ġew introdotti mhux użati, imma ma tfallix fuq dawk eżistenti sakemm tkun imnaddafhom.
  3. Sprints ta' tindif skedati: Uża l-output tal-għodda biex tiggwida xogħol ta' tindif regolari, issegwi l-għadd tal-kodiċi mejta bħala metrika tas-saħħa tat-tim maż-żmien.

X'inhuma s-Sinjali Rinaxximentali tal-Go Tooling għall-Bennejja SaaS

Rev-dep huwa parti minn mudell usa' fl-għodda tal-iżviluppaturi: alternattivi ta' prestazzjoni għolja għal għodod JavaScript stabbiliti, mibnija f'Go jew Rust, qed jidhru f'kull kategorija. Biome ħa post ESLint u Prettier għal ħafna timijiet. Turbopack u Rspack qed jieklu l-ikla ta' Webpack. Bun qed jisfida Node.js innifsu. Il-linja komuni hija li dawn l-għodod ma joffrux biss titjib inkrementali — huma joffru titjib fil-funzjoni pass li jibdel dak li hu prattiku.

Għall-kumpaniji SaaS li jibnu prodotti kumplessi u b'ħafna moduli, dan ir-rinaxximent tal-għodda għandu implikazzjonijiet diretti għall-veloċità tal-inġinerija. L-arkitettura ta’ 207 moduli ta’ Mewayz — li ​​tkopri kollox minn HR u pagi sa sistemi ta’ prenotazzjoni u dashboards analitiċi — tirrappreżenta eżattament it-tip ta’ bażi ta’ kodiċi kbira u interkonnessa fejn l-analiżi tad-dipendenza veloċi u preċiża ssir operazzjonali kritika. Meta bidla f'modulu ta' utilità kondiviż tista' teoretikament tgħaddi minn għexieren ta' moduli ta' karatteristiċi, li jkollok viżibilità kważi immedjata fil-graff tad-dipendenza attwali mhux biss konvenjenti — hija t-tip ta' infrastruttura li tipprevjeni inċidenti ta' produzzjoni għaljin.

Il-ħila li twieġeb "dak li fil-fatt juża din il-funzjoni" f'inqas minn ħames sekondi aktar milli ħames minuti tbiddel kif l-inġiniera jieħdu deċiżjonijiet. Tbaxxi l-ispiża tal-investigazzjoni, li jfisser li l-inġiniera jinvestigaw aktar spiss, li jfisser li jieħdu deċiżjonijiet aħjar. Dan huwa r-redditu kompost fuq l-investiment f'għodda mgħaġġla li spiss jiġi injorat meta l-organizzazzjonijiet jaħsbu dwar l-infiq tal-produttività tal-iżviluppatur.

Nagħmlu l-Eliminazzjoni tal-Kodiċi Mejjet Parti mill-Kultura tal-Inġinerija Tiegħek

It-teknoloġija waħedha ma tibnix kodiċi nodfa — il-kultura tagħmel. Għodod bħal Rev-dep jipprovdu l-kapaċità, iżda ddawwar dik il-kapaċità fi prattika konsistenti teħtieġ impenn organizzattiv. L-aktar timijiet effettivi jittrattaw il-metriċi tal-kodiċi mejjet bl-istess mod kif jittrattaw il-kopertura tat-test: bħala indikatur viżibbli u ssorveljat tas-saħħa tal-kodiċi li jiġi rivedut fil-laqgħat tal-inġinerija u jiġi kkunsidrat fl-ippjanar tal-isprints.

Xi prattiki kulturali speċifiċi li jaħdmu tajjeb jinkludu l-għażla ta' "ġranet tat-tħassir tal-kodiċi" — avvenimenti perjodiċi fejn l-għan espliċitu huwa li jitneħħa l-kodiċi aktar milli żżidu. Netlify gamified dan b'mod famuż billi mexxiet leaderboards li jsegwu linji nett imħassra. Stripe kitbet pubblikament dwar il-prattika tagħhom li jittrattaw it-tħassir tal-kodiċi bħala kontribuzzjoni tal-inġinerija tal-ewwel klassi, ugwali fil-valur għax-xogħol tal-karatteristika. Il-bidla fil-mentalità meħtieġa hija li tagħraf li l-aħjar kodiċi huwa kodiċi li ma jeżistix: kull linja li ma tiktebx hija linja li qatt ma jkollok iżżomm, tittestja, tiddibaggja, jew tispjega lil kiri ġdid.

Għall-kumpaniji tal-prodotti li jimmaniġġjaw operazzjonijiet kummerċjali kumplessi, il-parallel barra mill-inġinerija huwa ugwalment istruttiv. L-istess dixxiplina li tagħmel codebases aktar b'saħħithom - verifiki regolari, sjieda ċara, eliminazzjoni ta 'affarijiet li ħadd ma juża - tagħmel il-proċessi tan-negozju aktar b'saħħithom ukoll. Pjattaformi bħalMewayzhuma mibnija preċiżament biex jagħtu lin-negozji dak it-tip ta 'ċarezza operattiva: ħarsa unifikata ta' liema għodod qed jintużaw, liema flussi tax-xogħol qed jiġġeneraw valur, u fejn qed jakkumula l-piż mejjet organizzattiv. Kemm jekk qed tivverifika esportazzjonijiet ta' softwer mhux użat jew proċessi tan-negozju mhux użati, id-dixxiplina sottostanti hija identika.

L-għodod qed isiru aktar mgħaġġla, il-linji ta' feedback qed isiru aktar stretti, u t-timijiet li jinvestu fl-infrastruttura tal-iġjene tal-kodiċi tal-lum qed jibnu vantaġġ kompost li se jħallas id-dividendi għas-snin. Rev-dep u l-koorti tiegħu ta 'għodod għall-iżviluppaturi li jaħdmu bil-Go mhumiex biss punti ta' riferiment interessanti - huma s-saff ta 'infrastruttura li jagħmel possibbli l-veloċità tas-softwer sostenibbli. U f'dinja fejn il-veloċità tal-iterazzjoni hija l-vantaġġ kompetittiv primarju għan-negozji tas-softwer, dak mhuwiex tħassib periferali. Hija l-logħba kollha.

Mistoqsijiet Frekwenti

X'jagħmel lil Rev-dep aktar mgħaġġel minn knip.dev?

Rev-dep huwa mibni f'Go, lingwa tas-sistemi kkumpilata ottimizzata għall-konkorrenza u l-veloċità tal-eżekuzzjoni mhux ipproċessata, filwaqt li knip.dev jaħdem fuq Node.js. Din id-differenza arkitettonika tippermetti lil Rev-dep janalizza graffs tad-dipendenza u jiskopri kodiċi mejjet sa 20x aktar malajr. Għal monorepos kbar jew codebases kumplessi — bħall-arkitettura ta' 207 moduli li tħaddem l-OS tan-negozju ta' Mewayz fuq app.mewayz.com — dik id-differenza fil-prestazzjoni tissarraf f'ħin reali ffrankat fuq kull ġirja CI.

Kemm jakkumula kodiċi mejjet proġett tipiku li qed jikber?

Studji u rapporti aneddotali minn timijiet ta' inġinerija jissuġġerixxu li kodiċi maturi jistgħu jġorru kullimkien minn 10% sa 35% kodiċi mhux użat jew li ma jintlaħaqx. Il-komposti tal-problema hekk kif it-timijiet jiżdiedu - il-karatteristiċi jitneħħew, l-APIs jinbidlu, u l-moduli jiġu abbandunati mingħajr tindif. Pjattaformi bħal Mewayz, li jikkonsolida 'l fuq minn 207 moduli tan-negozju f'sistema operattiva waħda ta' $19/mo, jiddependu ħafna fuq l-iskoperta sistematika ta' kodiċi mejjet biex iżommu l-codebase dgħif u manutenzjoni.

Rev-dep huwa adattat għal timijiet li ma jużawx JavaScript jew TypeScript?

Rev-dep bħalissa huwa ffokat fuq l-ekosistemi JavaScript u TypeScript, li jagħmilha alternattiva diretta għal knip.dev għal dawk l-ambjenti. L-appoġġ għal lingwi addizzjonali jista' jespandi hekk kif il-proġett jimmatura. Jekk it-tim tiegħek jibni prodotti bbażati fuq il-web jew għodod SaaS — simili għal kif Mewayz iwassal l-OS tan-negozju sħiħ tiegħu fuq app.mewayz.com — u l-munzell tiegħek huwa tqal JS/TS, Rev-dep huwa tajjeb li jiġi evalwat bħala parti mill-għodda tal-iżviluppatur tiegħek illum.

Nista' nintegra Rev-dep fil-pipeline CI/CD eżistenti tiegħi?

Iva. Rev-dep huwa ddisinjat bħala għodda CLI, li tagħmilha faċli li tinżel fi kwalunkwe pipeline CI/CD flimkien mal-passi eżistenti tiegħek ta 'linting u ttestjar. Il-vantaġġ tal-veloċità tiegħu huwa ta 'valur speċjalment f'pipelines awtomatizzati fejn loops ta' feedback aktar mgħaġġla jnaqqsu l-ħinijiet ta 'stennija tal-iżviluppatur. Kemm jekk qed tmexxi startup dgħif jew tmexxi pjattaforma sħiħa bħall-OS tan-negozju ta' $19/mo ta' Mewayz, l-integrazzjoni tal-analiżi tal-kodiċi mejjet fil-pipeline tiegħek tgħin biex tinforza l-iġjene tal-bażi tal-kodiċi f'kull amalgamazzjoni.