Carane turu kanthi apik yen sampeyan duwe layanan awan: tips arsitektur dhasar

Carane turu kanthi apik yen sampeyan duwe layanan awan: tips arsitektur dhasarLOST dening sophiagworld

Artikel iki ngemot sawetara pola umum kanggo mbantu insinyur nggarap layanan skala gedhe sing diakses jutaan pangguna. 

Ing pengalaman penulis, iki dudu dhaptar lengkap, nanging pancen efektif pitutur. Dadi, ayo miwiti.

Diterjemahake kanthi dhukungan Solusi Cloud Mail.ru.

Tataran kapisan

Langkah-langkah sing didhaptar ing ngisor iki relatif gampang kanggo dileksanakake nanging duwe pengaruh sing dhuwur. Yen sampeyan durung nyoba sadurunge, sampeyan bakal kaget karo perbaikan sing signifikan.

Infrastruktur minangka kode

PΓ©rangan pisanan saka saran yaiku ngleksanakake infrastruktur minangka kode. Iki tegese sampeyan kudu duwe cara terprogram kanggo nyebarake kabeh infrastruktur. Kayane rumit, nanging kita ngomong babagan kode ing ngisor iki:

Penyebaran 100 mesin virtual

  • karo Ubuntu
  • 2 GB RAM saben
  • padha bakal duwe kode ing ngisor iki
  • karo paramΓ¨ter kasebut

Sampeyan bisa nglacak owah-owahan ing prasarana lan bali kanthi cepet nggunakake kontrol versi.

Modernis ing kula ngandika sampeyan bisa nggunakake Kubernetes / Docker kanggo nindakake kabeh ndhuwur, lan iku bener.

Kajaba iku, sampeyan bisa nyedhiyakake otomatisasi nggunakake Chef, Puppet utawa Terraform.

Integrasi terus-terusan lan Pangiriman

Kanggo nggawe layanan keukur, iku penting kanggo mbangun lan test pipeline kanggo saben request narik. Sanajan tes kasebut gampang banget, paling ora bakal njamin kode sing sampeyan pasang.

Saben wektu ing tahap iki sampeyan mangsuli pitakon: bakal perakitan sandi ngumpulake lan lulus tes, iku bener? Iki bisa uga katon kaya bar sing kurang, nanging ngrampungake akeh masalah.

Carane turu kanthi apik yen sampeyan duwe layanan awan: tips arsitektur dhasar
Ora ana sing luwih apik tinimbang ndeleng kutu iki

Kanggo teknologi iki sampeyan bisa ngevaluasi Github, CircleCI utawa Jenkins.

Load Balancers

Dadi, kita pengin mbukak penyeimbang beban kanggo ngarahake lalu lintas lan njamin beban sing padha ing kabeh simpul utawa layanan terus yen gagal:

Carane turu kanthi apik yen sampeyan duwe layanan awan: tips arsitektur dhasar
A load balancer biasane nindakake tugas sing apik kanggo nyebarake lalu lintas. Praktek sing paling apik yaiku overbalance supaya sampeyan ora duwe titik kegagalan.

Biasane, load balancers dikonfigurasi ing awan sing sampeyan gunakake.

RayID, ID korΓ©lasi utawa UUID kanggo panjalukan

Apa sampeyan tau nemoni kesalahan aplikasi kanthi pesen kaya iki: "Ana sing salah. Simpen id iki lan kirim menyang tim dhukungan"?

Carane turu kanthi apik yen sampeyan duwe layanan awan: tips arsitektur dhasar
Pengenal unik, ID korelasi, RayID, utawa variasi apa wae, minangka pengenal unik sing ngidini sampeyan nglacak panjaluk sajrone siklus urip. Iki ngidini sampeyan nglacak kabeh path request ing log.

Carane turu kanthi apik yen sampeyan duwe layanan awan: tips arsitektur dhasar
Pangguna nggawe panjalukan menyang sistem A, banjur A kontak B, sing kontak C, nyimpen ing X, banjur panjalukan bali menyang A

