Bulud xidmətiniz olduqda necə yaxşı yatmaq olar: əsas memarlıq məsləhətləri

Bulud xidmətiniz olduqda necə yaxşı yatmaq olar: əsas memarlıq məsləhətlərisophiagworld tərəfindən LOST

Bu məqalə mühəndislərə milyonlarla istifadəçinin əldə etdiyi genişmiqyaslı xidmətlərlə işləməkdə kömək etmək üçün bəzi ümumi nümunələri ehtiva edir. 

Müəllifin təcrübəsində bu, tam siyahı deyil, əslində effektivdir məsləhət. Beləliklə, başlayaq.

Dəstəyi ilə tərcümə edilmişdir Mail.ru Bulud Həlləri.

Birinci səviyyə

Aşağıda sadalanan tədbirlərin həyata keçirilməsi nisbətən sadədir, lakin yüksək təsirə malikdir. Onları əvvəllər sınamamısınızsa, əhəmiyyətli irəliləyişlərə təəccüblənəcəksiniz.

İnfrastruktur kod kimi

Məsləhətlərin birinci hissəsi infrastrukturu kod kimi həyata keçirməkdir. Bu o deməkdir ki, bütün infrastrukturu yerləşdirmək üçün proqramlı bir üsulunuz olmalıdır. Bu mürəkkəb səslənir, lakin biz əslində aşağıdakı koddan danışırıq:

100 virtual maşının yerləşdirilməsi

  • Ubuntu ilə
  • Hər biri 2 GB RAM
  • onlar aşağıdakı kodlara sahib olacaqlar
  • bu parametrlərlə

İnfrastrukturunuzdakı dəyişiklikləri izləyə və versiya nəzarətindən istifadə edərək onlara tez qayıda bilərsiniz.

İçimdəki modernist deyir ki, yuxarıdakıların hamısını etmək üçün Kubernetes/Docker-dən istifadə edə bilərsiniz və o, haqlıdır.

Bundan əlavə, siz Chef, Puppet və ya Terraform istifadə edərək avtomatlaşdırma təmin edə bilərsiniz.

Davamlı İnteqrasiya və Çatdırılma

Ölçəklənən bir xidmət yaratmaq üçün hər çəkmə sorğusu üçün tikinti və sınaq kəmərinin olması vacibdir. Test çox sadə olsa belə, heç olmasa yerləşdirdiyiniz kodun tərtib edilməsini təmin edəcək.

Hər dəfə bu mərhələdə suala cavab verirsiniz: montajım tərtib edib testlərdən keçəcək, etibarlıdırmı? Bu, aşağı bar kimi görünə bilər, lakin bir çox problemi həll edir.

Bulud xidmətiniz olduqda necə yaxşı yatmaq olar: əsas memarlıq məsləhətləri
Bu gənələri görməkdən gözəl bir şey yoxdur

Bu texnologiya üçün Github, CircleCI və ya Jenkins-i qiymətləndirə bilərsiniz.

Yük balanslaşdırıcıları

Beləliklə, trafiki yönləndirmək və bütün qovşaqlarda bərabər yükü təmin etmək üçün yük balanslaşdırıcısını işə salmaq istəyirik və ya nasazlıq halında xidmət davam edir:

Bulud xidmətiniz olduqda necə yaxşı yatmaq olar: əsas memarlıq məsləhətləri
Yük balanslaşdırıcısı adətən trafikin paylanmasında yaxşı bir iş görür. Ən yaxşı təcrübə, heç bir uğursuzluq nöqtəniz olmaması üçün həddindən artıq balanslaşdırmaqdır.

Tipik olaraq, yük balanslaşdırıcıları istifadə etdiyiniz buludda konfiqurasiya edilir.

Sorğular üçün RayID, korrelyasiya ID və ya UUID

Heç belə bir mesajla proqram xətası ilə qarşılaşmısınızmı: “Nəsə səhv getdi. Bu identifikatoru yadda saxlayın və dəstək komandamıza göndərin"?

Bulud xidmətiniz olduqda necə yaxşı yatmaq olar: əsas memarlıq məsləhətləri
Unikal identifikator, korrelyasiya identifikatoru, RayID və ya variasiyalardan hər hansı biri sorğunun ömrü boyu izlənməsinə imkan verən unikal identifikatordur. Bu, loglarda bütün sorğu yolunu izləməyə imkan verir.

Bulud xidmətiniz olduqda necə yaxşı yatmaq olar: əsas memarlıq məsləhətləri
İstifadəçi A sisteminə sorğu göndərir, sonra A B ilə əlaqə qurur, o da C ilə əlaqə saxlayır, onu X-də saxlayır və sonra sorğu A-ya qaytarılır.

