Tanpa pelayan di rak

Tanpa pelayan di rak
Tanpa pelayan bukan tentang ketiadaan fizikal pelayan. Ini bukan pembunuh kontena atau trend berlalu. Ini adalah pendekatan baharu untuk membina sistem dalam awan. Dalam artikel hari ini kita akan menyentuh seni bina aplikasi Tanpa Pelayan, mari lihat peranan yang dimainkan oleh pembekal perkhidmatan Tanpa Pelayan dan projek sumber terbuka. Akhir sekali, mari kita bincangkan tentang isu penggunaan Tanpa Pelayan.

Saya mahu menulis bahagian pelayan aplikasi (atau kedai dalam talian). Ini boleh jadi sembang, perkhidmatan penerbitan kandungan atau pengimbang beban. Walau apa pun, akan ada banyak sakit kepala: anda perlu menyediakan infrastruktur, menentukan kebergantungan aplikasi, dan memikirkan sistem pengendalian hos. Kemudian anda perlu mengemas kini komponen kecil yang tidak menjejaskan operasi monolit yang lain. Nah, jangan lupa tentang penskalaan di bawah beban.

Bagaimana jika kita mengambil bekas yang tidak lama, di mana kebergantungan yang diperlukan sudah dipasang terlebih dahulu, dan bekas itu sendiri diasingkan antara satu sama lain dan daripada OS hos? Kami akan membahagikan monolit kepada perkhidmatan mikro, setiap satunya boleh dikemas kini dan diskalakan secara bebas daripada yang lain. Dengan meletakkan kod dalam bekas sedemikian, saya boleh menjalankannya pada mana-mana infrastruktur. Sudah lebih baik.

Bagaimana jika anda tidak mahu mengkonfigurasi bekas? Saya tidak mahu berfikir tentang skala aplikasi. Saya tidak mahu membayar untuk bekas terbiar berjalan apabila beban pada perkhidmatan adalah minimum. Saya mahu menulis kod. Fokus pada logik perniagaan dan bawa produk ke pasaran pada kelajuan cahaya.

Pemikiran sedemikian membawa saya ke pengkomputeran tanpa pelayan. Tanpa pelayan dalam kes ini bermakna bukan ketiadaan fizikal pelayan, tetapi ketiadaan sakit kepala pengurusan infrastruktur.

Ideanya ialah logik aplikasi dipecahkan kepada fungsi bebas. Mereka mempunyai struktur acara. Setiap fungsi melaksanakan satu "tugas mikro". Apa yang diperlukan daripada pembangun ialah memuatkan fungsi ke dalam konsol yang disediakan oleh pembekal awan dan mengaitkannya dengan sumber acara. Kod akan dilaksanakan atas permintaan dalam bekas yang disediakan secara automatik, dan saya hanya akan membayar untuk masa pelaksanaan.

Mari lihat bagaimana rupa proses pembangunan aplikasi sekarang.

Dari pihak pemaju

Tadi kita mula bercakap tentang permohonan untuk kedai dalam talian. Dalam pendekatan tradisional, logik utama sistem dilakukan oleh aplikasi monolitik. Dan pelayan dengan aplikasi sentiasa berjalan, walaupun tidak ada beban.

Untuk beralih ke tanpa pelayan, kami memecahkan aplikasi kepada microtasks. Kami menulis fungsi kami sendiri untuk setiap daripada mereka. Fungsi adalah bebas antara satu sama lain dan tidak menyimpan maklumat keadaan (tanpa kewarganegaraan). Mereka mungkin juga ditulis dalam bahasa yang berbeza. Jika salah satu daripada mereka "jatuh", keseluruhan aplikasi tidak akan berhenti. Seni bina aplikasi akan kelihatan seperti ini:

Tanpa pelayan di rak
Pembahagian kepada fungsi dalam Tanpa Pelayan adalah serupa dengan bekerja dengan perkhidmatan mikro. Tetapi perkhidmatan mikro boleh melaksanakan beberapa tugas, dan fungsi sepatutnya melaksanakannya dengan ideal. Mari bayangkan bahawa tugasnya adalah untuk mengumpul statistik dan memaparkannya atas permintaan pengguna. Dalam pendekatan perkhidmatan mikro, tugasan dilakukan oleh satu perkhidmatan dengan dua pintu masuk: menulis dan membaca. Dalam pengkomputeran tanpa pelayan, ini akan menjadi dua fungsi berbeza yang tidak berkaitan antara satu sama lain. Pembangun menjimatkan sumber pengkomputeran jika, sebagai contoh, statistik dikemas kini lebih kerap daripada dimuat turun.

