Bulud infrastrukturunuzu necə sabit, etibarlı və miqyaslı edə biləcəyinizi burada tapa bilərsiniz.

Başlanğıc DevOps çətindir

Bir başlanğıc olaraq narahat olmağınız üçün çox şey var. Marketinq, məhsul inkişaf etdirmə, komandanızın birliyi. Hər şey yıxılmamaq və özünü yandırmamaq üçün çılpaq minimumun əldə edildiyi "minimum canlı" naxışa uyğundur.

Bir müəssisə bulud memarı olaraq DevOps-da nə qədər iş görülə biləcəyini özüm bilirəm. Bir başlanğıcın qurucusu olaraq, şeylərə nə qədər az vaxt ayırmağın lazım olduğunu da bilirəm - daha çox hər şeyə vaxt ayırmağa bənzəyir.

Təəssüf ki, bulud infrastrukturu da bu qaydaya uyğundur və bu sahədəki bütün "ən yaxşı təcrübələr" vaxt aparan, mütləq startuplarda olmayan modelləri izləməyə meyllidir.

Ümid edirəm ki, bu təlimat sizə sabitlik, təhlükəsizlik və ölçeklenebilirliğe vurğu edən bir "minimal funksional bulud infrastrukturu" nun necə görünə biləcəyinə dair ümumi bir məlumat verir.

Sabitlik

Bulud infrastrukturunuzun dayanıqlığına baxarkən, minimal funksional bir bulud infrastrukturunu inkişaf etdirərkən diqqət yetirməli olduğunuz bir neçə əsas məqam var. Ölümcül səhv bərpa, avtomatik yenidən başladın və kifayət qədər mənbənin mövcudluğundan əmin olun. Diqqətinizi bu üç şeyə yönəltməyinizlə iş vaxtınız baxımından olduqca yaxşı bir yerdə olmalısınız.

Fəlakətli Arızanın Bərpası (Avtomatik Yedəkləmə)

Ən pis ssenarini bilirsiniz - serverinizi və sabit diskinizi kərpiclə örtdünüz. Minimum praktik həll, məlumat itkisinin qarşısını almaq üçün planlaşdırılmış avtomatik ehtiyat ehtiyatlarına sahib olmaqdır.

Bulud təminatçınızdan asılı olaraq bir neçə fərqli seçiminiz var. Diskdə anlıq şəkillər götürmək ümumiyyətlə minimum ömür müddəti ilə bir yedekləmə prosesi həyata keçirməyin ən asan yoludur. Bununla birlikdə, daha inkişaf etmiş (və sabit) metodlara verilənlər bazasına xüsusi ehtiyatlar (verilənlər bazasının ehtiyat nüsxəsi) və paylanmış sistemlər daxildir.

  • AWS Amazon istifadə edirsinizsə CloudWatch istifadə etməyinizi məsləhət görərdim. Bu, planlaşdırılmış iş yerləri yaratmağa imkan verir (məsələn, avtomatik anlar) - bu təlimata baxın
  • GCP Ayrıca anlık görüntüləri Google ilə planlaşdıra bilərsiniz. Daha çox məlumat üçün bu təlimata müraciət edin
  • Cloud agnostic Yedəkləmə prosesinizi bulud təminatçınızla bağlamaq istəmirsiniz? Ən vacib məlumatlarınız verilənlər bazası və verilən yükləmələrdir. Bir verilənlər bazası üçün vaxtaşırı verilənlər bazasını atan və məlumatları etibarlı bir yerə göndərən bir skript yazmalısınız (S3 xüsusi vedrə, paylanmış fayl sistemi və s.). Bununla birlikdə, bu, platformaya xas bir metoddan daha çox səhvlərə meyllidir, buna görə diqqətli olun.

Yedək bərpa metodunuzu sınadığınızdan əmin olun və ya GitLab-da baş verənləri, beş bərpa metodunun heç vaxt bərpa etmədikləri üçün uğursuz olduqda risk etdiklərinə əmin olun.

Serverin yenidən başlaması halında xidmətin avtomatik yenidən başlaması

Avtomatik yenidən başlama iki hissədən ibarətdir. Biri: tətbiqiniz çökərsə, yenidən başlayacaqmı? İkincisi, serverinizi yenidən başlatdığınız zaman tətbiqiniz avtomatik olaraq başlayacaq?

