Cloud funktsiyalari va Kubernetes dvigateliga qarshi

2019 yil avgustda yangilangan.

Google hisob-kitoblari juda ko'p tanlovlarni taklif etadi. GCP-dagi eng yaxshi texnologiyalardan ikkitasi Kubernetes Dvigatel va Cloud funktsiyalari. Ikkalasi ham kuchli va dasturchi sifatida Cloud Funktsiyalarni asl holatiga qaytarish juda oson, chunki u juda ko'p ma'muriy ishlarni mening qo'limdan oladi. Ushbu ma'muriy ish, deklarativ yaml fayllariga qaramay, Kubernetes Engine-ni sozlashda muhim jihatdir.

Ushbu maqola uchun asl joy ishlab chiqaruvchi mendan: "Cloud funktsiyalari orqali Kubernetes-ni qachon tanlaysiz?" Deb so'rabdi. Bu ikkalasi bilan ishlaganimdan beri men o'zimni juda ko'p ko'rib chiqdim va shuning uchun bu muammoni hal qilishning eng yaxshi usuli Cloud Funktsiyalariga mos kelmaslik va Kubernetes Engine-ni tanlash yaxshiroq bo'lgan hollarni tushuntirishdir. Men har qanday sababni kataloglashtirmasam-da, Kubernetesni tanlashda o'ynaydigan eng yaxshilari.

3 til uni kesmoqchi emas

Cloud Funktsiyalaridan foydalanganda hozirgi paytda sizda Node.js, Python va Go ni tanlash uchun faqat uchta muhit mavjud. Bu aql bovar qilmaydigan texnologiya va u juda kuchli.

Kubernetes Engine sizga erkinlikni taklif qiladi, chunki siz yaratadigan podkastlar har qanday til va ish vaqtini boshqarishi mumkin bo'lgan xavfsiz muhitdir. Siz .NET do'koni bo'lishingiz mumkin va C # vositasidan foydalanishingiz kerak. Men Apple-dan Core Foundation kutubxonalaridan xizmatda foydalanish g'oyasini ilgari surdim. Ushbu xizmat Swift-da yozilishi kerak. Bular boshqa til va ramkalar majmuasidan foydalanish bilan bog'liq ba'zi holatlar. Kelgusida Cloud Functions ushbu texnologiyalarning ko'pini qo'llab-quvvatlaydi, ammo bu ishlab chiqarilishidan bir necha yil oldin kerak bo'ladi.

Tezlik

Tezlik, men hozir 200 msda emas. Bu tubdan farq. Ma'lumot olish va uni biron bir joyga bosmoqchi bo'lgan holatlar mavjud. Agar bulutli funktsiya biroz vaqt davomida ishlatilmasa, u holda ushbu funktsiyaning barcha holatlari yopiladi. Bu yaxshi narsa, agar siz undan foydalanmasangiz, siz hech narsa to'lamaysiz. Biroq, siz shunchaki sovuq boshlanish vaqtini kutishni istamagan holatlar bo'lishi mumkin. Agar bu imkoniyat bo'lmasa, Kubernetes sizning orqangizda bo'ladi, siz allaqachon klastersiz va zarurat tug'ilganda, ushbu xizmat uchun ishlaydigan ikkita podani ishlata olasiz.

Og'ir ishlov berish va katta ish yuklari

Funktsiyalar turli xil xizmatlarni bir-biriga ulash uchun juda yaxshi. Biroq, ular og'ir yoki uzoq ishlaydigan vazifalar uchun mo'ljallanmagan. Ular Compute, Kubernetes va App Engine-ga qaraganda CPU va Xotirada qisqa. Ular 5 daqiqada ancha tezroq tanaffus qilish vaqtiga ega, bu ishni tezda bajarish kerak va siz tezda funktsiyadan qaytishingiz kerak.

Bundan tashqari, u og'ir yuklarni yaxshi bajara olmaydi. Agar siz rasmlarni qayta ishlash yoki bulut funktsiyasida katta ma'lumotlarni tahlil qilmoqchi bo'lsangiz, muammoga duch kelasiz. Kubernetes Dvigatel yordamida siz protsessorlarni yuqori darajadagi protsessor, xotira va boshqalar kabi turli parametrlarga asoslangan podkastlarni o'lchash qobiliyatiga egasiz. Bulutli funktsiyalarda siz protsessorni tanlash imkoniyatiga ega emassiz va boshqa hisoblash xizmatlariga qaraganda xotira taqsimoti ancha past.

