HN göstər: Rev-dep – Go-da 20x daha sürətli knip.dev alternativ quruluşu
Şərhlər
Mewayz Team
Editorial Team
Hər Böyüyən Proqram Qrupu üçün Gizli Vergi
Kifayət qədər uzun müddət davam edən hər bir proqram layihəsi nəticədə eyni sakit böhranla üzləşir: kod bazası komandanın anlaya biləcəyindən daha sürətlə böyüməyə başlayır. Heç kimin çağırmadığı funksiyalar, 2022-ci ildə göndərilən və səssizcə köhnəlmiş funksiya üçün yaradılan ixraclar, diskdə yaşayan, lakin heç vaxt brauzerə çatmayan komponentlər. Bu səliqəsizlik deyil - fizikadır. Komandalar sürətlə hərəkət edir, tələblər dəyişir və entropiya amansızdır. Sual kod bazanızda ölü kodun olub-olmaması deyil. Sual onun hazırda sizə nə qədər başa gəldiyidir.
Google-un mühəndislik məhsuldarlığı qrupunun araşdırmasına görə, tərtibatçılar yeni funksionallıq yazmaqdansa, mövcud kodu oxumaq və anlamaq üçün orta hesabla kodlaşdırma vaxtının 42%-ni sərf edirlər. Mövcud kodda artıq heç bir məqsədə xidmət etməyən minlərlə sətir daxil olduqda, bu faiz daha da yüksəlir. On mühəndisdən ibarət komanda üçün bu, faktiki olaraq dörd tam ştatlı işçinin məhsuldar heç nə etməməsi deməkdir – tənbəl olduqları üçün deyil, alətlərinin proqram təminatının köhnəldiyi sürətə uyğun gəlmədiyi üçün.
Buna görə də Go və Rust kimi sistem dilləri üzərində qurulmuş inkişaf etdirici alətlərinin yeni dalğası mühəndislik dairələrində əsl həyəcan yaradır. Rev-dep kimi alətlər – populyar JavaScript əsaslı knip.dev-dən 20 dəfə daha sürətli işlədiyini iddia edən əks asılılıq analizatoru – sadəcə artımlı təkmilləşmədən daha çoxunu təmsil edir. Onlar inkişaf prosesinin özünü necə alət etdiyimizə dair əsaslı şəkildə yenidən düşünməyə işarə edir.
Əks asılılıq təhlili əslində nə edir
Sürətin niyə bu qədər vacib olduğunu anlamadan əvvəl, bu, asılılıq təhlili alətlərinin əslində nə etdiyini anlamağa kömək edir. JavaScript və ya TypeScript layihəsində hər bir fayl digər fayllardan idxal edilir. Moduldan ixrac edilən hər bir funksiya, sinif və ya sabit potensial asılılıq yaradır – kod bazasının digər hissələrinin etibar edə biləcəyi bir şey. "Əks" asılılıq təhlili bu perspektivi dəyişdirir: "bu modul nədən asılıdır" sualının əvəzinə "bu moduldan nə asılıdır?"
Əgər ikinci sualın cavabı "heç nə"dirsə, siz ölü kod tapmısınız. İdxal olunmayan ixrac israfdır. Heç bir şey çağırmayan bir funksiya aylıq faiz dərəcəsi ilə texniki borcdur. Tərs asılılıq alətləri sistematik olaraq bütün layihə qrafikinizi gəzdirin, modullar arasında hər bir əlaqənin xəritəsini çıxarın və daxilolma bağlantısı olmayan qovşaqları yerləşdirin. Nəticə kod bazanızda təhlükəsiz şəkildə silinə bilən hər şeyin dəqiq auditidir.
Knip.dev bunu JavaScript və TypeScript layihələri üçün yaxşı edir və cəmiyyətdə geniş hörmətə malikdir. Lakin o, JavaScript-də yazılmışdır, yəni o, Node.js üzərində işləyir, bu o deməkdir ki, o, geniş miqyaslı fayl sistemi keçidi və simvol təhlili apararkən Node-un bütün tək yivli performans məhdudiyyətlərini miras alır. 500 faylı olan bir layihə üçün bu yaxşıdır. 50.000 faylı olan bir layihə üçün - real müəssisənin SaaS məhsullarını gücləndirən monorepo növü - təhlil bir neçə dəqiqə çəkə bilər. Müasir CI/CD boru kəmərlərinin fəaliyyət göstərdiyi kadansda dəqiqələr bir sövdələşmədir.
Niyə Go Hesablamanı Dəyişdirir
Go tamamilə asılılıq təhlilinin tələb etdiyi iş yükü növü üçün sıfırdan hazırlanıb: sürətli fayl giriş/çıxışı, əla paralellik primitivləri və minimum icra vaxtı əlavə məsrəfi. Node.js-in eyni anda bir tapşırığı tək ipdə işlədiyi və geri çağırışlara etibar etdiyi və saxta paralellik vəd etdiyi halda, Go bütün mövcud CPU nüvələrində həqiqətən paralel olaraq icra edilən minlərlə goroutinləri yarada bilər. Yüzlərlə faylı oxumaq, onların AST-lərini təhlil etmək və simvol əlaqələrinin qrafikini qurmaqdan ibarət olan tapşırıq üçün bu memarlıq fərqi birbaşa divar saatı performansına çevrilir.
Rev-dep-in iddia etdiyi 20x sürətlənmə sehrli deyil – bu, düzgün problemə düzgün dili uyğunlaşdırdığınız zaman baş verənlərdir. Go-nun tərtib edilmiş təbiəti də JIT istiləşmə cəzasının olmaması deməkdir. Soyuq başlanğıcdan tam təhlilə qədər, Go binar zirvəyə yaxın performansda işləyir. Praktiki nəticə ondan ibarətdir ki, Node-əsaslı alətdə 90 saniyə çəkmiş təhlil yaxşı tətbiq edilmiş Go ekvivalentində 5 saniyədən az müddətdə tamamlana bilər. Tərtibatçıların "əbədi vaxt apardığı" üçün ötürdükləri yoxlama ilə heç kimin yükü fərq etmədən hər öhdəliyi yerinə yetirən yoxlama arasındakı fərq budur.
"Ən yaxşı tərtibatçı aləti yoldan çıxan alətdir. Əgər təhlil dəstiniz hər CI boru xəttinə üç dəqiqə əlavə edərsə, tərtibatçılar onu ötürməyin yollarını tapacaqlar. Sürət xoşagəlməz bir şey deyil - bu, mənimsəmək üçün ilkin şərtdir."
Kod bazası gigiyenasına dair biznes nümunəsi
Ölü kod sadəcə tərtibatçının estetik problemi deyil - onun zamanla mürəkkəbləşən konkret biznes nəticələri var. Şişirilmiş kod bazalarının təşkilatlara əslində nəyə başa gəldiyini düşünün:
- Daha uzun tikinti vaxtları yerləşdirmə boru kəmərlərini yavaşlatır və komandanın həftədə təhlükəsiz şəkildə göndərə biləcəyi buraxılışların sayını azaldır Aktiv nümunələri tərk edilmiş nümunələrdən ayırmaq üçün həftələr sərf etməli olan təyyarə mühəndisləri üçün
- daha yüksək koqnitiv yük
- Artan paket ölçüləri, xüsusən də hər kilobaytın yükləmə vaxtlarına və çevrilmə dərəcələrinə təsir etdiyi veb tətbiqlərdə tətbiqin performansına zərər verir
- Təhlükəsizlik səthinin genişləndirilməsi — hələ də asılılıqları ehtiva edən ölü kod hələ də həmin paketlərdə zəifliklər üçün vektordur Silinmiş funksionallıq üçün testlərin davam etdiyi, CI dəqiqələri sərf etdiyi və bəzən çaşdırıcı üsullarla uğursuz olduğu
- test paketinin şişməsi
- Yanlış mürəkkəblik siqnalları memarlıq qərarlarını çətinləşdirir, çünki nəyin yük daşıyan və nəyin köhnəldiyi aydın deyil
DevOps Tədqiqat və Qiymətləndirmə (DORA) qrupu tərəfindən 2023-cü ildə aparılan bir araşdırma aşkar etdi ki, güclü kod keyfiyyəti praktikasına malik olan komandalar, o cümlədən müntəzəm ölü kodun çıxarılması - texniki borcun yığılmasına imkan verən komandalarla müqayisədə 2,4 dəfə daha tez göndərilir və 7 dəfə aşağı dəyişiklik uğursuzluq nisbətinə malikdir. Korrelyasiya təsadüfi deyil. Təmiz kod bazalarını əsaslandırmaq, sınaqdan keçirmək və təhlükəsiz şəkildə dəyişmək daha asandır.
Mewayz kimi platformalar üzərində qurulan bizneslər üçün – bu, CRM və əmək haqqı fondundan donanma idarəçiliyinə və bio-in-bio alətlərinə qədər 207 fərqli biznes modulu üzrə 138.000 istifadəçiyə güc verir – kod bazası sağlamlığı bir neçə qat artırdı. Platformanız bir çox funksional domenləri əhatə etdikdə, modullar arasında inteqrasiya səthi çox böyükdür. Əsas modulda istifadə olunmayan ixraclar asılı modullar üçün yanlış gözləntilər yarada, UI qatında lazımsız renderləri işə sala və gələcək dəyişiklikləri riskli edəcək şəkildə asılılıq qrafikini çətinləşdirə bilər.
Asılılıq təhlilinin müasir inkişaf iş axınlarına inteqrasiyası
Rev-dep kimi sürətli alətlərin əsl gücü onun imkan verdiyi birdəfəlik təmizləmə deyil - bu, normal inkişaf dövrünüzün bir hissəsi kimi fasiləsiz təhlil aparmaq bacarığıdır. Ölü kodun skan edilməsi 4 dəqiqə əvəzinə 4 saniyə çəkdikdə, onu əvvəlcədən işləmə qarmaqlarınıza əlavə edə bilərsiniz. 4 dəqiqə əvəzinə 4 saniyə çəkdikdə, CI boru kəməriniz onların səssizcə yığılmasına icazə vermək əvəzinə yeni istifadə olunmamış ixracları təqdim edən çəkmə sorğusunu yerinə yetirə bilməz.
💡 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 →"Rüblük təmizləmə hadisəsi"ndən "davamlı keyfiyyət qapısı"na keçid, linterlər IDE-də hər düyməni basmaq üçün kifayət qədər sürətli olduqda baş verənlərə bənzəyir. ESLint real vaxt rejimində işləməzdən əvvəl kod üslubu dövri kod nəzərdən keçirilməsi ilə tətbiq edilirdi. Bundan sonra o, ətraf mühitə çevrildi — geribildirim döngəsinin tərtibatçılarının kod yazarkən yox, sonra yaşadıqlarının bir hissəsi. Sürətli asılılıq təhlili ölü kod ətrafında eyni mühit keyfiyyət təzyiqi yarada bilər.
Bu iş axınının qurulması adətən üç komponentdən ibarətdir:
- Bazal analiz: Mövcud ölü kodun miqyasını anlamaq üçün aləti cari kod bazanızla müqayisə edin. Hər şeyi bir anda düzəltməyə çalışmayın — modul üzrə təsnif edin və riskə görə prioritetləşdirin.
- CI-nin tətbiqi: Analizi həddi ilə boru kəmərinizə əlavə edin — yeni təqdim edilmiş istifadə olunmamış ixraclarda uğursuzluğa düçar olun, lakin onları təmizləyənə qədər mövcud olanlarda uğursuzluğa düçar olmayın.
- Planlaşdırılmış təmizləmə sprintləri: Zamanla komandanın sağlamlıq göstəricisi kimi ölü kod sayını izləyərək müntəzəm təmizləmə işlərinə rəhbərlik etmək üçün alətin çıxışından istifadə edin.
SaaS qurucuları üçün Go Tooling İntibah Siqnalları nələrdir
Rev-dep tərtibatçı alətlərində daha geniş nümunənin bir hissəsidir: Go və ya Rust-da qurulmuş JavaScript alətlərinə yüksək performanslı alternativlər hər kateqoriyada görünür. Biome bir çox komanda üçün ESLint və Prettier-i əvəz etdi. Turbopack və Rspack Webpack-in naharını yeyirlər. Bun Node.js-in özünə meydan oxuyur. Ümumi cəhət ondan ibarətdir ki, bu alətlər təkcə artımlı təkmilləşdirmələr təklif etmir, həm də praktik olanı dəyişdirən addım-addım funksiya təkmilləşdirmələri təklif edir.
Mürəkkəb, çox modullu məhsullar yaradan SaaS şirkətləri üçün bu alət intibahı mühəndislik sürətinə birbaşa təsir göstərir. Mewayz-in 207 modul arxitekturası - HR və əmək haqqı cədvəlindən tutmuş sifariş sistemləri və analitik tablosuna qədər hər şeyi əhatə edir - sürətli, dəqiq asılılıq təhlilinin əməliyyat baxımından kritik hala gəldiyi böyük, bir-biri ilə əlaqəli kod bazasını təmsil edir. Paylaşılan kommunal modula edilən dəyişiklik nəzəri cəhətdən onlarla xüsusiyyət modulu arasında dalğalana bildikdə, faktiki asılılıq qrafikinə yaxın görünmə təkcə rahat deyil, həm də bahalı istehsal insidentlərinin qarşısını alan infrastruktur növüdür.
"Bu funksiyadan əslində nə istifadə edir" sualına beş dəqiqədən daha az beş saniyə ərzində cavab vermək bacarığı mühəndislərin qərar qəbul etmə tərzini dəyişir. Bu, təhqiqat xərclərini azaldır, yəni mühəndislər daha tez-tez araşdırırlar, yəni daha yaxşı qərarlar verirlər. Bu, təşkilatlar developer məhsuldarlığı xərcləri haqqında düşünəndə tez-tez diqqətdən kənarda qalan sürətli alətlərə investisiyanın əlavə gəliridir.
Ölü Kodun aradan qaldırılmasını Mühəndislik Mədəniyyətinizin Bir hissəsinə çevirmək
Texnologiya təkcə təmiz kod bazaları yaratmır - mədəniyyət edir. Rev-dep kimi alətlər qabiliyyəti təmin edir, lakin bu qabiliyyəti ardıcıl təcrübəyə çevirmək təşkilati öhdəlik tələb edir. Ən effektiv komandalar ölü kod göstəricilərinə test əhatəsinə baxdıqları kimi yanaşır: mühəndislik görüşlərində nəzərdən keçirilən və sprint planlaşdırılmasına daxil edilən kod bazasının sağlamlığının görünən, izlənilən göstəricisi kimi.
Yaxşı işləyən bəzi spesifik mədəni təcrübələrə "kodun silinmə günləri"nin təyin edilməsi daxildir - açıq məqsəd kodu əlavə etmək əvəzinə onu silmək olan dövri tədbirlər. Netlify, silinmiş xalis xətləri izləyən liderlər lövhələrini işlətməklə bunu məşhur şəkildə oyunlaşdırdı. Stripe, kodun silinməsini xüsusiyyət işinə bərabər dəyərdə birinci dərəcəli mühəndislik töhfəsi kimi qəbul etmə təcrübələri haqqında açıq şəkildə yazdı. Tələb olunan zehniyyət dəyişikliyi ən yaxşı kodun mövcud olmayan kod olduğunu qəbul etməkdir: yazmadığınız hər sətir heç vaxt saxlamağa, sınaqdan keçirməyə, sazlamalı və ya yeni işəgötürənə izah etməməli olduğunuz sətirdir.
Mürəkkəb biznes əməliyyatlarını idarə edən məhsul şirkətləri üçün mühəndislikdən kənar paralellik eyni dərəcədə ibrətamizdir. Kod bazalarını daha sağlam edən eyni intizam - müntəzəm auditlər, aydın mülkiyyət, heç kimin istifadə etmədiyi şeylərin aradan qaldırılması - biznes proseslərini də daha sağlam edir. Mewayz kimi platformalar bizneslərə bu cür əməliyyat aydınlığı vermək üçün dəqiq şəkildə qurulmuşdur: hansı alətlərin istifadə edildiyi, hansı iş axınlarının dəyər yaratdığı və təşkilati yükün yığıldığı yerlərin vahid görünüşü. İstifadə edilməmiş proqram təminatı ixracını və ya istifadə olunmamış biznes proseslərini yoxlamağınızdan asılı olmayaraq, əsas intizam eynidir.
Alətlər sürətlənir, rəy döngələri daha da sıxlaşır və bu gün kod bazası gigiyena infrastrukturuna sərmayə qoyan komandalar illərlə dividendlər ödəyəcək əlavə üstünlüklər yaradırlar. Rev-dep və onun Go-powered developer alətləri kohortu sadəcə maraqlı meyarlar deyil – onlar davamlı proqram sürətini mümkün edən infrastruktur təbəqəsidir. İterasiya sürətinin proqram təminatı müəssisələri üçün əsas rəqabət üstünlüyü olduğu bir dünyada bu, periferik narahatlıq deyil. Bu, bütün oyundur.
Tez-tez verilən suallar
Rev-dep-i knip.dev-dən daha sürətli edən nədir?
Rev-dep paralellik və xam icra sürəti üçün optimallaşdırılmış tərtib edilmiş sistem dili olan Go-da qurulub, knip.dev isə Node.js üzərində işləyir. Bu memarlıq fərqi Rev-dep-ə asılılıq qrafiklərini təhlil etməyə və ölü kodu 20 dəfə daha tez aşkar etməyə imkan verir. Böyük monoreposlar və ya mürəkkəb kod bazaları üçün - app.mewayz.com saytında Mewayz-in biznes ƏS-ni gücləndirən 207 modullu arxitektura kimi - bu performans boşluğu hər bir CI əməliyyatında yadda saxlanan real vaxta çevrilir.
Tipik inkişaf edən layihə nə qədər ölü kod toplayır?
Mühəndislik qruplarının araşdırmaları və anekdot hesabatları göstərir ki, yetkin kod bazaları 10%-dən 35%-ə qədər istifadə olunmayan və ya əlçatmaz kodu daşıya bilər. Problem komandaların miqyası kimi birləşir - xüsusiyyətlər köhnəlir, API-lər dəyişir və modullar təmizlənmədən tərk edilir. 207-dən çox biznes modulunu ayda 19 ABŞ dolları dəyərində vahid əməliyyat sistemində birləşdirən Mewayz kimi platformalar kod bazasını yalın və davamlı saxlamaq üçün sistematik ölü kodun aşkarlanmasına çox etibar edir.
Rev-dep JavaScript və ya TypeScript istifadə etməyən komandalar üçün uyğundurmu?
Rev-dep hazırda JavaScript və TypeScript ekosistemlərinə fokuslanıb və onu həmin mühitlər üçün knip.dev-ə birbaşa alternativ edir. Layihə yetkinləşdikcə əlavə dillərə dəstək genişlənə bilər. Komandanız veb-əsaslı məhsullar və ya SaaS alətləri qurursa - Mewayz-in app.mewayz.com saytında tam biznes ƏS-ni necə təqdim etdiyinə bənzər - və yığınınız JS/TS-ağırdırsa, Rev-dep bu gün tərtibatçı alətlər silsiləsinin bir hissəsi kimi qiymətləndirilməyə dəyər.
Mən Rev-dep-i mövcud CI/CD boru xəttimə inteqrasiya edə bilərəmmi?
Bəli. Rev-dep, mövcud linting və sınaq addımlarınızla yanaşı istənilən CI/CD boru xəttinə düşməyi asanlaşdıran CLI aləti kimi hazırlanmışdır. Onun sürət üstünlüyü, daha sürətli əks əlaqə dövrələrinin tərtibatçının gözləmə müddətlərini azalddığı avtomatlaşdırılmış boru kəmərlərində xüsusilə qiymətlidir. İstər arıq bir startap işlədirsiniz, istərsə də Mewayz-in aylıq 19 dollarlıq biznes ƏS-i kimi tam funksiyalı platformanı idarə edirsinizsə, ölü kod analizini boru kəmərinizə inteqrasiya etmək hər birləşmə zamanı kod bazası gigiyenasına riayət etməyə kömək edir.
We use cookies to improve your experience and analyze site traffic. Cookie Policy