Kumaha bobo damai nalika anjeun gaduh jasa awan: tip arsitéktur dasar

Kumaha bobo damai nalika anjeun gaduh jasa awan: tip arsitéktur dasarLEUNGIT ku sophiagworld

Tulisan ieu ngandung sababaraha pola umum pikeun ngabantosan insinyur damel sareng jasa skala ageung anu diaksés ku jutaan pangguna. 

Dina pangalaman panulis, ieu sanés daptar lengkep, tapi memang éféktif piwuruk. Ku kituna, hayu urang mimitian.

Ditarjamahkeun kalayan dukungan Mail.ru Cloud Solutions.

Tingkat kahiji

Ukuran anu didaptarkeun di handap ieu kawilang saderhana pikeun dilaksanakeun tapi gaduh dampak anu luhur. Upami anjeun teu acan nyobian aranjeunna sateuacanna, anjeun bakal kaget kana perbaikan anu signifikan.

Infrastruktur salaku kode

Bagian kahiji tina naséhat nyaéta pikeun nerapkeun infrastruktur salaku kode. Ieu ngandung harti yén anjeun kudu boga cara programmatic nyebarkeun sakabéh infrastruktur. Sigana rumit, tapi urang leres-leres nyarioskeun kode ieu:

Panyebaran 100 mesin virtual

  • kalawan Ubuntu
  • 2 GB RAM unggal
  • aranjeunna bakal boga kode handap
  • kalawan parameter ieu

Anjeun tiasa ngalacak parobihan kana infrastruktur anjeun sareng gancang dibalikkeun deui nganggo kontrol versi.

Modernis di kuring nyebutkeun anjeun tiasa nganggo Kubernetes / Docker pikeun ngalakukeun sagala di luhur, sarta anjeunna bener.

Salaku tambahan, anjeun tiasa nyayogikeun otomatis nganggo Chef, Wayang atanapi Terraform.

Integrasi kontinyu sarta Pangiriman

Pikeun nyieun layanan scalable, hal anu penting pikeun ngawangun sarta nguji pipa pikeun tiap pamundut tarikan. Sanaos tés éta saderhana pisan, éta sahenteuna bakal mastikeun yén kode anu anjeun pasangkeun.

Unggal waktos dina tahap ieu anjeun ngajawab patarosan: bakal assembly kuring compile sarta lulus tés, éta valid? Ieu mungkin sigana kawas bar low, tapi solves loba masalah.

Kumaha bobo damai nalika anjeun gaduh jasa awan: tip arsitéktur dasar
Teu aya anu langkung endah tibatan ningali kutu ieu

Pikeun téhnologi ieu anjeun bisa evaluate Github, CircleCI atanapi Jenkins.

Beban Balancers

Janten, urang badé ngajalankeun pangimbang beban pikeun alihan lalu lintas sareng mastikeun beban anu sami dina sadaya titik atanapi jasa diteruskeun upami gagal:

Kumaha bobo damai nalika anjeun gaduh jasa awan: tip arsitéktur dasar
A balancer beban biasana ngalakukeun pakasaban alus ngadistribusikaeun lalulintas. Prakték pangsaéna nyaéta overbalance supados anjeun henteu ngagaduhan titik gagal.

Biasana, pangimbang beban dikonpigurasi dina méga anu anjeun anggo.

RayID, ID korelasi atanapi UUID pikeun pamundut

Naha anjeun kantos ngalaman kasalahan aplikasi sareng pesen sapertos kieu: “Aya nu lepat. Simpen id ieu sareng kirimkeun ka tim dukungan kami"?

Kumaha bobo damai nalika anjeun gaduh jasa awan: tip arsitéktur dasar
A identifier unik, ID korelasi, RayID, atawa salah sahiji variasi, mangrupakeun identifier unik nu ngidinan Anjeun pikeun ngalacak pamundut sapanjang lifecycle na. Ieu ngidinan Anjeun pikeun ngalacak sakabéh jalur pamundut dina log.

Kumaha bobo damai nalika anjeun gaduh jasa awan: tip arsitéktur dasar
Pamaké naroskeun ka sistem A, teras A ngahubungi B, anu ngontak C, nyimpenna dina X, teras pamundutna dipulangkeun ka A.