Iltijo jinnilik

Funktsiyani necha marta ishlatasiz? Bu kuniga yuz yoki yuz ming marta bo'ladimi? Agar sizning bulutli funktsiyangiz firebase ma'lumotlar bazasini ishga tushirishga tayanadigan bo'lsa, u holda Cloud Funktsiyasini o'rnatishga to'g'ri keladi. Ammo, agar siz elektron pochta xabarlarini tekshiradigan yoki shunchaki katta miqdordagi ma'lumotlarni o'zlashtiradigan xizmatni yaratmoqchi bo'lsangiz, Kubernetes haqida o'ylashingiz kerak. Birinchidan, siz har doim bir nechta podlarni ishlata olasiz, shunda xizmatdagi kutish vaqtini kamaytirasiz. Ikkinchidan, Cloud funktsiyalari bilan narxning bir qismi funktsiyani necha marta chaqirishidan iborat. Kubernetes yordamida siz cho'qqilarning ko'p vaqtida pastga tushgandan ko'ra ko'proq misollar keltirishingiz mumkin. Sizning xizmatingizga o'n ming marta murojaat qilishning ahamiyati yo'q, hozirda siz ishlayotgan tugunlar va podkastlar uchun to'laysiz, bu sizning umumiy xarajatlaringizni kamaytiradi.

Microservice aloqasi

Va nihoyat, bizda xizmatdan-xizmatga aloqa mavjud. Bulut funktsiyalari ikkala Firebase va GCP uchun juda kuchli kuchga ega. Masalan, Cloud Pub / Sub trigger-ni o'rnatishingiz yoki boshqa faylni Cloud Storage-ga yuklash orqali ishga tushirishingiz mumkin. Bundan tashqari, bizda veb kancalarni yaratishda yordam beradigan HTTP triggerlari mavjud.

Ammo, agar sizda ishga tushirish kerak bo'lmagan bir nechta xizmat mavjud bo'lsa, lekin siz ularni bir-birlari bilan gaplashishini xohlasangiz nima bo'ladi? Hozirgi vaqtda xizmatlar o'rtasida suhbatlashish va aloqa qilish Cloud Functions-dan foydalanganda samarali usul emas. Faqatgina tarqatish jarayoni haqida o'ylang. Google Cloud-da bir nechta xizmatlarni yangilashni boshlaganingizdan so'ng Cloud funktsiyalari bilan bu juda qiyin. Ayni paytda, Kubernetes bilan siz shunchaki konfiguratsiyalaringizni yuklayapsiz va Kubernetes atrof-muhit siz uchun to'g'ri ishlashini ta'minlaydi. Ha, yaml fayllarini yaratish uchun oldindan ko'p ish bor, lekin keyin infratuzilmani saqlash juda oddiy.

Oxir oqibat, bu sizning qurayotgan narsangizga va sizning ehtiyojlaringizga bog'liq, ammo agar siz bir nechta qo'ng'iroqlar asosida HTTP funktsiyasi triggerlarini Cloud Funktsiyalaringizga chaqirish g'oyasi bilan kurashayotgan bo'lsangiz, orqaga qaytib, o'zingizdan Kubernetes afzalroqmi deb so'rang. sodir bo'lgan 90% aloqa uchun.

Ushbu ro'yxat to'liq emas va sharhlash uchun ochiqdir. Shunga qaramay, bu sizning kompaniya va tashkilot sifatida sizning ehtiyojlaringizga asoslanadi. Kubernetes hali ham tez sur'atlar bilan o'sib bormoqda va hamma ham Kubernetes Engine loyihasini boshqarishi mumkin bo'lgan ishlab chiquvchi / guruhga ega emas. Boshqa tomondan, ehtimol sizda o'rnatmoqchi bo'lgan juda ko'p .NET Core xizmatlari mavjud va Cloud Functions shunchaki uni to'xtata olmaydi, chunki siz Node.js, Python yoki Go-dan foydalanishingiz kerak. Har doim orqaga qadam tashlab, o'ynashdagi turli texnologiyalar va ularni iloji boricha samarali bo'lishimiz uchun qanday foydalanishimiz haqida o'ylang.

Jeyms Uilson Go va Google Cloud-dan foydalangan holda taqsimlangan tizimlar ishlab chiqaruvchisidir. U shuningdek, Pluralsight muallifidir va siz uning kurslarini bu erda ko'rishingiz mumkin.