Slack-də istifadə olunan layihə yerləşdirmə metodologiyası

Yeni layihə buraxılışını istehsala gətirmək, yerləşdirmə sürətini həllin etibarlılığı ilə diqqətlə balanslaşdırmağı tələb edir. Slack sürətli iterasiyaları, qısa geribildirim dövrlərini və istifadəçi rəyinə operativ cavabları qiymətləndirir. Bundan əlavə, şirkət maksimum məhsuldarlığa can atan yüzlərlə proqramçı çalışır.

Slack-də istifadə olunan layihə yerləşdirmə metodologiyası

Bu gün tərcüməsini dərc etdiyimiz məqalənin müəllifləri iddia edirlər ki, böyüyərkən belə dəyərlərə əməl etməyə çalışan bir şirkət davamlı olaraq layihə yerləşdirmə sistemini təkmilləşdirməlidir. Şirkət bu proseslərin layihənin miqyasına uyğun olmasını təmin edərək, öz iş axınlarının şəffaflığına və etibarlılığına sərmayə qoymalıdır. Bu məqalədə Slack-də yaradılmış iş axınları və şirkətin cari layihə yerləşdirmə sistemini qəbul etməsinə səbəb olan bəzi qərarlar müzakirə olunacaq.

Layihənin yerləşdirilməsi prosesləri bu gün necə işləyir

Slack-də hər bir PR (çəkmə sorğusu) məcburi kod nəzərdən keçirilməli və bütün testlərdən keçməlidir. Yalnız bu şərtlər yerinə yetirildikdən sonra proqramçı öz kodunu layihənin master filialına birləşdirə bilər. Bununla belə, belə kodun yerləşdirilməsi yalnız iş saatlarında (Şimali Amerika vaxtı) həyata keçirilir. Nəticə etibarı ilə, əməkdaşlarımızla yerindəcə istənilən gözlənilməz məsələləri həll etməyə tam hazırıq.

Biz hər gün təxminən 12 planlaşdırılmış yerləşdirmə həyata keçiririk. Hər yerləşdirmə zamanı yerləşdirmə rəhbəri kimi təyin edilmiş proqramçı yeni quruluşun istehsala keçməsinə cavabdehdir. Bu çoxmərhələli proses quruluşun hamar bir şəkildə yayılmasını təmin edir. Bu yanaşma bizə səhvləri bütün istifadəçilərimizə təsir etməzdən əvvəl aşkar etməyə imkan verir. Həddindən artıq səhv olarsa, yerləşdirmə geri qaytarıla bilər. Buraxılışdan sonra müəyyən bir problem aşkar edilərsə, asanlıqla düzəliş edilə bilər.

Slack-də istifadə olunan layihə yerləşdirmə metodologiyası
Layihə yerləşdirmələri üçün Slack-də istifadə edilən Checkpoint sistemi üçün interfeys

Yeni buraxılışın istehsala yerləşdirilməsi prosesi dörd addımdan ibarət hesab edilə bilər.

▍1. Buraxılış filialının yaradılması

Hər buraxılış Git tariximizin bir nöqtəsindən başlayaraq yeni buraxılış filialı ilə başlayır. Bu, buraxılışa teqlər təyin etməyə imkan verir və buraxılışın istehsala hazırlanması prosesi zamanı aşkar edilmiş hər hansı səhvlər üçün tez bir zamanda düzəlişlər etmək üçün yer təmin edir.

▍2. Hazırlıq mühitinə yerləşdirmə

Növbəti addım layihənin ümumi funksionallığını təmin etmək üçün quruluşun quruluş serverlərinə yerləşdirilməsini və avtomatlaşdırılmış tüstü testinin aparılmasını əhatə edir. Səhnə mühiti xarici trafikə məruz qalmayan istehsal mühitidir. Biz bu mühitdə əlavə əl testi həyata keçiririk. Bu, dəyişdirilmiş layihənin düzgün işlədiyinə bizə əlavə əminlik verir. Bu inam səviyyəsinə çatmaq üçün təkcə avtomatlaşdırılmış testlər kifayət deyil.

▍3. Sınaq və kanareyka mühitlərinə yerləşdirmə