Fungsi tanpa pelayan mesti dilaksanakan dalam tempoh masa yang singkat (tamat masa), yang ditentukan oleh pembekal perkhidmatan. Sebagai contoh, untuk AWS tamat masa ialah 15 minit. Ini bermakna fungsi tahan lama perlu diubah untuk memenuhi keperluan - inilah yang membezakan Tanpa Pelayan daripada teknologi popular lain hari ini (bekas dan Platform sebagai Perkhidmatan).

Kami menetapkan acara untuk setiap fungsi. Peristiwa ialah pencetus untuk tindakan:

Acara
Tindakan yang dilakukan oleh fungsi

Imej produk telah dimuat naik ke repositori.
Mampatkan imej dan muat naik ke direktori

Alamat kedai fizikal telah dikemas kini dalam pangkalan data
Muatkan lokasi baharu ke dalam peta

Pelanggan membayar barang tersebut
Mulakan pemprosesan pembayaran

Acara boleh berupa permintaan HTTP, data penstriman, baris gilir mesej dan sebagainya. Sumber peristiwa ialah perubahan atau kejadian data. Di samping itu, fungsi boleh dicetuskan oleh pemasa.

Seni bina telah diusahakan, dan aplikasi hampir menjadi tanpa pelayan. Seterusnya kita pergi ke pembekal perkhidmatan.

Dari pihak pembekal

Biasanya, pengkomputeran tanpa pelayan ditawarkan oleh penyedia perkhidmatan awan. Ia dipanggil secara berbeza: Fungsi Azure, AWS Lambda, Fungsi Awan Google, Fungsi Awan IBM.

Kami akan menggunakan perkhidmatan melalui konsol penyedia atau akaun peribadi. Kod fungsi boleh dimuat turun dalam salah satu cara berikut:

  • tulis kod dalam editor terbina dalam melalui konsol web,
  • muat turun arkib dengan kod,
  • bekerja dengan repositori git awam atau persendirian.

Di sini kami menyediakan acara yang memanggil fungsi tersebut. Set acara mungkin berbeza untuk pembekal yang berbeza.

Tanpa pelayan di rak

Pembekal membina dan mengautomasikan sistem Fungsi sebagai Perkhidmatan (FaaS) pada infrastrukturnya:

  1. Kod fungsi berakhir dalam storan di bahagian penyedia.
  2. Apabila peristiwa berlaku, bekas dengan persekitaran yang disediakan secara automatik digunakan pada pelayan. Setiap contoh fungsi mempunyai bekas terpencilnya sendiri.
  3. Dari storan, fungsi dihantar ke bekas, dikira, dan mengembalikan hasilnya.
  4. Bilangan peristiwa selari semakin meningkat - bilangan bekas semakin bertambah. Sistem secara automatik berskala. Jika pengguna tidak mengakses fungsi tersebut, ia akan menjadi tidak aktif.
  5. Pembekal menetapkan masa terbiar untuk bekas - jika pada masa ini fungsi tidak muncul dalam bekas, ia dimusnahkan.

Dengan cara ini kita mendapatkan Serverless keluar dari kotak. Kami akan membayar perkhidmatan menggunakan model bayar semasa anda pergi dan hanya untuk fungsi yang digunakan, dan hanya untuk masa ia digunakan.

Untuk memperkenalkan pembangun kepada perkhidmatan tersebut, pembekal menawarkan sehingga 12 bulan ujian percuma, tetapi mengehadkan jumlah masa pengiraan, bilangan permintaan sebulan, dana atau penggunaan kuasa.

Kelebihan utama bekerja dengan pembekal adalah keupayaan untuk tidak bimbang tentang infrastruktur (pelayan, mesin maya, bekas). Bagi pihaknya, pembekal boleh melaksanakan FaaS menggunakan pembangunannya sendiri dan menggunakan alat sumber terbuka. Mari kita bercakap tentang mereka lebih lanjut.

Dari sisi sumber terbuka

Komuniti sumber terbuka telah bekerja secara aktif pada alat Tanpa Pelayan sejak beberapa tahun yang lalu. Pemain pasaran terbesar juga menyumbang kepada pembangunan platform tanpa pelayan:

  • Google menawarkan pembangun alat sumber terbukanya - Knatif. IBM, RedHat, Pivotal dan SAP mengambil bahagian dalam pembangunannya;
  • IBM bekerja pada platform Tanpa Pelayan OpenWhisk, yang kemudiannya menjadi projek Yayasan Apache;
  • microsoft membuka sebahagian kod platform Fungsi Azure.

