Hacker News

Nuna HN: Rev-dep - 20x sauri knip.dev madadin ginawa a cikin Go

Sharhi

15 min read Via github.com

Mewayz Team

Editorial Team

Hacker News

Harajin da aka ɓoye akan kowace Ƙungiya mai haɓaka software

Kowane aikin software da ya rayu tsawon lokaci yana fuskantar rikici iri ɗaya: codebase yana farawa da sauri fiye da yadda ƙungiyar zata iya fahimtar ta. Ayyuka ba wanda ya kira, fitarwar da aka ƙirƙira don fasalin da aka aika a cikin 2022 kuma an yanke shi cikin nutsuwa, abubuwan da ke rayuwa akan faifai amma ba su kai ga mai bincike ba. Wannan ba rashin hankali bane - kimiyyar lissafi ce. Ƙungiyoyi suna tafiya da sauri, buƙatun suna canzawa, kuma entropy ba shi da iyaka. Tambayar ba shine ko lambar lambar ku tana da matattun lambar ba. Tambayar ita ce, nawa ne ake kashe ku a yanzu.

Bisa ga bincike daga ƙungiyar haɓaka aikin injiniya ta Google, masu haɓakawa suna ciyar da matsakaicin 42% na lokacin shigar su karantawa da fahimtar lambar data kasance maimakon rubuta sabbin ayyuka. Lokacin da lambar da ke akwai ta ƙunshi dubunnan layukan da ba sa yin amfani da kowane manufa, wannan adadin ya skes ma mafi girma. Ga ƙungiyar injiniyoyi goma, hakan yana da kyau ma'aikata huɗu na cikakken lokaci ba sa yin wani abu mai amfani - ba don malalaci ba, amma saboda kayan aikinsu ba su dace da saurin da software ke da shekaru ba.

Wannan shine dalilin da ya sa sabon motsi na kayan aikin haɓakawa wanda aka gina akan tsarin yaruka kamar Go da Rust yana haifar da farin ciki na gaske a cikin da'irar injiniya. Kayayyakin aiki kamar Rev-dep - mai nazarin dogaro da baya wanda yayi iƙirarin gudu 20x saurifiye ​​da mashahurin tushen JavaScript knip.dev - yana wakiltar fiye da haɓaka haɓaka kawai. Suna nuna alamar sake tunani game da yadda muke amfani da tsarin ci gaba da kansa.

Abinda Binciken Dogara Ya Yi A Haƙiƙa

Kafin fahimtar dalilin da yasa saurin yana da mahimmanci, yana taimakawa wajen fahimtar abin da kayan aikin bincike na dogaro ke yi. A cikin aikin JavaScript ko TypeScript, kowane fayil yana shigo da shi daga wasu fayiloli. Kowane aiki, aji, ko akai-akai wanda ake fitarwa daga tsarin ƙira yana haifar da yuwuwar dogaro - wani abu da sauran sassan codebase na iya dogara da shi. Binciken dogara na "Reverse" yana jujjuya wannan hangen nesa: maimakon tambayar "menene wannan tsarin ya dogara da shi," yana tambaya "menene ya dogara da wannan tsarin?"

Idan amsar wannan tambaya ta biyu “babu komai,” kun sami mataccen lambar. Fitar da babu abin da ya shigo da ita asara ce. Ayyukan da babu abin da ke kira bashi ne na fasaha tare da adadin ribar kowane wata. Juya kayan aikin dogaro da tsari suna tafiya gabaɗayan jadawalin aikinku, taswira kowace alaƙa tsakanin kayayyaki, da shimfida nodes waɗanda basu da haɗin shiga. Sakamako shine cikakken tantance duk wani abu da ke cikin codebase wanda za'a iya cire shi cikin aminci.