İstehsalata yerləşdirmə sınaq mühiti, daxili Slack iş sahələrimizə xidmət edən hostlar dəsti ilə başlayır. Biz çox aktiv Slack istifadəçiləri olduğumuz üçün bu yanaşma bizə bir çox səhvləri erkən tutmağa kömək etdi. Sistemin əsas funksionallığının pozulmadığını təsdiq etdikdən sonra quruluş kanarya mühitinə yerləşdirilir. Bu sistemlər istehsal trafikinin təxminən 2%-ni idarə edir.

▍4. Tədricən istehsala buraxılması

Əgər yeni buraxılışın monitorinq göstəriciləri sabitdirsə və layihəni kanareyka mühitinə yerləşdirdikdən sonra heç bir şikayət almamışıqsa, istehsal serverlərini tədricən yeni buraxılışa köçürməyə davam edirik. Yerləşdirmə prosesi aşağıdakı mərhələlərə bölünür: 10%, 25%, 50%, 75% və 100%. Bu, istehsal trafikini yavaş-yavaş yeni sistem buraxılışına köçürməyə imkan verir və hər hansı anomaliya aşkar edildikdə vəziyyəti araşdırmaq üçün vaxt verir.

▍Yerləşdirmə zamanı nə isə səhv olarsa?

Kodun dəyişdirilməsi həmişə riskdir. Lakin biz bunu yeni buraxılışın istehsala gətirilməsi prosesini idarə edən, monitorinq göstəricilərinə nəzarət edən və kodu buraxan proqramçıların işini koordinasiya edən yaxşı təlim keçmiş “yerləşdirmə liderləri” ilə idarə edirik.

Əgər bir şey həqiqətən səhv olarsa, problemi mümkün qədər tez aşkar etməyə çalışırıq. Biz problemi araşdırırıq, səhvlərə səbəb olan PR-ı tapırıq, onu geri qaytarırıq, hərtərəfli təhlil edirik və yeni quruluş yaradırıq. Ancaq bəzən layihə istehsala tətbiq olunana qədər problem diqqətdən kənarda qalır. Belə vəziyyətlərdə ən vacib şey xidmət fəaliyyətini bərpa etməkdir. Buna görə də, problemi araşdırmadan əvvəl dərhal əvvəlki iş quruluşuna qayıdırıq.

Yerləşdirmə sisteminin tikinti blokları

Layihə yerləşdirmə sistemimizi dəstəkləyən texnologiyalara nəzər salaq.

▍Sürətli yerləşdirmələr

Yuxarıda təsvir olunan iş prosesi retrospektivdə tamamilə aydın görünə bilər. Ancaq yerləşdirmə sistemimiz bir gecədə belə inkişaf etmədi.

Şirkət daha kiçik olanda bizim bütün tətbiqimiz 10 Amazon EC2 nümunəsində işləyə bilərdi. Bu vəziyyətdə layihənin yerləşdirilməsi bütün serverləri tez sinxronlaşdırmaq üçün rsync-dən istifadə etmək demək idi. Əvvəllər yeni kod istehsaldan cəmi bir addım uzaqda idi, səhnə mühiti ilə təmsil olunurdu. Quruluşlar bu mühitdə yaradılmış və sınaqdan keçirilmiş, sonra isə birbaşa istehsala göndərilmişdir. Bu sistemi başa düşmək çox asan idi və istənilən proqramçıya istənilən vaxt öz kodunu yerləşdirməyə imkan verirdi.

Lakin müştəri bazamız böyüdükcə layihəni dəstəkləmək üçün tələb olunan infrastrukturun miqyası da artdı. Tezliklə, sistemin daimi böyüməsini nəzərə alaraq, serverlərə yeni kodun ötürülməsinə əsaslanan yerləşdirmə modelimiz dayanıqsız oldu. Xüsusilə, hər bir yeni serverin əlavə edilməsi yerləşdirməni tamamlamaq üçün tələb olunan vaxtı artırmaq demək idi. Hətta paralel rsync tətbiqinə əsaslanan strategiyalar da müəyyən məhdudiyyətlərə malikdir.

Köhnə sistemdən fərqlənən tam paralel yerləşdirmə sisteminə keçməklə son nəticədə bu problemi həll etdik. Konkret olaraq, biz artıq sinxronizasiya skripti ilə serverlərə kod göndərmirik. Bunun əvəzinə, hər bir server müstəqil olaraq yeni bir quruluş yüklədi və bunu Konsulun əsas dəyişikliklərini izləməklə öyrəndi. Serverlər kodu paralel olaraq endirdilər. Bu, sistem böyüdükcə də yüksək yerləşdirmə sürətini saxlamağa imkan verdi.

