Show HN: Rev-dep – 20x brža knip.dev alternativna izrada u Gou
Komentari
Mewayz Team
Editorial Team
Skriveni porez za svaki rastući softverski tim
Svaki softverski projekt koji preživi dovoljno dugo na kraju se suoči s istom tihom krizom: baza koda počinje rasti brže nego što to tim može razumjeti. Funkcije koje nitko ne poziva, izvozi koji su stvoreni za značajku koja je isporučena 2022. i koja je tiho zastarjela, komponente koje žive na disku, ali nikada ne dopiru do preglednika. Ovo nije aljkavost - to je fizika. Timovi se brzo kreću, zahtjevi se mijenjaju, a entropija je neumoljiva. Pitanje nije ima li vaša baza koda mrtav kod. Pitanje je koliko vas to sada košta.
Prema istraživanju Googleovog inženjerskog tima za produktivnost, razvojni programeri provode prosječno 42% svog vremena kodiranja čitajući i razumijevajući postojeći kod umjesto da pišu nove funkcije. Kada taj postojeći kod uključuje tisuće redaka koji više ne služe svrsi, taj se postotak još više iskrivljuje. Za tim od deset inženjera, to je zapravo četiri zaposlena s punim radnim vremenom koji ne rade ništa produktivno - ne zato što su lijeni, već zato što njihovi alati ne drže korak s brzinom kojom softver stari.
To je razlog zašto novi val alata za razvojne programere izgrađen na sistemskim jezicima kao što su Go i Rust stvara pravo uzbuđenje u inženjerskim krugovima. Alati kao što je Rev-dep — analizator obrnute ovisnosti koji tvrdi da radi 20x brže od popularnog knip.dev-a temeljenog na JavaScriptu — predstavljaju više od pukog inkrementalnog poboljšanja. Oni signaliziraju temeljito preispitivanje načina na koji instrumentiramo sam proces razvoja.
Što zapravo radi analiza obrnute ovisnosti
Prije nego što shvatite zašto je brzina toliko važna, pomaže razumjeti što alati za analizu ovisnosti zapravo rade. U JavaScript ili TypeScript projektu svaka se datoteka uvozi iz drugih datoteka. Svaka funkcija, klasa ili konstanta koja se izvozi iz modula stvara potencijalnu ovisnost — nešto na što bi se drugi dijelovi baze koda mogli oslanjati. "Obrnuta" analiza ovisnosti okreće ovu perspektivu: umjesto pitanja "o čemu ovisi ovaj modul", postavlja se pitanje "o čemu ovisi ovaj modul?"
Ako je odgovor na to drugo pitanje "ništa", pronašli ste mrtvi kod. Izvoz koji ništa ne uvozi je otpad. Funkcija koju ništa ne naziva je tehnički dug s mjesečnom kamatom. Alati za obrnutu ovisnost sustavno hodaju cijelim grafom vašeg projekta, mapiraju svaki odnos između modula i prikazuju čvorove koji nemaju ulazne veze. Rezultat je precizna revizija svega u vašoj bazi koda što se može sigurno ukloniti.
Knip.dev to čini dobro za projekte JavaScripta i TypeScripta i široko je cijenjen u zajednici. Ali napisan je u JavaScriptu, što znači da radi na Node.js, što znači da nasljeđuje sva Nodeova jednonitna ograničenja performansi kada radi opsežno prolaženje sustava datoteka i analizu simbola. Za projekt s 500 datoteka to je u redu. Za projekt s 50.000 datoteka — vrstu monorepoa koji pokreće stvarne poslovne SaaS proizvode — analiza može potrajati nekoliko minuta. A minute, pri ritmu kojim rade moderni CI/CD cjevovodi, prekidaju dogovor.
Zašto Go mijenja izračun
Go je osmišljen od samog početka za točno onu vrstu posla koju zahtijeva analiza ovisnosti: brzi I/O datoteka, izvrsne primitive konkurentnosti i minimalno opterećenje za vrijeme izvođenja. Tamo gdje Node.js obrađuje zadatak po jedan u jednoj niti i oslanja se na povratne pozive i obećava lažiranje paralelizma, Go može proizvesti tisuće goroutina koje se istinski izvode paralelno na svim dostupnim CPU jezgrama. Za zadatak koji uključuje čitanje stotina datoteka, raščlanjivanje njihovih AST-ova i izgradnju grafikona odnosa simbola, ova arhitektonska razlika izravno se prevodi u performanse zidnog sata.
Ubrzanje od 20x koje tvrdi Rev-dep nije magija — to se događa kada pravi jezik uskladite s pravim problemom. Kompilirana priroda Goa također znači da nema kazne za zagrijavanje JIT-a. Od hladnog pokretanja do potpune analize, Go binarni sustav radi s gotovo vršnim performansama. Praktična implikacija je da analiza koja je trajala 90 sekundi u alatu temeljenom na čvorovima može završiti za manje od 5 sekundi u dobro implementiranom Go ekvivalentu. To je razlika između provjere koju programeri preskaču jer "traje zauvijek" i one koja se pokreće pri svakom uvrštavanju, a da nitko ne primijeti dodatni trošak.
"Najbolji alat za razvojne programere je onaj koji se makne s puta. Ako vaš paket za analizu doda tri minute svakom CI cjevovodu, programeri će naći načina da to preskoče. Brzinu nije lijepo imati — ona je preduvjet za usvajanje."
Poslovni argument za higijenu baze koda
Mrtvi kod nije samo estetski problem programera — on ima konkretne poslovne posljedice koje se s vremenom povećavaju. Razmotrite koliko napuhane baze kodova zapravo koštaju organizacije:
- Dulje vrijeme izrade koje usporava razvojne kanale i smanjuje broj izdanja koje tim može sigurno otpremiti tjedno
- Veće kognitivno opterećenje za onboarding inženjere, koji moraju provesti tjedne u razlikovanju aktivnih obrazaca od napuštenih
- Povećane veličine paketa koje štete performansama aplikacija, posebno u web aplikacijama gdje svaki kilobajt utječe na vrijeme učitavanja i stope konverzije
- Proširenje sigurnosne površine — mrtvi kod koji još uvijek sadrži ovisnosti i dalje je vektor za ranjivosti u tim paketima
- Napuhanost paketa testova gdje se testovi za uklonjenu funkcionalnost nastavljaju izvoditi, troše CI minute i povremeno padaju na zbunjujuće načine
- Lažni signali složenosti koji otežavaju donošenje arhitektonskih odluka jer je nejasno što je nosivo, a što zastarjelo
Studija grupe DevOps Research and Assessment (DORA) iz 2023. otkrila je da su timovi sa snažnom praksom kvalitete koda — uključujući redovito uklanjanje mrtvog koda — isporučivali 2,4x češće i imali 7x niže stope neuspjeha promjena od timova koji su dopustili da se tehnički dugovi akumuliraju. Korelacija nije slučajna. O čistim bazama kodova lakše je razmišljati, lakše ih je testirati i lakše ih je sigurno mijenjati.
Za tvrtke koje grade na platformama kao što je Mewayz — koja opskrbljuje 138.000 korisnika u 207 različitih poslovnih modula, od CRM-a i obračuna plaća do upravljanja voznim parkom i alata za povezivanje u biografiji — zdravlje baze koda ima višestruke uloge. Kada vaša platforma obuhvaća toliko funkcionalnih domena, integracijska površina između modula je ogromna. Neiskorišteni izvozi u osnovnom modulu mogu stvoriti lažna očekivanja za ovisne module, pokrenuti nepotrebno ponovno iscrtavanje u sloju korisničkog sučelja i zakomplicirati grafikon ovisnosti na načine koji buduće promjene čine riskantnim.
Integriranje analize ovisnosti u moderne razvojne tijekove
Prava snaga brzih alata kao što je Rev-dep nije jednokratno čišćenje koje omogućuje — to je mogućnost izvođenja kontinuirane analize kao dijela vašeg normalnog razvojnog ciklusa. Kada skeniranje mrtvog koda traje 4 sekunde umjesto 4 minute, možete ga dodati svojim pre-commit hookovima. Kada prođe 4 sekunde umjesto 4 minute, vaš CI cjevovod može propasti zahtjev za povlačenjem koji uvodi nove neiskorištene izvoze umjesto da ih pusti da se tiho akumuliraju.
💡 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 →Ovaj prijelaz s "tromjesečnog događaja čišćenja" na "stalna vrata kvalitete" analogan je onome što se dogodilo kada su linteri postali dovoljno brzi da se pokrenu pri svakom pritisku tipke u IDE-u. Prije nego što je ESLint radio u stvarnom vremenu, stil koda bio je nametnut periodičnim pregledima koda. Nakon toga, postalo je ambijentalno — dio povratne sprege koju su programeri iskusili dok su pisali kod, a ne nakon. Brza analiza ovisnosti može stvoriti isti pritisak na kvalitetu okoline oko mrtvog koda.
Postavljanje ovog tijeka rada obično uključuje tri komponente:
- Osnovna analiza: Pokrenite alat na svojoj trenutnoj bazi koda da biste razumjeli opseg postojećeg mrtvog koda. Ne pokušavajte popraviti sve odjednom — sortirajte prema modulu i odredite prioritet prema riziku.
- Provedba CI-ja: Dodajte analizu u svoj cjevovod s pragom — ne uspjejte na svim novouvedenim neiskorištenim izvozima, ali nemojte uspjeti na postojećim dok ih ne očistite.
- Planirani sprintovi čišćenja: Koristite rezultate alata za usmjeravanje redovnog čišćenja, praćenje broja mrtvih kodova kao metriku zdravlja tima tijekom vremena.
Što Go Tooling Renaissance signalizira za SaaS graditelje
Rev-dep je dio šireg obrasca u alatima za razvojne programere: visokoučinkovite alternative uvriježenim JavaScript alatima, ugrađenim u Go ili Rust, pojavljuju se u svakoj kategoriji. Biome je zamijenio ESLint i Prettier za mnoge timove. Turbopack i Rspack jedu Webpackov ručak. Bun je izazov za sam Node.js. Zajednička nit je da ovi alati ne nude samo inkrementalna poboljšanja – oni nude postupna poboljšanja funkcija koja mijenjaju ono što je praktično.
Za SaaS tvrtke koje grade složene proizvode s više modula, ova renesansa alata ima izravne implikacije na brzinu inženjeringa. Mewayzova arhitektura od 207 modula — koja obuhvaća sve, od ljudskih resursa i obračuna plaća do sustava rezervacija i analitičkih nadzornih ploča — predstavlja upravo onu vrstu velike, međusobno povezane baze koda gdje brza, precizna analiza ovisnosti postaje operativno kritična. Kada bi promjena zajedničkog uslužnog modula teoretski mogla proći kroz desetke modula značajki, imati gotovo trenutnu vidljivost u stvarnom grafikonu ovisnosti nije samo zgodno – to je vrsta infrastrukture koja sprječava skupe proizvodne incidente.
Mogućnost odgovora "što zapravo koristi ovu funkciju" za manje od pet sekundi umjesto pet minuta mijenja način na koji inženjeri donose odluke. Smanjuje troškove istraživanja, što znači da inženjeri češće istražuju, što znači da donose bolje odluke. Ovo je složeni povrat ulaganja u brzi alat koji se često zanemaruje kada organizacije razmišljaju o potrošnji na produktivnost programera.
Učiniti uklanjanje mrtvog koda dijelom vaše inženjerske kulture
Tehnologija sama po sebi ne gradi čiste baze kodova – kultura to čini. Alati kao što je Rev-dep pružaju mogućnost, ali pretvaranje te sposobnosti u dosljednu praksu zahtijeva organizacijsku predanost. Najučinkovitiji timovi tretiraju metriku mrtvog koda na isti način na koji tretiraju pokrivenost testom: kao vidljivi, praćeni pokazatelj zdravlja baze koda koji se pregledava na inženjerskim sastancima i uzima u obzir pri planiranju sprinta.
Neke posebne kulturne prakse koje dobro funkcioniraju uključuju određivanje "dana za brisanje koda" — periodičnih događaja gdje je izričiti cilj ukloniti kod, a ne dodati ga. Netlify je ovo slavno igrificirao pokretanjem ploča s najboljim rezultatima praćenja izbrisanih linija mreže. Stripe je javno pisao o svojoj praksi tretiranja brisanja koda kao prvorazrednog inženjerskog doprinosa, jednake vrijednosti radu na značajkama. Potrebna promjena načina razmišljanja je prepoznavanje da je najbolji kod kod koji ne postoji: svaki redak koji ne napišete je redak koji nikada ne morate održavati, testirati, ispravljati pogreške ili objašnjavati novom zaposleniku.
Za proizvodne tvrtke koje upravljaju složenim poslovnim operacijama, paralela izvan inženjerstva jednako je poučna. Ista disciplina koja baze kodova čini zdravijima - redovite revizije, jasno vlasništvo, uklanjanje stvari koje nitko ne koristi - čini i poslovne procese zdravijima. Platforme kao što je Mewayz izgrađene su upravo kako bi tvrtkama pružile takvu operativnu jasnoću: objedinjeni pogled na to koji se alati koriste, koji tijekovi rada generiraju vrijednost i gdje se gomila organizacijska mrtva težina. Bez obzira nadzirate li izvoz neiskorištenog softvera ili neiskorištene poslovne procese, temeljna disciplina je identična.
Alati postaju brži, petlje povratnih informacija sve su čvršće, a timovi koji danas ulažu u higijensku infrastrukturu baze koda grade prednost složenosti koja će se godinama isplatiti. Rev-dep i njegova kohorta Go-powered razvojnih alata nisu samo zanimljiva mjerila — oni su sloj infrastrukture koji omogućuje održivu brzinu softvera. A u svijetu u kojem je brzina ponavljanja primarna konkurentska prednost softverskih tvrtki, to nije periferna briga. To je cijela igra.
Često postavljana pitanja
Što čini Rev-dep bržim od knip.dev?
Rev-dep je ugrađen u Go, kompajlirani sistemski jezik optimiziran za konkurentnost i sirovu brzinu izvršavanja, dok knip.dev radi na Node.js. Ova arhitektonska razlika omogućuje Rev-depu da analizira grafikone ovisnosti i otkriva mrtvi kod do 20x brže. Za velike monorepoe ili složene baze kodova — kao što je arhitektura od 207 modula koja pokreće Mewayzov poslovni OS na app.mewayz.com — taj jaz u izvedbi pretvara se u uštedu stvarnog vremena pri svakom pokretanju CI-ja.
Koliko mrtvog koda akumulira tipičan rastući projekt?
Studije i anegdotska izvješća inženjerskih timova sugeriraju da zrele baze kodova mogu sadržavati od 10% do 35% neiskorištenog ili nedostupnog koda. Problem se povećava kako se timovi povećavaju — značajke se ukidaju, API-ji se mijenjaju, a moduli se napuštaju bez čišćenja. Platforme kao što je Mewayz, koja konsolidira više od 207 poslovnih modula u jedan operativni sustav od 19 USD/mj., uvelike se oslanjaju na sustavno otkrivanje mrtvog koda kako bi baza koda bila čista i održiva.
Je li Rev-dep prikladan za timove koji ne koriste JavaScript ili TypeScript?
Rev-dep trenutno je fokusiran na JavaScript i TypeScript ekosustave, što ga čini izravnom alternativom knip.dev za ta okruženja. Podrška za dodatne jezike može se proširiti kako projekt sazrijeva. Ako vaš tim izrađuje proizvode temeljene na webu ili SaaS alate — slično kao što Mewayz isporučuje svoj puni poslovni OS na app.mewayz.com — a vaš je skup prepun JS/TS-a, Rev-dep je danas vrijedan procjene kao dijela vašeg alata za razvojne programere.
Mogu li integrirati Rev-dep u svoj postojeći CI/CD kanal?
Da. Rev-dep je dizajniran kao CLI alat, što ga čini jednostavnim za uključivanje u bilo koji CI/CD cjevovod zajedno s vašim postojećim koracima lintinga i testiranja. Njegova prednost u brzini posebno je vrijedna u automatiziranim cjevovodima gdje brže povratne sprege smanjuju vrijeme čekanja programera. Bez obzira pokrećete li lean startup ili upravljate potpuno opremljenom platformom kao što je Mewayzov poslovni OS od 19 USD/mj., integracija analize mrtvog koda u vaš cjevovod pomaže u provođenju higijene baze koda pri svakom spajanju.
We use cookies to improve your experience and analyze site traffic. Cookie Policy