Knip.dev yayi wannan da kyau don ayyukan JavaScript da TypeScript, kuma ana mutunta shi sosai a cikin al'umma. Amma an rubuta shi a cikin JavaScript, wanda ke nufin yana gudana akan Node.js, wanda ke nufin ya gaji duk matsalolin aikin Node guda ɗaya lokacin yin babban tsarin tsarin fayil da bincike na alamar. Don aiki tare da fayiloli 500, wannan yayi kyau. Don aiki tare da fayilolin 50,000 - nau'in monorepo wanda ke ba da ikon samfuran SaaS na kasuwanci na gaske - bincike na iya ɗaukar mintuna. Kuma mintuna, a bututun CI/CD na zamani da ke aiki a, dillali ne.

Me yasa Go ke Canza Lissafi

Go an ƙera shi daga ƙasa har zuwa ainihin nau'in aikin da bincike na dogaro ke buƙata: Fayil mai sauri I/O, kyawawan abubuwan da suka dace, da ƙaramin lokacin gudu. Inda Node.js ke aiwatar da ɗawainiya ɗaya a lokaci ɗaya akan zaren guda kuma ya dogara da kira baya da alƙawarin yin daidaici na karya, Go na iya haifar da dubunnan goroutines waɗanda ke aiwatarwa da gaske a layi daya a cikin duk abubuwan da ke akwai na CPU. Don aikin da ya ƙunshi karanta ɗaruruwan fayiloli, tantance ASTs, da gina jadawali na alami, wannan bambancin gine-gine yana fassara kai tsaye zuwa aikin agogon bango.

Matsakaicin saurin 20x da Rev-dep ya yi ikirarin ba sihiri ba ne - abin da ke faruwa ne lokacin da kuka daidaita harshen da ya dace da matsalar da ta dace. Halin da aka haɗa na Go shima yana nufin babu hukuncin dumama JIT. Daga farkon sanyi zuwa cikakken bincike, Go binary yana aiki a kusan mafi girma. Ma'anar aiki ita ce binciken da ya ɗauki daƙiƙa 90 a cikin kayan aikin Node na iya kammalawa cikin ƙasa da daƙiƙa 5 a cikin ingantaccen aiki Go daidai. Wannan shine bambanci tsakanin cak ɗin da masu haɓakawa ke tsallakewa saboda "yana ɗauka har abada" da kuma wanda ke gudana akan kowane alƙawari ba tare da kowa ya lura da abin da ke sama ba.

"Mafi kyawun kayan haɓakawa shine wanda ke fita daga hanya. Idan ɗakin binciken ku ya ƙara minti uku zuwa kowane bututun CI, masu haɓakawa za su nemo hanyoyin tsallake shi. Gudun ba abu ne mai kyau-don samun ba - shine abin da ake buƙata don ɗauka."

Batun Kasuwanci don Tsabtace Codebase

Matattu ba matsala ba ce kawai ta masu haɓakawa - tana da takamaiman sakamako na kasuwanci wanda ke haɓaka kan lokaci. Ka yi la'akari da abin da kumbura codebases a zahiri kudin ƙungiyoyi:

  • Lokacin ginawa mai tsayiwanda ke rage saurin tura bututun da kuma rage adadin sakin da tawagar za ta iya aikawa cikin aminci a kowane mako
  • Mafi girman nauyi mai hankalidon injiniyoyi masu hawa, waɗanda dole ne su kwashe makonni suna bambanta tsarin aiki daga waɗanda aka yi watsi da su
  • Ƙara girman gunguwanda ke cutar da aikin aikace-aikacen, musamman a cikin aikace-aikacen yanar gizo inda kowane kilobyte yana shafar lokutan lodi da ƙimar juzu'i
  • Faɗaɗa saman tsaro - matattun lambar da har yanzu ke ƙunshe da abin dogaro har yanzu yana haifar da lahani a cikin waɗannan fakitin
  • Test suite bloatinda gwaje-gwaje don cire aikin ke ci gaba da gudana, cinye mintuna CI, kuma lokaci-lokaci suna kasawa ta hanyoyi masu ruɗani
  • Alamomin rikice-rikice na ƙaryawanda ke sa yanke shawara na gine-gine da wahala saboda ba a san abin da ke ɗaukar nauyi da abin da ke cikin vestigial