Əgər siz virtual maşınlara uzaqdan qoşulsanız və sorğu yolunu izləməyə çalışsanız (və hansı zənglərin edildiyini əl ilə əlaqələndirin), siz dəli olarsınız. Unikal identifikatorun olması həyatı çox asanlaşdırır. Bu, xidmətiniz artdıqca vaxta qənaət etmək üçün edə biləcəyiniz ən asan şeylərdən biridir.

Orta səviyyə

Buradakı məsləhətlər əvvəlkilərdən daha mürəkkəbdir, lakin düzgün alətlər hətta kiçik və orta şirkətlər üçün də investisiyanın qaytarılmasını təmin edərək tapşırığı asanlaşdırır.

Mərkəzləşdirilmiş giriş

Təbrik edirik! 100 virtual maşın yerləşdirdiniz. Ertəsi gün CEO gəlir və xidməti sınaqdan keçirərkən aldığı səhvdən şikayətlənir. Bu, yuxarıda haqqında danışdığımız müvafiq ID-ni bildirir, lakin qəzaya səbəb olanı tapmaq üçün 100 maşının qeydlərinə baxmaq lazımdır. Və onu sabahkı təqdimata qədər tapmaq lazımdır.

Bu əyləncəli bir macəra kimi səslənsə də, bütün jurnalları bir yerdə axtarmaq imkanına sahib olduğunuzdan əmin olmaq daha yaxşıdır. Mən ELK yığınının daxili funksionallığından istifadə edərək qeydlərin mərkəzləşdirilməsi problemini həll etdim: axtarış edilə bilən jurnal kolleksiyasını dəstəkləyir. Bu, həqiqətən də müəyyən bir jurnal tapmaq problemini həll etməyə kömək edəcəkdir. Bonus olaraq, qrafiklər və bu kimi digər əyləncəli şeylər yarada bilərsiniz.

Bulud xidmətiniz olduqda necə yaxşı yatmaq olar: əsas memarlıq məsləhətləri
ELK yığın funksionallığı

Monitorinq agentləri

Artıq xidmətiniz işə düşüb, onun rəvan işlədiyinə əmin olmalısınız. Bunu etmək üçün ən yaxşı yol bir neçə işlətməkdir agentləri, paralel işləyən və işlədiyini və əsas əməliyyatların yerinə yetirildiyini yoxlayın.

Bu anda bunu yoxlayırsınız çalışan quruluş yaxşı hiss edir və yaxşı işləyir.

Kiçik və orta ölçülü layihələr üçün API-lərin monitorinqi və sənədləşdirilməsi üçün Postman-ı tövsiyə edirəm. Ancaq ümumiyyətlə, sadəcə olaraq, bir kəsin nə vaxt baş verdiyini bilmək və vaxtında xəbərdar olmaq üçün bir yolunuz olduğundan əmin olmaq istəyirsiniz.

Yükdən asılı olaraq avtomatik miqyaslama

Çox sadədir. Əgər VM xidmət sorğularınız varsa və o, 80% yaddaş istifadəsinə yaxınlaşırsa, onun resurslarını artıra və ya klasterə daha çox VM əlavə edə bilərsiniz. Bu əməliyyatların avtomatik icrası yük altında elastik güc dəyişiklikləri üçün əladır. Ancaq nə qədər pul xərclədiyinizə həmişə diqqətli olmalı və ağlabatan məhdudiyyətlər qoymalısınız.

Bulud xidmətiniz olduqda necə yaxşı yatmaq olar: əsas memarlıq məsləhətləri
Əksər bulud xidmətləri ilə siz onu daha çox server və ya daha güclü serverlərdən istifadə edərək avtomatik miqyasda konfiqurasiya edə bilərsiniz.

Təcrübə sistemi

Yeniləmələri təhlükəsiz yaymağın yaxşı yolu, istifadəçilərin 1%-i üçün bir saat ərzində nəyisə sınamaqdır. Siz, əlbəttə ki, belə mexanizmlərin işlək olduğunu görmüsünüz. Məsələn, Facebook istifadəçilərin dəyişiklikləri necə qəbul etdiyini görmək üçün auditoriyanın hissələrini fərqli rəngdə göstərir və ya şrift ölçüsünü dəyişir. Buna A/B testi deyilir.

Hətta yeni bir funksiyanın buraxılması təcrübə kimi başlaya və sonra onun necə buraxılacağını müəyyən edə bilər. Siz həmçinin xidmətinizdə deqradasiyaya səbəb olan funksiya əsasında konfiqurasiyanı tez bir zamanda "yadda saxlamaq" və ya dəyişdirmək imkanı əldə edirsiniz.

Advanced səviyyəsi

Budur həyata keçirmək olduqca çətin olan məsləhətlər. Yəqin ki, bir az daha çox resursa ehtiyacınız olacaq, ona görə də kiçik və ya orta ölçülü şirkət bunu idarə etməkdə çətinlik çəkəcək.

Mavi-yaşıl yerləşdirmələr