Crontab - Crontab, işlərin asanlıqla planlaşdırılmasını təmin edən faydalı bir vasitədir. Yığınızı avtomatik olaraq başlamağın ən asan yolu, yenidən başlada davam edəcək bir crontab işi yaratmaqdır. Bu təlimatda bu barədə məlumat tapa bilərsiniz.

/etc/init.d - Çox sistem init.d skriptlərini dəstəkləyir. İnit.d ilə önyükləmə zamanı başlaya bilən skriptləri təyin edə və tətbiqlərinizə daha çox nəzarət etmək üçün stop, start və status əmrlərini (məsələn, xidmət start myscript) dəstəkləyə bilərsiniz. Crontabdan biraz daha mürəkkəbdir, lakin daha çox xüsusiyyətləri var. Bu giriş init.d skriptinin necə qurulacağını izah edir.

Bu üsullar arasındakı fərqlər ilə maraqlanırsınızsa, bu yığın mübadiləsi məqaləsinə baxın.

Bir tətbiqin çökməsi halında xidmətin avtomatik yenidən başlaması

Tətbiqlər həmişə sabit olmur və narahat vaxtlarda qəzaya məruz qala bilər. Sabitliyi qorumağın əla bir yolu avtomatik olaraq yenidən başlaya biləcək bir vasitəyə sahib olmaqdır.

  • NodeJS - Forever və ya PM2
  • Ümumi - Bu yazı, baş skriptlərindən istifadə edərək prosesləri necə yenidən başlatacağınızı göstərəcəkdir

Həmişə kifayət qədər mənbənin olduğundan əmin olun

Server uğursuzluğunun ən çox görülən səbəblərindən biri mənbələri tükənən serverlərdir. SQL serverlərindəki disk boşluğunu və istehsal tətbiqetmələrində yaddaşın olmadığını öyrəndim. Resurs monitorinqinin qurulması bu riski azaltmaq üçün yaxşı bir yoldur.

  • AWS - CloudWatch yaxşı bir monitorinq vasitədir. Xüsusi hadisələr üçün e-poçt bildirişləri qura bilərsiniz.
  • GCP - Stackdriver Monitorinqi oxşar funksiyalar təklif edir və eyni zamanda Slack kimi mesajlaşma sistemlərinə inteqrasiya edilə bilər.
  • Yenə də Cloud Agnostic - Crontab bu tip tapşırıqları yaxşı yerinə yetirir, ancaq sistem qaynaqlarını yoxlayacaq və eşiğinizə çatdıqda e-poçt göndərəcək bir skript yazmalısınız.

Başlanğıc metodunuzu və açılış skriptlərinizi sənədləşdirdiyinizə əmin olun. Kodu versiya nəzarətində saxlayın, yoxsa gizli kodu unutaraq miqyaslandırma problemi yaranır. «

Təhlükəsizlik

Təəssüf ki, MVP fəlsəfəsinə gəldikdə təhlükəsizlik gözdən qaçırılır. İnsanlar sadəcə vaxt sərf etdikləri üçün qazanılan dəyəri görmürlər. Təhlükəsizlik kilidi ciddi məlumat itkisinə, müştərinin etibarına və vaxtına səbəb ola biləcəyi üçün bu təhlükəli qumar formasıdır. Bir təhlükəsizlik ayarı ilə başlamaq üçün edə biləcəyiniz bəzi əsas şeylər.

SSL

Bu günlərdə SSL müasir SaaS tətbiqi üçün əsas tələbdir. Bir çox istifadəçi https dəstəyi olmadan tətbiqetmələrdən istifadə etməyi rədd edir. Let's Encrypt kimi alətlər sertifikatları asan və pulsuz əldə edir.

Server təhlükəsizliyi

Təhlükəsizliyə gəldikdə ən vacib şeylərdən biri də serverləri düzgün idarə etməkdir. Unutmamalı olduğumuz bir neçə əsas tövsiyə.

  • Verilənlər bazalarına açıq internet daxil olmamalıdır.
  • Tətbiqlərinizi və əməliyyat sisteminizi yeniləyin, serverinizi yeni təhlükəsizlik zəifliklərindən qoruyan tez-tez təhlükəsizlik yeniləmələri var.
  • Tamamilə zəruri olanlar istisna olmaqla, bütün limanları möhürləyin.
  • İstifadəçi adları / şifrələr istifadə etməyin - düymələrdən istifadə etmək daha təhlükəsizdir.
  • İstifadəçilərinizə serverinizə giriş lazım olduqda kök açarı verməyin. Yeni hesablar yaradın və ümumi açarı əldə edin.