Slack-də istifadə olunan layihə yerləşdirmə metodologiyası
1. İstehsal serverləri Konsul açarına nəzarət edir. 2. Serverlərə yeni kodu endirməyə başlamağı bildirən əsas dəyişikliklər. 3. Serverlər proqram kodunu ehtiva edən tarball fayllarını yükləyirlər.

▍Atom yerləşdirmələri

Çox səviyyəli yerləşdirmə sisteminə nail olmağımıza kömək edən başqa bir həll atom yerləşdirməsi idi.

Atom yerləşdirmədən əvvəl hər bir yerləşdirmə çoxlu sayda səhv mesajı yarada bilər. Bunun səbəbi, yeni faylların istehsal serverlərinə kopyalanması prosesinin atomik olmaması idi. Bu, funksiyaların özləri mövcud olana qədər yeni funksiyaları çağıran kodun mövcud olduğu qısa bir zaman pəncərəsi ilə nəticələndi. Bu kod çağırıldıqda, uğursuz API sorğuları və pozulmuş veb səhifələr kimi görünən daxili xətaların qaytarılması ilə nəticələndi.

Bu problem üzərində işləyən komanda "isti" və "soyuq" kataloqlar anlayışını təqdim etməklə onu həll etdi. "Qaynar" kataloqdakı kod istehsal trafikini idarə edir. "Soyuq" kataloqdakı kod sadəcə sistem işləyərkən istifadə üçün hazırlanır. Yerləşdirmə zamanı yeni kod istifadə olunmamış "soyuq" kataloqa kopyalanır. Sonra, serverdə aktiv proseslər olmadıqda, kataloqlar dərhal dəyişdirilir.

Slack-də istifadə olunan layihə yerləşdirmə metodologiyası
1. Tətbiq kodunu "soyuq" qovluğa açın. 2. Sistemi "isti" (atom əməliyyatı) halına gələn "soyuq" kataloqa keçirin.

Nəticələr: Etibarlılığa diqqətin dəyişməsi

2018-ci ildə layihə sürətli yerləşdirmənin məhsulun sabitliyinə zərər vurduğu bir nöqtəyə çatdı. Bizim çox inkişaf etmiş yerləşdirmə sistemimiz var idi, ona çox vaxt və səy sərf etmişik. Bizə sadəcə olaraq yerləşdirmə proseslərimizi yenidən qurmaq və təkmilləşdirmək lazım idi. Biz kifayət qədər böyük şirkətə çevrilmişdik, onun həlləri bütün dünyada qüsursuz kommunikasiyanı təmin etmək və mühüm problemləri həll etmək üçün istifadə olunurdu. Buna görə də etibarlılıq bizim əsas diqqətimizə çevrildi.

Yeni Slack relizlərinin yerləşdirilməsi prosesini daha təhlükəsiz etməli olduq. Bu ehtiyac bizi yerləşdirmə sistemimizi təkmilləşdirməyə vadar etdi. Əslində, biz yuxarıda bu təkmilləşdirilmiş sistemi müzakirə etdik. Başlıq altında biz sürətli və atom yerləşdirmə texnologiyalarından istifadə etməyə davam edirik. Dəyişən, yerləşdirmənin necə həyata keçirildiyidir. Yeni sistemimiz tədricən müxtəlif səviyyələrdə, müxtəlif mühitlərdə yeni kodu yerləşdirmək üçün nəzərdə tutulub. Biz indi əvvəlkindən daha mürəkkəb köməkçi vasitələrdən və sistem monitorinq alətlərindən istifadə edirik. Bu, bizə səhvləri son istifadəçiyə çatmaq şansından çox əvvəl tutmağa və düzəltməyə imkan verir.

Amma biz orada dayanmırıq. Biz bu sistemi daim təkmilləşdirir, daha təkmil dəstək alətləri və avtomatlaşdırma tətbiq edirik.

Hörmətli oxucular! İşlədiyiniz yerdə yeni layihə buraxılışlarının yerləşdirilməsi prosesi necə təşkil olunub?

Slack-də istifadə olunan layihə yerləşdirmə metodologiyası

Mənbə: www.habr.com

DDoS mühafizəsi, VPS VDS serverləri olan saytlar üçün etibarlı hostinq alın 🔥 DDoS qorunması, VPS VDS serverləri ilə etibarlı veb sayt hostinqi alın | ProHoster