Yen sampeyan nyambungake jarak jauh menyang mesin virtual lan nyoba nglacak path panyuwunan (lan nyambungake telpon kanthi manual), sampeyan bakal edan. Duwe pengenal unik nggawe urip luwih gampang. Iki minangka salah sawijining perkara paling gampang sing bisa sampeyan lakoni kanggo ngirit wektu nalika layanan sampeyan saya tambah.

Tingkat penengah

Saran ing kene luwih rumit tinimbang sing sadurunge, nanging alat sing tepat nggawe tugas luwih gampang, nyedhiyakake pengembalian investasi sanajan kanggo perusahaan cilik lan menengah.

logging terpusat

Sugeng rawuh! Sampeyan wis masang 100 mesin virtual. Esuke, CEO teka lan ngeluh babagan kesalahan sing ditampa nalika nyoba layanan kasebut. Iki nglaporake ID sing cocog sing kita rembugan ing ndhuwur, nanging sampeyan kudu nggoleki log 100 mesin kanggo nemokake sing nyebabake kacilakan kasebut. Lan kudu ditemokake sadurunge presentasi sesuk.

Nalika iki muni kaya ngulandara nyenengake, iku paling apik kanggo nggawe manawa sampeyan duwe kemampuan kanggo nelusuri kabeh majalah ing sak panggonan. Aku ngrampungake masalah log sentralisasi nggunakake fungsi tumpukan ELK sing dibangun: ndhukung koleksi log sing bisa ditelusuri. Iki bakal mbantu ngatasi masalah nemokake jurnal tartamtu. Minangka bonus, sampeyan bisa nggawe grafik lan liyane sing nyenengake.

Carane turu kanthi apik yen sampeyan duwe layanan awan: tips arsitektur dhasar
Fungsi tumpukan ELK

Agen ngawasi

Saiki layanan sampeyan wis aktif, sampeyan kudu mesthekake yen layanan kasebut lancar. Cara paling apik kanggo nindakake iki yaiku nglakokake sawetara agen, sing makarya kanthi podo karo lan priksa manawa kerjane lan operasi dhasar ditindakake.

Ing titik iki sampeyan mriksa sing mbangun mlaku ngrasa apik lan dianggo nggoleki.

Kanggo proyek cilik nganti medium, aku nyaranake Postman kanggo ngawasi lan nyathet API. Nanging umume, sampeyan mung pengin nggawe manawa sampeyan duwe cara kanggo ngerti yen ana gangguan lan diwenehi kabar kanthi pas wektune.

Autoscaling gumantung saka beban

Iku banget prasaja. Yen sampeyan duwe panjalukan layanan VM lan nyedhak 80% panggunaan memori, sampeyan bisa nambah sumber daya utawa nambah VM liyane ing kluster. Eksekusi otomatis operasi kasebut apik banget kanggo owah-owahan daya elastis ing beban. Nanging sampeyan kudu tansah ati-ati babagan jumlah dhuwit sing sampeyan gunakake lan nyetel watesan sing cukup.

Carane turu kanthi apik yen sampeyan duwe layanan awan: tips arsitektur dhasar
Kanthi umume layanan awan, sampeyan bisa ngatur kanthi otomatis kanthi nggunakake server liyane utawa server sing luwih kuat.

Sistem eksperimen

Cara sing apik kanggo ngluncurake nganyari kanthi aman yaiku bisa nyoba kanggo 1% pangguna sajrone sejam. Sampeyan wis, mesthi, ndeleng mekanisme kuwi ing tumindak. Contone, Facebook nuduhake bagean pamirsa kanthi warna sing beda utawa ngganti ukuran font kanggo ndeleng kepiye pangguna ndeleng owah-owahan kasebut. Iki diarani tes A/B.

Malah ngeculake fitur anyar bisa diwiwiti minangka eksperimen lan banjur nemtokake cara ngeculake. Sampeyan uga entuk kemampuan kanggo "eling" utawa ngganti konfigurasi kanthi cepet adhedhasar fungsi sing nyebabake degradasi layanan sampeyan.

Tingkat lanjut

Kene tips sing cukup angel kanggo ngleksanakake. Sampeyan bisa uga mbutuhake sumber daya liyane, mula perusahaan cilik utawa medium bakal angel ngatur iki.

Penyebaran biru-ijo