Pembangunan juga sedang dijalankan ke arah rangka kerja tanpa pelayan. Kubeless ΠΈ Pembelahan digunakan dalam kelompok Kubernetes yang telah disediakan sebelumnya, OpenFaaS berfungsi dengan kedua-dua Kubernetes dan Docker Swarm. Rangka kerja bertindak sebagai sejenis pengawal - atas permintaan, ia menyediakan persekitaran masa jalan di dalam kelompok, kemudian melancarkan fungsi di sana.

Rangka kerja memberi ruang untuk mengkonfigurasi alat untuk memenuhi keperluan anda. Jadi, dalam Kubeless, pembangun boleh mengkonfigurasi tamat masa pelaksanaan fungsi (nilai lalai ialah 180 saat). Pembelahan, dalam usaha untuk menyelesaikan masalah permulaan sejuk, mencadangkan supaya beberapa bekas berjalan sepanjang masa (walaupun ini memerlukan kos masa henti sumber). Dan OpenFaaS menawarkan satu set pencetus untuk setiap rasa dan warna: HTTP, Kafka, Redis, MQTT, Cron, AWS SQS, NAT dan lain-lain.

Arahan untuk bermula boleh didapati dalam dokumentasi rasmi rangka kerja. Bekerja dengan mereka memerlukan lebih sedikit kemahiran berbanding semasa bekerja dengan pembekal - ini sekurang-kurangnya keupayaan untuk melancarkan gugusan Kubernetes melalui CLI. Paling banyak, sertakan alatan sumber terbuka lain (contohnya, pengurus baris gilir Kafka).

Tidak kira bagaimana kami bekerja dengan Tanpa Pelayan - melalui pembekal atau menggunakan sumber terbuka, kami akan menerima beberapa kelebihan dan kekurangan pendekatan Tanpa Pelayan.

Dari sudut kelebihan dan kekurangan

Tanpa pelayan membangunkan idea infrastruktur kontena dan pendekatan perkhidmatan mikro, di mana pasukan boleh bekerja dalam mod berbilang bahasa tanpa terikat pada satu platform. Membina sistem dipermudahkan dan ralat lebih mudah dibetulkan. Seni bina perkhidmatan mikro membolehkan anda menambah kefungsian baharu pada sistem dengan lebih pantas berbanding dalam kes aplikasi monolitik.

Tanpa pelayan mengurangkan masa pembangunan lebih jauh lagi, membenarkan pembangun menumpukan semata-mata pada logik dan pengekodan perniagaan aplikasi. Akibatnya, masa untuk memasarkan pembangunan berkurangan.

Sebagai bonus, kami mendapat penskalaan automatik untuk beban, dan kami hanya membayar untuk sumber yang digunakan dan hanya pada masa ia digunakan.

Seperti mana-mana teknologi, Tanpa Pelayan mempunyai kelemahan.

Sebagai contoh, kelemahan sedemikian mungkin masa mula yang sejuk (secara purata sehingga 1 saat untuk bahasa seperti JavaScript, Python, Go, Java, Ruby).

Di satu pihak, pada hakikatnya, masa mula sejuk bergantung pada banyak pembolehubah: bahasa di mana fungsi itu ditulis, bilangan perpustakaan, jumlah kod, komunikasi dengan sumber tambahan (pangkalan data atau pelayan pengesahan yang sama). Memandangkan pembangun mengawal pembolehubah ini, dia boleh mengurangkan masa permulaan. Tetapi sebaliknya, pembangun tidak dapat mengawal masa permulaan kontena - semuanya bergantung kepada pembekal.

Permulaan sejuk boleh bertukar menjadi permulaan hangat apabila fungsi menggunakan semula bekas yang dilancarkan oleh acara sebelumnya. Keadaan ini akan timbul dalam tiga kes:

  • jika pelanggan kerap menggunakan perkhidmatan dan bilangan panggilan ke fungsi meningkat;
  • jika pembekal, platform atau rangka kerja membenarkan anda memastikan beberapa bekas berjalan sepanjang masa;
  • jika pembangun menjalankan fungsi pada pemasa (katakan setiap 3 minit).

Untuk kebanyakan aplikasi, permulaan yang sejuk tidak menjadi masalah. Di sini anda perlu membina jenis dan tugas perkhidmatan. Kelewatan permulaan selama satu saat tidak selalunya kritikal untuk aplikasi perniagaan, tetapi ia boleh menjadi kritikal untuk perkhidmatan perubatan. Dalam kes ini, pendekatan tanpa pelayan mungkin tidak lagi sesuai.