A binciken 2023 da DevOps Research and Assessment (DORA) kungiyar gano cewa ƙungiyoyi da karfi code quality ayyuka - ciki har da na yau da kullum da matattu code cire - aika 2.4x akai-akaikuma yana da 7x ƙananan canje-canje gazawar ratesfiye da ƙungiyoyin da suka bar bashin fasaha ya tara. Daidaituwar ba ta zo daidai ba. Tsaftace ma'auni sun fi sauƙi don tunani, sauƙin gwadawa, da sauƙin canzawa cikin aminci.

Don kasuwancin ginawa akan dandamali kamarMewayz - wanda ke ba da ikon masu amfani da 138,000 a cikin nau'ikan kasuwanci daban-daban na 207 waɗanda suka kama daga CRM da biyan kuɗi zuwa sarrafa jiragen ruwa da kayan aikin haɗin-in-bio - lafiyar codebase ya ninka gungumomi. Lokacin da dandalin ku ya mamaye yawancin yankuna masu aiki, yanayin haɗin kai tsakanin kayayyaki yana da girma. Fitarwar da ba a yi amfani da ita ba a cikin ainihin tsarin na iya haifar da tsammanin karya don abubuwan dogaro, haifar da sake sakewa mara amfani a cikin layin UI, da rikitar da jadawalin dogaro ta hanyoyin da ke sa canje-canje na gaba mai haɗari.

Haɗin Binciken Dogaro Cikin Ayyukan Ci gaban Zamani

Haƙiƙanin ƙarfin kayan aiki mai sauri kamar Rev-dep ba shine tsaftacewar lokaci ɗaya ba - ikon gudanar da bincike na ci gaba a matsayin wani ɓangare na ci gaban ku na yau da kullun. Lokacin da mataccen lambar sikanin ya ɗauki daƙiƙa 4 maimakon mintuna 4, zaku iya ƙara shi zuwa maƙudan ku kafin aiwatarwa. Lokacin da ya ɗauki daƙiƙa 4 maimakon mintuna 4, bututun CI naku na iya gazawar buƙatun ja wanda ke gabatar da sabbin abubuwan da ba a yi amfani da su ba maimakon barin su taru cikin shiru.

💡 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 →
Wannan matsaya daga "lalacewar tsaftacewa na kwata-kwata" zuwa "ƙofa mai ci gaba" yana kama da abin da ya faru lokacin da linters suka yi saurin isa don gudu akan kowane maɓalli a cikin IDE. Kafin ESLint ya gudana a cikin ainihin-lokaci, an aiwatar da salon lambar ta sake dubawa na lokaci-lokaci. Bayan haka, ya zama yanayi - wani ɓangare na madaidaicin madauki na masu haɓakawa da suka samu yayin rubuta lambar, ba bayan ba. Binciken dogaro da sauri zai iya haifar da matsi mai inganci iri ɗaya a kusa da matattun lambar.

Kafa wannan aikin yana yawanci ya ƙunshi abubuwa uku:

  1. Bincike na asali: Gudanar da kayan aikin akan tushen lambar ku na yanzu don fahimtar ma'aunin matattun lambar da ke akwai. Kada ku yi ƙoƙarin gyara komai a lokaci ɗaya - rarrabewa ta module kuma ba da fifiko ta hanyar haɗari.
  2. I tilastawa CI: Ƙara bincike zuwa bututun ku tare da kofa - kasa kan duk wani sabon fitar da ba a yi amfani da shi ba, amma kar a gaza kan waɗanda ke akwai har sai kun tsaftace su.
  3. Tsarin tsaftar da aka tsara: Yi amfani da fitowar kayan aikin don jagorantar aikin tsaftacewa na yau da kullun, bin diddigin adadin matattun lambobin azaman ma'aunin lafiyar ƙungiyar a kan lokaci.

Abin da Go Tooling Renaissance Signals for SaaS Builders