Gizli idarəetmə

API açarları, etimadnamə sənədləri, konfiqurasiyalar və bütün həssas məlumatlar idarə olunmalıdır. Bu cür məlumatları buluda yerləşdirməkdən çəkinirəm, nəinki bulud provayderinin nə əldə edə biləcəyini bilmədiyim üçün, həm də hesabımı alanda bütün sirlərim açıldığı üçün.

  • Mümkün qədər çox sirri yerli olaraq saxlayın.
  • Tətbiqinizə sirləri kodlamayın - tətbiq kodunuzdan kənarda saxlaya biləcəyiniz konfiqurasiya sənədləri yaradın.
  • Sırları ümumi Github deposunda saxlamayın (ümumiyyətlə buludla ehtiyatlı olun).
  • İstifadəçi parollarını və öz sirlərinizi saxlayarkən düz mətn istifadə etməkdən çəkinin

Ölçeklenebilirlik

"Əksər hallarda, ölçeklenebilirlik söz mövzusu olduqda, buna ehtiyacınız olmayacaq (işə başladığınız zaman)."

Vaxtınız, iradəniz və bacarıqlarınız (və ya pulunuz) varsa, ölçeklenebilirlik axtarırsınızsa gələcəkdə faydalar ola bilər. Əks təqdirdə, buna əhəmiyyət verməməyi və əvvəlki iki məqama diqqət yetirməyi məsləhət görürəm.

Məhsulunuzu ilk 1000 müştərinizə deyil, ilk 5 müştərinizə çatdırmağa diqqət yetirin. Ölçeklenebilir bir infrastruktur qurmaq üçün edə biləcəyiniz ən yaxşı şey, tətbiqinizi qurarkən dizayn prinsiplərini nəzərə almaqdır, belə ki miqyaslandırma tamamlandıqda çox çalışmamalısınız. Bilməli idim - dəfələrlə texnoloji tələyə düşmüşəm.

Konteynerləşdirmə

Docker və Kubernetes kimi vasitələr miqyaslandırma üçün əladır

Ölçeklemede asan bir qələbə, tətbiqinizi qablaşdırmaqdır. Docker-da yaxşı təlimatlar tapa bilərsiniz. Budur bəzi məsləhətlər:

  • Ətraf mühit dəyişənləri vasitəsilə tətbiqinizin konfiqurasiyasını aktivləşdirin. Verilənlər bazası məlumatları və administratorun ilk istifadəçi adı / şifrəsi kimi şeylər CI / CD boru kəməri qurmaqda və tətbiqlərin yerləşdirilməsini avtomatlaşdırmaqda çox yol qət edir.
  • Mümkün qədər qabınızdan uzaq tutun. Bu, Kubernetes kimi alətlər vasitəsilə vətəndaşlığı olmayan yerləşdirmələrə imkan verir.
  • Bağımlılıkları və görüntü ölçüsünü azaltmaq üçün modullarınızı qurma prosesinin bir hissəsi olaraq quraşdırın.

Serverlərinizin konfiqurasiyalarını yaxşı sənədləşdirin

Hər şeyi versiya nəzarətində saxlayın: konfiqurasiyalar, skriptlər və server hazırlamaq üçün prosedurlar. Beləliklə, miqyasdan qənaət edirsiniz. Çox spesifik bir şəkildə yapılandırılmış serverlər tələb edən miqyaslı tətbiqetmə ilə məşğul olmalıydım. Sənədlər əskikdirsə, uzun müddət cəhənnəmdə olacaqsınız.

Nəticə

Bulud infrastrukturunun qurulması və saxlanılması çox iş tələb edir. Başlanğıclarda ən çətin an olur, çünki vaxt yoxdur və DevOps-a gəldikdə çox vaxt bacarıqları yoxdur. Əsas şeylərə konsentrə ola bilərsiniz. Təhlükəsizlik, sabitlik və vaxtınız varsa, ölçeklenebilirlik.

ServiceBot sayəsində yerləşdirmələri (CI / CD) avtomatlaşdıraraq, abunəliklərinizi idarə edərək və sizinlə müştəriləriniz arasındakı ümumi sürtünmə nöqtələrini aradan qaldıraraq SaaS-lərinizi genişləndirə bilərsiniz. Dinləmək