Bu, mən “Erlanq” açılma üsulu adlandırıram. Erlanq telefon şirkətləri meydana çıxanda geniş istifadə olundu. Telefon zənglərini yönləndirmək üçün yumşaq açarlardan istifadə olunmağa başladı. Bu keçidlərdə proqram təminatının əsas məqsədi sistem təkmilləşdirmələri zamanı zəngləri buraxmamaq idi. Erlang-ın əvvəlki modulu zədələmədən yeni modul yükləmək üçün gözəl bir yolu var.

Bu addım yük balanslaşdırıcısının mövcudluğundan asılıdır. Təsəvvür edək ki, proqramınızın N versiyası var və sonra N+1 versiyasını yerləşdirmək istəyirsiniz. 

Siz ola bilər sadəcə olaraq xidməti dayandırın və istifadəçiləriniz üçün uyğun olan vaxtda növbəti versiyanı buraxın və bir az fasilə əldə edin. Amma tutaq ki, sizdə var həqiqətən ciddi SLA şərtləri. Beləliklə, SLA 99,99% o deməkdir ki, siz oflayn ola bilərsiniz yalnız ildə 52 dəqiqə.

Əgər həqiqətən belə göstəricilərə nail olmaq istəyirsinizsə, eyni anda iki yerləşdirməyə ehtiyacınız var: 

  • hazırda olan (N);
  • növbəti versiya (N+1). 

Siz reqressiyaları aktiv şəkildə izləyərkən, yük balanslaşdırıcısına trafikin faizini yeni versiyaya (N+1) yönləndirməsini söyləyirsiniz.

Bulud xidmətiniz olduqda necə yaxşı yatmaq olar: əsas memarlıq məsləhətləri
Burada yaxşı işləyən yaşıl N yerləşdirməmiz var. Biz bu yerləşdirmənin növbəti versiyasına keçməyə çalışırıq

Əvvəlcə N+1 yerləşdirməmizin az miqdarda trafiklə işlədiyini görmək üçün həqiqətən kiçik bir test göndəririk:

Bulud xidmətiniz olduqda necə yaxşı yatmaq olar: əsas memarlıq məsləhətləri
Nəhayət, bir sıra avtomatlaşdırılmış yoxlamalarımız var ki, onları nəhayət yerləşdirməmiz tamamlanana qədər icra edirik. Əgər sən olduqca çox ehtiyatlı olsanız, pis reqressiya halında tez geri qaytarmaq üçün N yerləşdirmənizi həmişəlik saxlaya bilərsiniz:

Bulud xidmətiniz olduqda necə yaxşı yatmaq olar: əsas memarlıq məsləhətləri
Daha təkmil səviyyəyə keçmək istəyirsinizsə, mavi-yaşıl yerləşdirmədəki hər şeyin avtomatik işləməsinə icazə verin.

Anomaliyaların aşkarlanması və avtomatik azaldılması

Mərkəzləşdirilmiş giriş və yaxşı log kolleksiyanız olduğunu nəzərə alsaq, artıq daha yüksək hədəflər təyin edə bilərsiniz. Məsələn, uğursuzluqları qabaqcadan proqnozlaşdırın. Funksiyalar monitorlarda və jurnallarda izlənilir və müxtəlif diaqramlar qurulur - və nəyin səhv olacağını əvvəlcədən təxmin edə bilərsiniz:

Bulud xidmətiniz olduqda necə yaxşı yatmaq olar: əsas memarlıq məsləhətləri
Anomaliyalar aşkar edildikdən sonra siz xidmətin təqdim etdiyi bəzi ipuçlarını araşdırmağa başlayırsınız. Məsələn, CPU yükündəki sıçrayış sabit diskin nasaz olduğunu göstərə bilər, sorğuların artması isə miqyasını böyütməyiniz lazım olduğunu göstərə bilər. Bu cür statistik məlumatlar xidməti aktivləşdirməyə imkan verir.

Bu anlayışlarla siz istənilən ölçüdə miqyaslaya və maşınların, verilənlər bazalarının, əlaqələrin və digər resursların xüsusiyyətlərini proaktiv və reaktiv şəkildə dəyişə bilərsiniz.

Hamısı budur!

Bu prioritetlər siyahısı bulud xidmətini artırırsınızsa, sizi bir çox problemlərdən xilas edəcək.

Orijinal məqalənin müəllifi oxucuları şərhlərini tərk etməyə və dəyişikliklər etməyə dəvət edir. Məqalə açıq mənbə kimi paylanır, müəllifin istəklərini çəkir Github-da qəbul edir.

Mövzu ilə bağlı başqa nə oxumaq lazımdır:

  1. Gedin və CPU önbelleği
  2. Piratlıq ruhunda Kubernetes həyata keçirmək üçün şablon ilə
  3. Telegram-da Kubernetes ətrafında kanalımız

Mənbə: www.habr.com

Добавить комментарий