Rev-dep wani yanki ne na babban tsari a cikin kayan aikin haɓakawa: manyan hanyoyin da za a bi don kafa kayan aikin JavaScript, waɗanda aka gina a cikin Go ko Tsatsa, suna bayyana a kowane rukuni. Biome ya maye gurbin ESLint da Prettier don ƙungiyoyi da yawa. Turbopack da Rspack suna cin abincin rana na Webpack. Bun yana ƙalubalantar Node.js kanta. Maganar gama gari ita ce waɗannan kayan aikin ba kawai suna ba da haɓaka haɓakawa ba - suna ba da haɓaka ayyukan mataki wanda ke canza abin da ke da amfani.

Ga kamfanonin SaaS da ke gina hadaddun, samfurori masu yawa, wannan farfadowa na kayan aiki yana da tasiri kai tsaye ga saurin injiniya. Mewayz's 207-module architecture - wanda ke tattare da komai daga HR da albashi zuwa tsarin yin rajista da dashboards na nazari - yana wakiltar daidai nau'in babban, haɗin haɗin gwiwa inda bincike na dogaro da sauri ya zama mai mahimmanci. Lokacin da canji zuwa tsarin mai amfani da aka raba zai iya tabarbare ta hanyar ɗimbin nau'ikan sifofi, samun hangen nesa kusa da ainihin abin dogaro ba kawai dacewa ba ne - nau'ikan abubuwan more rayuwa ne waɗanda ke hana abubuwan samarwa masu tsada.

Ikon amsa "abin da a zahiri ke amfani da wannan aikin" a cikin ƙasa da daƙiƙa biyar maimakon minti biyar yana canza yadda injiniyoyi suke yanke shawara. Yana rage farashin bincike, wanda ke nufin injiniyoyi suna yin bincike akai-akai, wanda ke nufin sun yanke shawara mafi kyau. Wannan ita ce haɓakar haɓakawa kan saka hannun jari a cikin kayan aiki mai sauri wanda galibi ana yin watsi da shi lokacin da ƙungiyoyi ke tunanin kashe kuɗin haɓaka kayan haɓaka.

Yin Kawar da Matattu Sashe na Al'adun Injiniya

Fasaha kadai ba ta gina tsattsauran ra'ayi - al'ada. Kayan aiki kamar Rev-dep suna ba da iyawa, amma juyar da wannan ƙarfin zuwa daidaitaccen aiki yana buƙatar sadaukarwar ƙungiya. Ƙungiyoyin da suka fi dacewa suna kula da ma'auni na matattun lambar kamar yadda suke bi da ɗaukar hoto: a matsayin bayyane, mai nuna alama na lafiyar codebase wanda ake bitar a cikin tarurrukan injiniya kuma an sanya su cikin tsara tsarin gudu.

Wasu takamaiman ayyuka na al'adu waɗanda ke aiki da kyau sun haɗa da zayyana "kwanakin share lambar" - abubuwan da ke faruwa na lokaci-lokaci inda maƙasudin maƙasudin shine cire lamba maimakon ƙarawa. Netlify ya shahara sosai ta hanyar gudanar da allunan jagora suna bin layin da aka goge. Stripe ya rubuta a bainar jama'a game da aikinsu na kula da gogewar lamba azaman gudummawar aikin injiniya na aji na farko, daidai da ƙimar fasalin aiki. Canjin tunani da ake buƙata shine sanin cewa mafi kyawun lambar ita ce lambar da ba ta wanzu: kowane layin da ba ku rubuta layin da ba za ku taɓa kiyayewa ba, gwadawa, gyarawa, ko bayyanawa ga sabon haya.

Ga kamfanonin samfur da ke sarrafa hadaddun ayyukan kasuwanci, daidaitawar a wajen aikin injiniya daidai yake da koyarwa. Irin wannan horon da ke sa codebases ya fi koshin lafiya - dubawa na yau da kullun, bayyanannen mallaka, kawar da abubuwan da babu wanda ke amfani da su - yana sa hanyoyin kasuwanci su fi koshin lafiya. Platforms kamarMewayzan gina su daidai don ba wa kasuwanci irin wannan nau'in bayyananniyar aiki: ra'ayi ɗaya na waɗanne kayan aikin da ake amfani da su, waɗanda ayyukan aiki ke haifar da ƙima, kuma inda matattun nauyin ƙungiyoyi ke tarawa. Ko kuna duba abubuwan fitar da software da ba a yi amfani da su ba ko hanyoyin kasuwanci da ba a yi amfani da su ba, ƙa'idar horo iri ɗaya ce.

