Bulud funksiyaları vs Kubernetes Mühərriki

Avqust 2019 yeniləndi.

Google-un hesablama xətti bir çox əla seçim təklif edir. GCP-də ən yaxşı texnologiyalardan ikisi Kubernetes Mühərriki və Bulud funksiyalarıdır. Hər ikisi güclüdür və bir geliştirici olaraq Cloud Functions'ı silmək asandır, çünki əlimdən çox inzibati iş tələb olunur. Bu inzibati iş, deklarativ yaml sənədlərinə baxmayaraq Kubernetes Mühərrikini konfiqurasiya etmək üçün vacib bir cəhətdir.

Bu məqalə üçün orijinal bir yer sadəcə bir məndən soruşdu: "Cloud Functions üzərində Kubernetes'i nə vaxt seçərdin?". Bunların hər ikisi ilə işlədiyim gündən bəri özümü çox düşündüyüm bir sualdır və buna görə ən yaxşı yolu Cloud Funktsiyalarına tətbiq etmək və Kubernetes Mühərrikinin daha yaxşı bir seçim olacağını izah etməkdir. Hər səbəbi siyahıya almasam da, burada Kubernetes seçimində rol oynayan bir neçə ən yaxşısı var.

3 dil onu kəsmək niyyətində deyil

Bulud funksiyalarını istifadə edərkən seçmək üçün yalnız üç inkişaf mühiti var və bu Node.js, Python və Go. Bu inanılmaz bir texnologiyadır və güclüdür.

Kubernetes Mühəndisliyi sizə sərbəstlik təqdim edir, çünki yaratdığınız podlar hər hansı bir dil və işləmə müddətini işlədə bilən təcrid olunmuş mühitdir. Bir NET mağazası ola bilər və C # istifadə etməlisiniz. Apple’dan olan Core Foundation kitabxanalarını bir xidmətdə istifadə etmək fikri ilə maraqlandım. Bu xidməti Swift-də yazmaq lazımdır. Bunlar fərqli bir dil və çərçivə dəsti istifadə etməyi ehtiva edən bəzi hallardır. Gələcəkdə Cloud Functions bu texnologiyaların daha çoxunu dəstəkləyəcək, lakin bu istehsalda bir neçə il çəkəcəkdir.

Sürət

Sürət və hazırda 200 ms-də deyil, demək istəyirəm. Bu əsaslı bir fərqdir. Yalnız məlumat almaq və bir yerə basmaq istədiyiniz hallar var. Bir müddətdir Cloud Fəaliyyəti istifadə edilmirsə, o zaman bu funksiyanın bütün nümunələri bağlanır. Bu yaxşı bir şeydir, istifadə etmirsinizsə, heç bir şey ödəmirsiniz. Bununla birlikdə, yalnız soyuq başlanğıc vaxtını gözləmək istəmədiyiniz hallar ola bilər. Bu seçim deyilsə, onda Kubernetes sizin kürəyinizə sahib olacaq, siz artıq çoxluq olmusunuz və ehtiyac yarandıqda xüsusi xidmət üçün çalışan bir neçə podaya sahib ola bilərsiniz.

Ağır emal və böyük iş yükü

Funksiyalar müxtəlif xidmətləri bir-birinə bağlamaq üçün əladır. Ancaq ağır və ya uzun müddət davam edən vəzifələr üçün nəzərdə tutulmamışdır. Compute, Kubernetes və App Engine ilə müqayisədə CPU və Yaddaşda qısadır. Onların 5 dəqiqə daha sürətli bir müddəti var, yəni iş tez yerinə yetirilməlidir və tez bir zamanda işdən qayıtmalısınız.

Üstəlik, ağır yükləri yaxşı idarə etmir. Bir bulud funksiyası üzərində çoxlu sayda görüntü işlənməsi və ya böyük məlumat təhlili etmək istəsəniz, problemlə üzləşəcəksiniz. Kubernetes Mühərriki ilə yüksək səviyyəli CPU, yaddaş və s. Kimi müxtəlif parametrlərə əsaslanan podları böyütmək bacarığınız var. Bulud funksiyaları ilə CPU seçmək qabiliyyətiniz yoxdur və yaddaşın ayrılması digər hesablama xidmətləri ilə müqayisədə olduqca aşağıdır.

