Köhnə sistemi düzəltmək, yoxsa sıfırdan yenidən yazmaq?
Elvin Məmmədov, viasoft-un aparıcı mühəndis-memarı
Qərar «hər şey pisdir, yenidən yazmaq lazımdır» emosiyası ilə deyil, hesabla qəbul olunur: cari sistemin sahiblik dəyərini (dəstək, risklər, boş dayanmalar) dəyişdirmənin dəyəri üstəgəl miqrasiya riski ilə müqayisə edirlər. Əksər hallarda təkmilləşdirmə və mərhələli modernləşdirmə tam yenidən yazmaqdan sərfəlidir — amma həmişə yox. Əvvəlcə audit lazımdır ki, sistemin xəritəsini və hər modul üzrə dürüst hökmü versin. Aşağıda — bu qərarın satıcılar tərəfindən deyil, mühəndislər tərəfindən qəbul edildiyi çərçivə.
Sistemin auditini sifariş et → «Köhnə sistemi xilas et» lendinqi · Tapşırığı müzakirə et → Əlaqə
Legacy əslində nədir
«Legacy» — «köhnə» və ya «pis» kod deyil. Legacy — dəyişdirməsi qorxulu olan sistemdir, çünki onun necə qurulduğunu heç kim sona qədər anlamır. O, beş il əvvəl müasir steklə yazıla və yenə də legacy ola bilər — əgər müəllif gedib, sənəd yoxdursa, hər dəyişiklik isə lotereyadırsa.
Paradoks ondadır ki, legacy-sistem adətən işləyir və pul gətirir — yoxsa onu çoxdan söndürərdilər. Problem onun işləməməsində deyil, biznesin onun girovuna çevrilməsindədir: inkişaf etdirmək olmur, düzəltmək qorxuludur, dəyişdirmək isə baha və risklidir. Vicdansız podratçılar məhz bu qorxudan istifadə edir.
Podratçılar niyə «sıfırdan yenidən yazmağı» sevir
Yeni icraçı sisteminizə güclə baxıb «burada hər şey pisdir, sıfırdan yenidən yazmaq lazımdır» deyəndə, çox vaxt bu, sizin sistem haqqında deyil, onun öz rahatlığı haqqındadır.
Özgə kodda baş açmaq uzun, çətin və nankor işdir: özgə məntiqi yenidən qurmaq, sənədsiz yazılanı oxumaq, qeyri-aydın əlaqələri başda saxlamaq lazımdır. Sıfırdan yazmaq proqramçıya daha asan və xoşdur — bu, təmiz vərəq, anlaşıqlı həcm və gözəl smetadır. Amma yenidən yazma müddətində biznesin boş dayanması, işlək funksionallığı itirmək riski və miqrasiya dəyəri bu zaman sizin üzərinizə düşür.
Bu, nadirən ucadan deyilən maraqlar konfliktidir: icraçıya sərf edən şey həmişə sifarişçiyə sərf etmir. Dürüst podratçının əlaməti — o, əvvəlcə audit aparır və hər iki variantı hesablayır, astanadan «yenidən yaz» hökmü çıxarmır.
Qərar çərçivəsi: mühəndislər necə hesablayır
«Düzəltmək, yoxsa dəyişmək» qərarı — zövq məsələsi deyil, iki rəqəmin müqayisəsidir:
- Audit. Sistemin daxilində nə var, risklər haradadır, mənbə kodları varmı, modullar nə dərəcədə bağlıdır.
- Cari sistemin sahiblik dəyəri. Dəstək indi nəyə başa gəlir və bu dəyər nə qədər tez artır: əl ilə dolaylar, boş dayanmalar, bahalı nöqtəvi düzəlişlər, təhlükəsizlik riskləri.
- Dəyişdirmə dəyəri + miqrasiya riski. Yenisini qurmaq neçəyə başa gəlir və məlumat və prosesləri köçürərkən nə ilə risk edirsiniz.
- Prioritetlər. İndi nəyi düzəltmək kritikdir, nə isə gözləyə bilər və ya ümumiyyətlə mane olmur.
- Hökm. Üçündən biri: kritik modulları refaktorinq etmək, mərhələ-mərhələ dəyişmək və ya (daha nadir) tam yenidən yazmaq.
Açar fikir — cavab demək olar ki, heç vaxt «hər şeyi düzəltmək» və ya «hər şeyi yenidən yazmaq» olmur. Real qərar demək olar ki, həmişə hibriddir: sistemin bir hissəsi saxlanılır, kritik hissə düzəldilir, ümidsizi isə hissə-hissə dəyişdirilir.
«Düzəltmək, yoxsa yenidən yazmaq» cədvəli (artefakt)
Auditdə hökm çıxarılan meyarlar. Sağ sütuna nə qədər çox bənd düşürsə — dəyişdirmə lehinə arqument bir o qədər güclüdür:
| Meyar | Daha çox düzəltmək | Daha çox yenidən yazmaq |
|---|---|---|
| Mənbə kodları | var və yığılır | itib / yığılmır |
| Memarlıq | modulyar, anlaşıqlı | hər şey hər şeyə bağlı, hər dəyişiklik qonşunu sındırır |
| Texnologiyalar | dəstəklənir | dəstəkdən çıxıb, mütəxəssis yoxdur |
| Biznes-məntiq | aktualdır | proseslər çoxdan dəyişib, sistem onlara uyğun deyil |
| Məlumatlar | bütövdür | xaos, dublar, inanmaq olmaz |
| Dəstək dəyəri | proqnozlaşdırıla bilir | faydadan tez artır |
| Təhlükəsizlik | idarə oluna bilir | kritik dəliklər, yenidən yazmadan bağlamaq olmur |
Cədvəli necə oxumaq. Nadirən hər şey birmənalıdır. Daha çox nəticə — «kritik modulları refaktorinq etmək, qalanını saxlamaq» və ya «mərhələ-mərhələ yenidən yazmaq, hamısını birdən yox» olur. Tam dəyişdirməni yalnız sağ sütunda bir neçə açar sətirdə eyni anda üstünlük doğruldur — xüsusən mənbə kodları itib, memarlıq isə dəyişdirilmirsə.
Əsas meyar — memarlıq (təhlil)
Cədvəlin bütün sətirləri içində ən ağır çəkəni memarlıqdır, buna görə onun üzərində dayanmağa dəyər. Məsələ kodun «gözəl» olub-olmamasında deyil, bir hissəni qalanlarını sındırmadan dəyişdirmək mümkünlüyündədir. Yaxşı qurulmuş sistemdə modullar bağlanmamışdır: maaş hesabındakı düzəliş anbara toxunmur, bir ekranın yenilənməsi hesabatları çökərtmir. Belə sistemi yer-yer kod gözəl olmasa belə, nöqtəvi və ucuz düzəldirlər.
Güclü bağlı sistemdə isə əksinədir: hər dəyişiklik özü ilə qeyri-proqnozlaşdırıla bilən nəticələr zənciri çəkir, və hər düzəliş minaaxtaran işinə çevrilir. Məhz belə sistemlər «yaxşısı toxunma» qorxusunu doğurur. Üstəlik mənbə kodları və ya pozulmanı tutacaq testlər də yoxdursa — bu, mərhələli dəyişdirmə lehinə ən ağır arqumentdir. Amma burada da «hər şeyi yenidən yazmaq»a tələsməyə dəyməz: çox vaxt köhnə nüvəni qoruyucu qatla əhatə edib modulları bir-bir dəyişmək böyük yenidən yazma xatirinə biznesi dayandırmaqdan sərfəlidir.
Adətən nəyi qiymətləndirmirlər
İki şey müntəzəm olaraq hesabdan düşür və sonra baha başa gəlir. Birincisi — məlumat miqrasiyasının dəyəri: illərlə toplananları itkisiz köçürmək çox vaxt yeni kod yazmaqdan çətindir. İkincisi — köhnə sistemə hopmuş gizli biznes-qaydalar: illər ərzində orada heç yerdə yazılmayan, yalnız yeni sistem «düz hesablamayanda» üzə çıxan istisnalar və razılaşmalar oturub. Buna görə dürüst audit həmişə yalnız kodun qiymətləndirilməsinə deyil, köhnə məntiqin arxeologiyasına da vaxt qoyur.
Biznesi dayandırmadan necə dəyişmək
Sahibin əsas qorxusu — «siz əlləşənə qədər biznes dayanar». Bu, baş verməməlidir. Düzgün modernləşdirmə mərhələ-mərhələ gedir: köhnə sistem işləməyə davam edir, yeni isə hissə-hissə qoşulur və mövcudla tutuşdurulur. Məlumatlar tədricən, hər addımda yoxlama ilə köçürülür. Köhnəni söndürən an yeni artıq həmin məlumatlar üzərində işlədiyini sübut etmiş olur. Bu, «vakuumda yenidən yazmaq»dan uzundur, amma məhz beləcə biznes bir gün də itirmir.
Bəs mənbə kodları itibsə?
Tez-tez rast gəlinən və ümidsiz olmayan haldır. Tam mənbə kodları olmadan da mənzərəni bərpa etmək olar: işlək sistemi, məlumat bazasını, davranışı, qalan kod fraqmentlərini təhlil etmək. Auditdə nəyi real bərpa edib yığmaq, nəyi əvəzləmək lazım olduğunu qiymətləndiririk. Mənbə kodlarının itməsi — dəyişdirmə tərəfinə güclü arqumentdir, amma avtomatik hökm deyil: bəzən köhnəni yeni interfeysə bürümək sıfırdan yenidən yazmaqdan ucuzdur.
Bu neçəyə başa gəlir
Dəyər sistemin ölçüsündən və kodun vəziyyətindən asılıdır, amma ilk addım — audit — hələ böyük qoyuluşlardan əvvəl sizə anlaşıqlı xəritə və «düzəltmək vs yenidən yazmaq» hesabını verir. Rəqəmlərin sırasını kalkulyatorda hesablamaq olar. Biz riskin bizim tərəfdə olduğu model üzrə işləyirik: audit və konsepsiya əsas büdcəni qoymazdan əvvəl həcmi və dəyəri göstərir. Ətraflı — modernləşdirmə və legacy və necə işləyirik.
FAQ
- Siz həmişə sıfırdan yenidən yazmağı məsləhət görürsünüz? Yox. Əvvəlcə audit, sonra hər modul üzrə dürüst hökm. Çox vaxt təkmilləşdirmə dəyişdirmədən sərfəlidir — elə də deyəcəyik.
- Mənbə kodları itib — nə etməli? Mənzərəni işlək sistem, baza və kod fraqmentləri üzrə bərpa edirik; real yığıla biləni auditdə qiymətləndiririk.
- Biznesi dayandırmadan modernləşdirmək olar? Bəli — mərhələ-mərhələ, köhnə sistemlə paralel, hər addımda yoxlama ilə.
- Nədən başlamaq? Auditdən: o, elə «düzəltmək, yoxsa dəyişmək» sualına emosiya əvəzinə rəqəmlərlə dürüst cavabdır.
- Bu neçəyə başa gəlir? Qiymət fərdi hesablanır; audit böyük qoyuluşlardan əvvəl hesab verir. Layihənin miqyasını kalkulyatorda qiymətləndirə bilərsiniz, dəqiq qiyməti pulsuz analizdən sonra qeydə alırıq.