Upami anjeun jarak jauh nyambung ka mesin virtual sareng nyobian ngalacak jalur pamundut (sareng korelasi sacara manual telepon mana anu didamel), anjeun bakal gélo. Mibanda identifier unik ngajadikeun hirup leuwih gampang. Ieu mangrupikeun salah sahiji hal pangbasajanna anu anjeun tiasa laksanakeun pikeun ngahémat waktos nalika jasa anjeun ningkat.

tingkat rata

Naséhat di dieu langkung rumit tibatan anu sateuacana, tapi alat anu leres ngajantenkeun tugasna langkung gampang, nyayogikeun investasi pikeun perusahaan leutik sareng sedeng.

logging terpusat

Wilujeng! Anjeun parantos nyebarkeun 100 mesin virtual. Isukna, CEO datang sareng ngawadul ngeunaan kasalahan anu ditampi nalika nguji jasa éta. Éta ngalaporkeun ID anu saluyu anu urang bahas di luhur, tapi anjeun kedah milarian log 100 mesin pikeun mendakan anu nyababkeun kacilakaan éta. Sarta eta perlu kapanggih saméméh presentasi isukan urang.

Sanaos ieu sapertos petualangan anu pikaresepeun, langkung saé pikeun mastikeun yén anjeun gaduh kamampuan milarian sadaya majalah dina hiji tempat. Kuring direngsekeun masalah centralizing log ngagunakeun pungsionalitas diwangun-di tumpukan ELK: ngarojong kumpulan log searchable. Ieu bakal bener mantuan ngajawab masalah manggihan jurnal husus. Salaku bonus, anjeun tiasa nyiptakeun bagan sareng hal-hal anu pikaresepeun sapertos kitu.

Kumaha bobo damai nalika anjeun gaduh jasa awan: tip arsitéktur dasar
fungsionalitas tumpukan ELK

Agén ngawaskeun

Ayeuna yén jasa anjeun parantos dijalankeun, anjeun kedah mastikeun yén éta jalan lancar. Cara anu pangsaéna pikeun ngalakukeun ieu nyaéta ngajalankeun sababaraha agén, anu dianggo paralel sareng pariksa yén éta tiasa dianggo sareng operasi dasar dilaksanakeun.

Dina titik ieu anjeun pariksa éta ngawangun ngajalankeun karasaeun alus sarta gawéna rupa.

Pikeun proyék-proyék leutik sareng sedeng, kuring nyarankeun tukang pos pikeun ngawaskeun sareng ngadokumentasikeun API. Tapi sacara umum, anjeun ngan ukur hoyong mastikeun yén anjeun gaduh cara pikeun terang iraha pareum parantos kajantenan sareng dibere beja dina waktosna.

Autoscaling gumantung kana beban

Saderhana pisan. Upami Anjeun gaduh requests ngalayanan VM sarta éta approaching 80% pamakéan memori, anjeun bisa boh ningkatkeun sumberdaya na atawa tambahkeun deui VMs kana kluster. Palaksanaan otomatis operasi ieu alus teuing pikeun parobahan kakuatan elastis dina beban. Tapi anjeun kudu salawasna ati ngeunaan sabaraha duit méakkeun tur nyetel wates lumrah.

Kumaha bobo damai nalika anjeun gaduh jasa awan: tip arsitéktur dasar
Kalayan sabagéan ageung jasa awan, anjeun tiasa ngonpigurasikeun kana skala otomatis nganggo langkung seueur server atanapi server anu langkung kuat.

Sistem ékspérimén

Cara anu saé pikeun ngaluncurkeun apdet anu aman nyaéta tiasa nguji hal pikeun 1% pangguna salami sajam. Anjeun, tangtosna, ningali mékanisme sapertos kitu dina aksi. Contona, Facebook nembongkeun bagéan panongton warna béda atawa ngarobah ukuran font pikeun nempo kumaha pamaké ngarasa parobahanana. Ieu disebut A / B nguji.

Malah ngaleupaskeun fitur anyar bisa dimimitian salaku percobaan lajeng ditangtukeun kumaha carana ngaleupaskeun eta. Anjeun oge meunang kamampuhan pikeun "inget" atawa ngarobah konfigurasi on laleur dumasar kana fungsi nu ngabalukarkeun degradasi dina layanan anjeun.

Tingkat canggih

Ieu tips anu rada hese dilaksanakeun. Anjeun panginten peryogi langkung seueur sumber, janten perusahaan leutik atanapi sedeng bakal sesah ngatur ieu.