Dəvət dəlilik

Neçə dəfə funksiyanı işə salırsınız? Gündə yüz və ya yüz min dəfə olur? Bulud funksiyanız bir yanğınsöndürmə bazası tetikleyicisinə güvənirsə, fərqlidir, o zaman Cloud Fəaliyyətini həll etməyə dəyər. Bununla birlikdə, e-poçtları doğrulamaq və ya çox miqdarda məlumat qəbul etmək üçün bir xidmət qurmağa çalışırsınızsa, Kubernetes'i düşünməyə dəyər. Birincisi, hər zaman bir neçə pods işləyə bilər, buna görə xidmətdə hər hansı bir gecikməni azaldacaqsınız. İkincisi, Cloud funksiyaları ilə qiymətin bir hissəsi neçə dəfə bir funksiyanın çağırılmasıdır. Kubernetes ilə pik dövrlərdə geri çəkilməkdən daha çox məqam əldə edə bilərsiniz. Xidmətinizin on min dəfə səslənməsinin əhəmiyyəti yoxdur, bu anda ümumi xərclərinizi azaldacaq çalışan qovşaqların sayını ödəyirsiniz.

Microservice Rabitə

Nəhayət, xidmətdən servis xidmətinə sahibik. Bulud funksiyaları həm Firebase, həm də GCP üçün bəzi güclü güclü tetikleyicilərə malikdir. Məsələn, Cloud Pub / Sub tetikleyicisini quraşdıra və ya Cloud Storage-yə sənədlər yükləyərək başqa bir funksiyanı işə sala bilərsiniz. Bundan əlavə, veb qarmaqlar yaratmaq üçün faydalı olan HTTP tetikleyicilerimiz var.

Ancaq tetiklenmeye ehtiyacı olmayan bir neçə xidmətiniz varsa, ancaq bir-birinizlə danışmalarını istəsəniz? Hal-hazırda xidmətlər arasında söhbət və ünsiyyət, Cloud Functions istifadə edərkən həqiqətən təsirli bir yanaşma deyildir. Yalnız yerləşdirmə prosesini düşünün. Google Cloud-da bir dəstə xidmət yeniləməyə başlamağınız üçün Cloud funksiyaları ilə bu çətin olacaq. Bu vaxt Kubernetes ilə konfiqurasiyanızı yükləyirsiniz və Kubernetes ətraf mühitin sizin üçün düzgün işləməsini təmin edir. Bəli, yaml fayllarını yaratmaq üçün daha çox iş var, ancaq sonra bu infrastrukturu işlətmək çox sadədir.

Nəticədə, bu nə qurduğunuzdan və ehtiyaclarınızdan asılıdır, ancaq bir zəngə əsaslanan çoxlu HTTP funksiyası tetikleyicisini Cloud Functions'a çağırmaq fikri ilə maraqlanırsınızsa, geri addım ataraq Kubernetes'in daha yaxşı bir seçim olub olmadığını soruşun meydana gələn 90% ünsiyyət üçün.

Bu siyahı tam deyil və şərh üçün açıqdır. Yenə bir şirkət və təşkilat olaraq ehtiyaclarınıza əsaslanır. Kubernetes hələ də sürətlə böyüyür və hər kəsin özləri üçün Kubernetes Mühəndis layihəsini idarə edə biləcək bir inkişaf etdirici / komandası yoxdur. Digər tərəfdən, ola bilsin ki, çox sayda .NET əsas xidmətləri istifadə etmək istəsəniz və Cloud funksiyaları sadəcə onu kəsməz, çünki Node.js, Python və ya Go istifadə etməlisiniz. Hər zaman geri addım atmaq və oyundakı fərqli texnologiyalar və onları mümkün qədər məhsuldar etmək üçün necə istifadə edə biləcəyimizi düşünmək lazımdır.

James Wilson, Go və Google Cloud-dan istifadə edərək inkişaf etdirilmiş bir bina paylanmış sistemdir. O, həm də Pluralsight müəllifidir və burada kurslarına baxa bilərsiniz.