Kayan aikin suna samun sauri, madaukai na amsa suna ƙara tauri, kuma ƙungiyoyin da ke saka hannun jari a cikin kayan aikin tsabtace codebase a yau suna gina fa'ida mai haɓakawa wacce za ta biya rabon shekaru. Rev-dep da ƙungiyarsa na kayan aikin haɓaka Go-powered ba ma'auni masu ban sha'awa ba ne kawai - su ne tsarin kayan aikin da ke ba da damar ci gaba da saurin software. Kuma a cikin duniyar da saurin juzu'i shine babban fa'idar gasa ga kasuwancin software, wannan ba abin damuwa bane. Duk wasan ne.

Tambayoyin da ake yawan yi

Me ya sa Rev-dep ya fi sauri fiye da knip.dev?

An gina Rev-dep a cikin Go, yaren tsarin da aka haɗa wanda aka inganta don daidaitawa da saurin aiwatarwa, yayin da knip.dev ke gudana akan Node.js. Wannan bambance-bambancen gine-ginen yana ba da damar Rev-dep don nazarin zane-zanen dogaro da gano mataccen lambar har zuwa 20x cikin sauri. Don manyan monorepos ko hadaddun codebases - kamar tsarin gine-ginen 207-module da ke ba da ikon kasuwanci na Mewayz a app.mewayz.com - wannan gibin aikin yana fassara zuwa ainihin lokacin da aka ajiye akan kowane gudu na CI.

Nawa ne matattun lambar da aikin haɓaka na yau da kullun ke tarawa?

Nazari da rahotannin labari daga ƙungiyoyin injiniya sun ba da shawarar cewa balagaggen codebases na iya ɗaukar ko'ina daga 10% zuwa 35% lambar da ba a iya amfani da ita ba. Matsalolin matsala kamar yadda ƙungiyoyin ma'auni - fasalulluka suna raguwa, APIs suna canzawa, kuma ana watsar da kayayyaki ba tare da tsaftacewa ba. Platforms kamar Mewayz, wanda ke haɓaka samfuran kasuwanci sama da 207 zuwa tsarin aiki guda $19/mo, sun dogara sosai akan gano mataccen lambar don kiyaye codebase jingina da kiyayewa.

Shin Rev-dep ya dace da ƙungiyoyin da basa amfani da JavaScript ko TypeScript?

Rev-dep a halin yanzu yana mai da hankali kan JavaScript da Tsarin halittu na TypeScript, yana mai da shi madadin kai tsaye zuwa knip.dev na waɗannan mahalli. Taimako don ƙarin harsuna na iya faɗaɗa yayin da aikin ya girma. Idan ƙungiyar ku ta gina samfuran tushen yanar gizo ko kayan aikin SaaS - kama da yadda Mewayz ke ba da cikakkiyar OS ɗin kasuwancin sa a app.mewayz.com - kuma tarin ku yana da nauyi JS/TS, Rev-dep ya cancanci a kimanta shi azaman ɓangare na kayan aikin haɓakar ku a yau.

Zan iya haɗa Rev-dep cikin bututun CI/CD ɗina?

Iya. An tsara Rev-dep azaman kayan aikin CLI, yana mai da shi kai tsaye don faɗowa cikin kowane bututun CI/CD tare da linting da matakan gwaji na yanzu. Amfanin saurin sa yana da mahimmanci musamman a cikin bututun mai sarrafa kansa inda madaukai masu saurin amsawa suna rage lokutan jira na masu haɓakawa. Ko kuna gudanar da ƙwaƙƙwaran farawa ko sarrafa cikakken dandamali kamar Mewayz's $19/mo business OS, haɗa matattun lambar bincike a cikin bututunku yana taimakawa tabbatar da tsaftar codebase a kowane haɗuwa.