deployments biru-héjo

Ieu naon atuh disebut "Erlang" cara unfolding. Erlang janten seueur dianggo nalika perusahaan telepon muncul. Softswitches mimiti dipaké pikeun ruteu telepon. Tujuan utama parangkat lunak dina saklar ieu nyaéta pikeun henteu leupaskeun telepon nalika ningkatkeun sistem. Erlang gaduh cara anu saé pikeun ngamuat modul énggal tanpa nabrak anu sateuacana.

Lengkah ieu gumantung kana ayana load balancer. Bayangkeun anjeun gaduh versi N tina parangkat lunak anjeun, teras anjeun hoyong nyebarkeun versi N + 1. 

anjeun Kami tiasa ngan eureun jasa jeung gulung kaluar versi salajengna dina waktu anu hade pikeun pamaké anjeun sarta meunang sababaraha downtime. Tapi anggap anjeun gaduh bener kaayaan SLA ketat. Janten, SLA 99,99% hartosna anjeun tiasa offline ngan ku 52 menit per taun.

Upami anjeun leres-leres hoyong ngahontal indikator sapertos kitu, anjeun peryogi dua panyebaran dina waktos anu sami: 

  • anu ayeuna (N);
  • Vérsi salajengna (N+1). 

Anjeun nyarioskeun ka balancer beban pikeun alihan perséntase lalu lintas kana versi énggal (N + 1) nalika anjeun aktip ngawas régrési.

Kumaha bobo damai nalika anjeun gaduh jasa awan: tip arsitéktur dasar
Di dieu urang boga deployment N héjo anu hade rupa. Kami nyobian ngalih ka versi salajengna tina panyebaran ieu

Mimiti urang ngirim tés anu alit pikeun ningali naha panyebaran N + 1 urang tiasa dianggo sareng jumlah lalu lintas anu sakedik:

Kumaha bobo damai nalika anjeun gaduh jasa awan: tip arsitéktur dasar
Tungtungna, urang gaduh sakumpulan pamariksaan otomatis anu antukna urang jalankeun dugi panyebaran urang réngsé. Lamun anjeun pisan pisan ati-ati, anjeun ogé tiasa nyimpen deployment N anjeun salamina pikeun rollback gancang bisi regression goréng:

Kumaha bobo damai nalika anjeun gaduh jasa awan: tip arsitéktur dasar
Upami anjeun hoyong angkat ka tingkat anu langkung maju, ngantepkeun sadayana dina panyebaran biru-héjo sacara otomatis.

Deteksi anomali sareng mitigasi otomatis

Kusabab anjeun gaduh logging terpusat sareng koleksi log anu saé, anjeun parantos tiasa nyetél tujuan anu langkung luhur. Contona, proaktif ngaduga gagal. Fungsi dilacak dina monitor sareng log sareng sagala rupa diagram diwangun - sareng anjeun tiasa ngaduga sateuacanna naon anu salah:

Kumaha bobo damai nalika anjeun gaduh jasa awan: tip arsitéktur dasar
Sakali anomali dideteksi, anjeun ngawitan nalungtik sababaraha clues yén layanan nyadiakeun. Salaku conto, spike dina beban CPU tiasa nunjukkeun yén hard drive gagal, sedengkeun spike dina pamundut tiasa nunjukkeun yén anjeun kedah ningkatkeun skala. Data statistik jenis ieu ngamungkinkeun anjeun ngajantenkeun jasa proaktif.

Kalayan wawasan ieu, anjeun tiasa skala dina dimensi mana waé sareng sacara proaktif sareng réaktif ngarobih karakteristik mesin, pangkalan data, sambungan sareng sumber daya sanés.

Éta hungkul!

Daptar prioritas ieu bakal nyalametkeun anjeun seueur masalah upami anjeun ngangkat jasa awan.

Panulis artikel aslina ngajak pamiarsa ninggalkeun koméntarna sareng ngadamel parobihan. Artikel disebarkeun salaku open source, tarik requests ku pangarang nampi dina Github.

Naon deui anu kedah dibaca dina topik:

  1. Pindah jeung caches CPU
  2. Kubernetes dina sumanget piracy kalawan template pikeun palaksanaan
  3. Saluran kami Kira-kira Kubernetes di Telegram

sumber: www.habr.com

Tambahkeun komentar