Proqram mühəndisliyidevopsSistem-arxitekturaTexnologiya
Proqram təminatı eksperiment kimi və proqram təminatı infrastruktur kimi
Bu müqayisə proqram mühəndisliyində iki ziddiyyətli fəlsəfəni araşdırır: eksperimental kodun sürətli, iterativ yanaşması ilə infrastruktur proqram təminatının sabit, missiya üçün kritik təbiəti. Biri sürət və kəşfə fokuslanarkən, digəri isə əsas rəqəmsal xidmətlər və qlobal sistemlər üçün etibarlılıq və uzunmüddətli texniki xidmətə üstünlük verir.
Seçilmişlər
Eksperimental kod konseptin mövcudluğunu sübut etməyə yönəlib, infrastruktur kodu isə onun yaşaya biləcəyini sübut edir.
İnfrastruktur sistemin ardıcıl nasazlıqlarının qarşısını almaq üçün ciddi 'partlayış radiusu' planlaşdırması tələb edir.
Dəyişiklik xərcləri eksperimentlərdə qəsdən aşağı, infrastruktur baxımından isə qəsdən yüksəkdir.
Eksperimentin uğuru yeni bir anlayışdır; İnfrastrukturun uğuru səssiz və darıxdırıcı bir əməliyyatdır.
Proqram təminatı eksperiment kimi nədir?
Sürətli öyrənmə, prototipləşdirmə və sürətlə dəyişən mühitlərdə hipotezlərin test edilməsi üçün nəzərdə tutulmuş kod.
Çatdırılma sürətini uzunmüddətli memarlıq mükəmməlliyindən üstün tutur.
Startap mühitlərində məhsul-bazar uyğunluğunu tapmaq üçün geniş istifadə olunur.
İnkişaf resurslarının israfını azaltmaq üçün 'tez uğursuzluq' düşüncəsini qəbul edir.
Tez-tez bazara giriş üçün hesablanmış kompromis kimi texniki borca əsaslanır.
Adətən ömrü qısadır, dərs öyrənildikdən sonra tez-tez atılır.
Proqram təminatı infrastruktur kimi nədir?
Yüksək əlçatanlıq, təhlükəsizlik və davamlı uzunmüddətli performans üçün əsas kod.
Böyük miqyasda və eyni zamanda istifadəçi yüklərinə dözmək üçün hazırlanıb.
Aşağı axın asılılıqlarının pozulmasının qarşısını almaq üçün geriyə uyğunluğa fokuslanır.
Geniş sənədləşdirmə və ciddi avtomatlaşdırılmış test protokolları tələb edir.
Həyat dövrü aylar və illərlə deyil, onillikləri əhatə edir.
Bankçılıq, enerji şəbəkələri və bulud platformaları kimi vacib xidmətlərin əsasını təşkil edir.
Müqayisə Cədvəli
Xüsusiyyət
Proqram təminatı eksperiment kimi
Proqram təminatı infrastruktur kimi
Əsas məqsəd
Öyrənmə və Kəşf
Sabitlik və Etibarlılıq
Uğursuzluğa Dözümlülük
Yüksək (İnkişaf üçün təşviq olunur)
Aşağı (Sıfır dayanma vaxtı gözlənilir)
İnkişaf Sürəti
Sürətli iterasiyalar
Metodik və məqsədyönlü
Texniki borc
Qəbul edildi və gözlənilən
Aktiv şəkildə minimuma endirildi və idarə olundu
Sənədləşmə
Minimal və ya tam vaxtında
Əhatəli və əhatəli
Test Dəqiqliyi
Əsas funksionallığa fokus
Kənar hallar və stress testləri
Xərclərə Fokus
Aşağı ilkin investisiya
Ümumi Sahiblik Xərclərinə Fokus
Miqyaslana bilmə
Çox vaxt sonradan düşünülən bir şey
Birinci gündən daxili
Ətraflı Müqayisə
Risk İdarəetməsi və Etibarlılıq
Eksperimental proqram təminatı səhvləri öyrənmə fürsəti kimi qəbul edir və tez-tez qəzanın az insana təsir etdiyi mühitlərdə işləyir. Lakin infrastruktur proqram təminatı fasiləni fəlakətli hadisə kimi qəbul edir və müdafiə proqramlaşdırması və ehtiyat sistemlər tələb edir. Fərq ondadır ki, kodun sürətli hərəkət etmək üçün şeyləri pozmasına icazə verilir, yoxsa dünya hərəkətdə qalmalıdır.
Uzunömürlülük və texniki xidmət
Təcrübə tez-tez cavaba müvəqqəti körpü rolunu oynayır, məqsəd yerinə yetirildikdən sonra tez-tez yenidən yazılır və ya ləğv edilir. İnfrastruktur kodu daimi bir hissə kimi qurulur və yeniləmələr üçün beş-on illik xidmət müddətini əhatə edən diqqətli planlaşdırma tələb edir. İnfrastruktur sahəsində çalışan inkişaf etdiricilər 2035-ci ildə kodlarının saxlayıcıya necə görünəcəyini düşünməlidirlər, eksperimentalistlər isə növbəti həftəyə fokuslanmalıdırlar.
Mühəndislik Mədəniyyətinə Təsiri
Eksperimental proqram təminatı hazırlayan komandalar yaradıcılıq, pivot əsaslı iş axınları və yüksək enerjili sprintlərlə inkişaf edir. İnfrastruktur komandaları intizamı, dərin memarlıq icmalını və heç vaxt uğursuz olmayan bir şey yaratmaq qürurunu qiymətləndirirlər. Bu fərqli düşüncə tərzləri tez-tez fərqli işə qəbul profillərinə səbəb olur; 'hakerlər' birinciyə, 'sistem mühəndisləri' isə ikinciyə üstünlük verirlər.
İqtisadi Sürücülər
Eksperimental proqram təminatı adətən bazarı tutmaq və ya nişi tez təsdiqləmək ehtiyacı ilə maliyyələşdirilir. İnfrastruktur fonda investisiyadır, burada səhvin qiyməti böyük maliyyə və ya hüquqi məsuliyyətlərə səbəb ola bilər. Biri inkişaf üçün aqressiv addımdır, digəri isə mövcud dəyər və əməliyyat davamlılığı üçün qoruyucu tədbirdir.
Üstünlüklər və Eksikliklər
Proqram təminatı eksperiment kimi
Üstünlüklər
+Çox sürətli geribildirim
+Aşağı ilkin xərclər
+İnnovasiyaları təşviq edir
+Yüksək elastiklik
Saxlayıcı
−Kövrək kod bazası
−Texniki borc yığır
−Zəif miqyaslana bilmə
−İstifadəçilər üçün etibarsızdır
Proqram təminatı infrastruktur kimi
Üstünlüklər
+İstisna etibarlılıq
+Yüksək təhlükəsizlik standartları
+Aydın sənədləşdirmə
+Böyük miqyaslı tutum
Saxlayıcı
−Yavaş inkişaf dövrləri
−Yüksək mühəndislik xərcləri
−Dəyişikliyə davamlı
−Kompleks texniki xidmət
Yaygın yanlış anlaşılmalar
Əfsanə
Eksperimental proqram təminatı sadəcə tənbəl proqramçılar tərəfindən yazılmış 'pis' koddur.
Həqiqət
Məqsədli eksperimental kod öyrənməyə üstünlük vermək üçün strateji seçimdir. Əgər məqsəd təsdiqlənmədirsə, bu 'məqsədə uyğundur', amma əgər sonradan refaktorlaşdırılmasa və ya dəyişdirilməsə, problemli olur.
Əfsanə
İnfrastruktur proqram təminatı heç vaxt dəyişmir və inkişaf etmir.
Həqiqət
İnfrastruktur inkişaf etməlidir, amma bunu son dərəcə ehtiyatla edir. Dəyişikliklər keçid dövründə təməlin möhkəm qalmasını təmin etmək üçün mavi-yaşıl yerləşdirmələr və ya kanarya buraxılışları vasitəsilə həyata keçirilir.
Əfsanə
Təcrübəni sonradan asanlıqla infrastruktura çevirə bilərsiniz.
Həqiqət
Bu, 'spagetti' sistemlərinə gətirib çıxaran ümumi bir tələdir. Həqiqi infrastruktur adətən tam arxitektura yenidən düşünülməsini tələb edir, çünki eksperimentin əsas fərziyyələri nadir hallarda miqyaslana bilər.
Əfsanə
Yalnız startaplar eksperimental proqram təminatı ilə məşğul olur.
Həqiqət
Hətta nəhəng texnologiya şirkətləri də xüsusiyyətləri test etmək üçün eksperimental filiallardan və ya 'laboratoriyalardan' istifadə edirlər. Əsas məsələ bu eksperimentləri izolyasiya etməkdir ki, istifadəçilərin asılı olduğu əsas infrastrukturu təhdid etməsinlər.
Tez-tez verilən suallar
Tətbiqimi eksperiment kimi qəbul etməyi nə vaxt dayandırmalıyam?
Keçid proqramınız istifadəçilər üçün 'yaxşı'dan 'kritik'ə keçən anda baş verməlidir. Əgər 15 dəqiqəlik kəsinti ciddi maliyyə itkisinə və ya istifadəçi itkisinə səbəb olarsa, siz infrastruktur sahəsinə keçmisiniz və test və yerləşdirmə tələblərinizi buna uyğun tənzimləməlisiniz.
İnfrastruktur proqram təminatı fərqli proqramlaşdırma dillərindən istifadə edirmi?
Hər hansı bir dil hər ikisi üçün istifadə oluna bilər, lakin infrastruktur performans və təhlükəsizlik üçün tez-tez güclü tipə malik kompilyasiya olunmuş dillərə üstünlük verir, məsələn, Go, Rust və ya C++. Eksperimental proqram təminatı tez-tez Python və ya Ruby kimi çevik, yüksək səviyyəli dillərdən istifadə edir ki, bu da daha sürətli prototipləmə və daha asan sintaksis dəyişikliklərinə imkan verir.
Eksperimental proqram təminatında texniki borc həmişə pisdirmi?
Mütləq deyil. Bir eksperimentdə texniki borc yüksək faizli kredit kimidir, bu da sizə evi daha tez almağa kömək edir. Bu, yalnız onu heç vaxt qaytarmasanız və ya müvəqqəti təməl üzərində göydələn (infrastruktur) tikməyə çalışanda 'pis' borc olur.
Test strategiyaları bu iki model arasında necə fərqlənir?
Eksperimentlər 'Xoşbəxt Yol' testinə fokuslanır—əsas funksiyanın orta istifadəçi üçün işləyib-işləmədiyini yoxlamaq. İnfrastruktur testləri 'Kənar Hadisələr' və 'Xaos Mühəndisliyi' ilə obsesiyalıdır, burada inkişaf etdiricilər sistemin bəzi hissələrini qəsdən sındıraraq qalanlarının şokdan sağ çıxıb-çıxmayacağını yoxlayırlar.
Bir şirkət hər iki yanaşmanı eyni anda idarə edə bilərmi?
Bəli, və ən uğurlu olanlar belədir. Onlar tez-tez 'Bimodal İT' strategiyasından istifadə edirlər, burada bir komanda əsas, sabit sistemləri (İnfrastruktur) qoruyur, digər çevik komanda isə yeni sərhədləri araşdırır (Eksperiment). Əsas çətinlik bu iki mədəniyyət arasında ötürülməni idarə etməkdir.
'Eksperiment' mərhələsində çox uzun müddət qalmağın ən böyük riski nədir?
Ən böyük risk 'Sistemli Kövrəklik'dir. Sərbəst qurulmuş eksperimentə daha çox xüsusiyyət əlavə etdikcə, mürəkkəblik sürətlə artır. Nəhayət, sistem o qədər kövrək olur ki, kiçik bir dəyişiklik əlaqəsiz hissələrin sıradan çıxmasına səbəb olur və nəticədə gələcək bütün yeniliklər dayanır.
Niyə sənədləşdirmə infrastruktur üçün bu qədər vacibdir?
İnfrastruktur ortaq bir resursdur və orijinal yaradıcılarından daha uzun ömürlü olur. Dərin sənədləşmə olmadan, sistemi idarə edənlər beş il sonra müəyyən təhlükəsizlik və ya performans seçimlərinin arxasındakı 'niyə'ni başa düşməyəcək, bu da gələcək yeniləmələrdə təhlükəli səhvlərə səbəb olacaq.
'İnfrastruktur' yalnız bulud serverləri və verilənlər bazalarına aiddirmi?
Xeyr, bu, proqram təminatının oynadığı rola aiddir. Minlərlə tətbiq tərəfindən istifadə olunan əsas autentifikasiya kitabxanası 'infrastruktur'dur, baxmayaraq ki, o, sadəcə bir kod parçasıdır. Əgər insanlar onun üzərində tikinti aparırlarsa, bu infrastrukturdur; Əgər insanlar sadəcə bir ideyanın işləyib-işləmədiyini görmək üçün istifadə edirlərsə, bu bir eksperimentdir.
Hökm
Naməlum bazarları araşdırarkən və ya nasazlıq xərci aşağı olan yeni xüsusiyyətləri sınaqdan keçirərkən eksperimental yanaşmanı seçin. Məhsulunuz istifadəçilər üçün kritik asılılığa çevriləndə infrastruktur düşüncəsinə keçin.