Iki sing dak sebut "Erlang" cara mbukak. Erlang dadi akeh digunakake nalika perusahaan telpon muncul. Softswitch wiwit digunakake kanggo rute telpon. Tujuan utama piranti lunak ing switch kasebut yaiku supaya ora nyelehake telpon sajrone nganyarke sistem. Erlang duwe cara sing apik kanggo mbukak modul anyar tanpa nabrak sing sadurunge.

Langkah iki gumantung ing ngarsane load balancer. Coba bayangake sampeyan duwe versi N piranti lunak, banjur sampeyan pengin masang versi N+1. 

Sampeyan awak dewe iso mung mungkasi layanan lan muter metu versi sabanjurΓ© ing wektu sing bisa kanggo pangguna lan njaluk sawetara downtime. Nanging umpamane sampeyan duwe tenan kahanan SLA ketat. Dadi, SLA 99,99% tegese sampeyan bisa offline mung kanthi 52 menit saben taun.

Yen pancene pengin entuk indikator kasebut, sampeyan butuh rong panyebaran sekaligus: 

  • kang saiki (N);
  • versi sabanjure (N+1). 

Sampeyan ngandhani load balancer kanggo ngarahake persentase lalu lintas menyang versi anyar (N+1) nalika sampeyan aktif ngawasi regresi.

Carane turu kanthi apik yen sampeyan duwe layanan awan: tips arsitektur dhasar
Ing kene kita duwe penyebaran N ijo sing bisa digunakake kanthi apik. Kita nyoba pindhah menyang versi sabanjure panyebaran iki

Kaping pisanan, kita ngirim tes sing cilik banget kanggo ndeleng manawa penyebaran N+1 bisa digunakake kanthi jumlah lalu lintas sing sithik:

Carane turu kanthi apik yen sampeyan duwe layanan awan: tips arsitektur dhasar
Pungkasan, kita duwe set pamriksa otomatis sing pungkasane ditindakake nganti panyebaran rampung. Yen sampeyan banget banget ati-ati, sampeyan uga bisa nyimpen penyebaran N ing salawas-lawase kanggo bali cepet ing cilik saka regresi ala:

Carane turu kanthi apik yen sampeyan duwe layanan awan: tips arsitektur dhasar
Yen sampeyan pengin pindhah menyang tingkat sing luwih maju, supaya kabeh ing panyebaran biru-ijo mlaku kanthi otomatis.

Deteksi anomali lan mitigasi otomatis

Amarga sampeyan duwe logging terpusat lan koleksi log sing apik, sampeyan wis bisa nyetel target sing luwih dhuwur. Contone, proaktif prΓ©dhiksi kegagalan. Fungsi dilacak ing monitor lan ing log lan macem-macem diagram dibangun - lan sampeyan bisa prΓ©dhiksi luwih dhisik apa sing bakal salah:

Carane turu kanthi apik yen sampeyan duwe layanan awan: tips arsitektur dhasar
Sawise anomali dideteksi, sampeyan miwiti nliti sawetara pitunjuk sing diwenehake layanan kasebut. Contone, lonjakan beban CPU bisa uga nuduhake yen hard drive gagal, dene lonjakan panjaluk bisa nuduhake yen sampeyan kudu nggedhekake. Data statistik iki ngidini sampeyan nggawe layanan kasebut proaktif.

Kanthi wawasan kasebut, sampeyan bisa nggedhekake ukuran apa wae lan kanthi proaktif lan reaktif ngganti karakteristik mesin, database, sambungan lan sumber daya liyane.

Iku kabeh!

Dhaptar prioritas iki bakal nylametake sampeyan akeh masalah yen sampeyan ngunggahake layanan awan.

Penulis artikel asli ngajak para pamaca supaya ninggalake komentar lan nggawe owah-owahan. Artikel kasebut disebarake minangka sumber terbuka, panjaluk tarik dening penulis nampa ing Github.

Apa maneh sing kudu diwaca babagan topik:

  1. Go lan cache CPU
  2. Kubernetes ing semangat pembajakan karo cithakan kanggo implementasine
  3. Saluran kita Sekitar Kubernetes ing Telegram

Source: www.habr.com

Add a comment