Kelemahan Tanpa Pelayan seterusnya ialah jangka hayat fungsi yang singkat (masa tamat semasa fungsi itu mesti dilaksanakan).

Tetapi, jika anda perlu bekerja dengan tugas yang berpanjangan, anda boleh menggunakan seni bina hibrid - menggabungkan Tanpa Pelayan dengan teknologi lain.

Tidak semua sistem akan dapat berfungsi menggunakan skema Tanpa Pelayan.

Sesetengah aplikasi masih akan menyimpan data dan keadaan semasa pelaksanaan. Sesetengah seni bina akan kekal monolitik dan beberapa ciri akan bertahan lama. Walau bagaimanapun (seperti teknologi awan dan kemudian bekas), Tanpa Pelayan ialah teknologi dengan masa depan yang hebat.

Dalam hal ini, saya ingin meneruskan dengan lancar kepada isu penggunaan pendekatan Tanpa Pelayan.

Dari sisi permohonan

Untuk 2018, peratusan penggunaan Tanpa Pelayan berkembang satu setengah kali ganda. Antara syarikat yang telah melaksanakan teknologi dalam perkhidmatan mereka ialah gergasi pasaran seperti Twitter, PayPal, Netflix, T-Mobile, Coca-Cola. Pada masa yang sama, anda perlu memahami bahawa Tanpa Pelayan bukanlah ubat penawar, tetapi alat untuk menyelesaikan pelbagai masalah:

  • Kurangkan masa henti sumber. Tidak perlu sentiasa menyimpan mesin maya untuk perkhidmatan yang mempunyai sedikit panggilan.
  • Memproses data dengan cepat. Memampatkan gambar, memotong latar belakang, menukar pengekodan video, bekerja dengan penderia IoT, melaksanakan operasi matematik.
  • "Gam" perkhidmatan lain bersama-sama. Repositori Git dengan program dalaman, bot sembang dalam Slack dengan Jira dan kalendar.
  • Seimbangkan beban. Mari kita lihat lebih dekat di sini.

Katakan ada perkhidmatan yang menarik 50 orang. Di bawahnya terdapat mesin maya dengan perkakasan yang lemah. Dari semasa ke semasa, beban pada perkhidmatan meningkat dengan ketara. Kemudian perkakasan yang lemah tidak dapat mengatasinya.

Anda boleh memasukkan pengimbang dalam sistem yang akan mengagihkan beban, katakan, ke atas tiga mesin maya. Pada peringkat ini, kami tidak dapat meramalkan beban dengan tepat, jadi kami menyimpan sejumlah sumber tertentu "dalam simpanan". Dan kami membayar lebih untuk masa henti.

Dalam keadaan sedemikian, kami boleh mengoptimumkan sistem melalui pendekatan hibrid: kami meninggalkan satu mesin maya di belakang pengimbang beban dan meletakkan pautan ke Titik Akhir Tanpa Pelayan dengan fungsi. Jika beban melebihi ambang, pengimbang melancarkan tika fungsi yang mengambil alih sebahagian daripada pemprosesan permintaan.

Tanpa pelayan di rak
Oleh itu, Tanpa Pelayan boleh digunakan di mana perlu untuk memproses sejumlah besar permintaan tidak terlalu kerap, tetapi secara intensif. Dalam kes ini, menjalankan beberapa fungsi selama 15 minit adalah lebih menguntungkan daripada mengekalkan mesin maya atau pelayan sepanjang masa.

Dengan semua kelebihan pengkomputeran tanpa pelayan, sebelum pelaksanaan, anda harus terlebih dahulu menilai logik aplikasi dan memahami masalah apa yang boleh diselesaikan Tanpa Pelayan dalam kes tertentu.

Tanpa pelayan dan Selectel

Di Selectel kami sudah pun kerja yang dipermudahkan dengan Kubernetes melalui panel kawalan kami. Kini kami sedang membina platform FaaS kami sendiri. Kami mahu pembangun dapat menyelesaikan masalah mereka menggunakan Tanpa Pelayan melalui antara muka yang mudah dan fleksibel.

Jika anda mempunyai idea tentang platform FaaS yang ideal dan cara anda ingin menggunakan Tanpa Pelayan dalam projek anda, kongsikannya dalam ulasan. Kami akan mengambil kira kehendak anda semasa membangunkan platform.
 
Bahan yang digunakan dalam artikel:

Sumber: www.habr.com

Tambah komen