5 Prinsip Akal Umum pikeun Ngawangun Aplikasi Cloud-Native

Aplikasi "Cloud native" atanapi ngan saukur "cloud" didamel khusus pikeun dianggo dina infrastruktur awan. Aranjeunna biasana diwangun salaku sakumpulan microservices gandeng sacara bébas rangkep dina peti, anu dina gilirannana dikelola ku platform awan. Aplikasi sapertos ieu disiapkeun pikeun gagal sacara standar, anu hartosna tiasa dianggo sacara dipercaya sareng skala bahkan upami aya kagagalan tingkat infrastruktur anu serius. Sisi séjén koin nyaéta set larangan (kontrak) yén platform awan maksakeun aplikasi wadahna supados tiasa ngatur sacara otomatis.

5 Prinsip Akal Umum pikeun Ngawangun Aplikasi Cloud-Native

Sanaos sapinuhna sadar kana kabutuhan sareng pentingna ngalih ka aplikasi dumasar-awan, seueur organisasi masih henteu terang dimana ngamimitian. Dina postingan ieu, urang bakal ningali sababaraha prinsip anu, upami dituturkeun nalika ngembangkeun aplikasi wadahna, bakal ngamungkinkeun anjeun ngawujudkeun poténsi platform awan sareng ngahontal operasi anu dipercaya sareng skala aplikasi bahkan upami aya kagagalan serius dina infrastruktur IT. tingkat. Tujuan pamungkas tina prinsip anu digariskeun di dieu nyaéta pikeun diajar kumaha carana ngawangun aplikasi anu tiasa diurus sacara otomatis ku platform awan sapertos Kubernetes.

Prinsip Desain Software

Dina dunya programming, prinsip nujul kana aturan cukup umum anu kudu dituturkeun nalika ngamekarkeun software. Éta tiasa dianggo nalika damel sareng basa pamrograman naon waé. Unggal prinsip boga tujuan sorangan, alat pikeun ngahontal nu biasana citakan jeung prakték. Aya ogé sababaraha prinsip dasar pikeun nyiptakeun parangkat lunak anu kualitas luhur, dimana sadaya anu sanésna ngalir. Ieu sababaraha conto prinsip dasar:

  • RATM (Tetep basajan, bodo) - ulah ngahesekeun eta;
  • garing (Ulah malikan diri) - ulah malikan diri;
  • YAGNI (Anjeun teu gonna butuh eta) - ulah nyieun hiji hal anu teu geuwat diperlukeun;
  • SoC Separation tina masalah - babagi tanggung jawab.

Sakumaha anjeun tiasa tingali, prinsip-prinsip ieu henteu netepkeun aturan khusus, tapi kalebet kana kategori anu disebut pertimbangan akal sehat dumasar kana pangalaman praktis, anu dibagi ku seueur pamekar sareng anu aranjeunna rutin ngarujuk.
Sajaba ti éta, aya SIDID - Hiji set tina lima prinsip mimiti programming jeung desain obyék-berorientasi, dirumuskeun ku Robert Martin. SOLID kalebet prinsip-prinsip anu lega, kabuka, pelengkap anu — nalika dilarapkeun babarengan — ngabantosan nyiptakeun sistem parangkat lunak anu langkung saé sareng langkung saé ngajagaana dina jangka panjang.

Prinsip SOLID kagolong kana widang OOP sareng dirumuskeun dina basa konsép sareng konsép sapertos kelas, antarmuka sareng warisan. Ku analogi, prinsip pangwangunan ogé tiasa dirumuskeun pikeun aplikasi awan, ngan ukur unsur dasar di dieu moal janten kelas, tapi wadahna. Ku nuturkeun prinsip-prinsip ieu, anjeun tiasa nyiptakeun aplikasi wadah anu langkung saé pikeun nyumponan tujuan sareng tujuan platform awan sapertos Kubernetes.

Wadah awan-asli: pendekatan Red Hat

Kiwari, ampir sagala aplikasi bisa rangkep rélatif gampang kana peti. Tapi pikeun aplikasi sacara otomatis otomatis sareng diatur dina platform awan sapertos Kubernetes, usaha tambahan diperyogikeun.
Dasar pikeun ideu anu digariskeun di handap nyaéta metodologi The Dua belas-Faktor App sarta loba karya sejenna dina sagala rupa aspék ngawangun aplikasi wéb, ti manajemén kode sumber nepi ka model skala. Prinsip anu dijelaskeun ngan ukur dianggo pikeun pamekaran aplikasi wadahna anu diwangun dina luhureun microservices sareng dirancang pikeun platform awan sapertos Kubernetes. Unsur dasar dina diskusi urang nyaéta gambar wadahna, sareng runtime wadahna target nyaéta platform orkestrasi wadahna. Tujuan tina prinsip anu diusulkeun nyaéta nyiptakeun wadah pikeun ngajadwalkeun, skala, sareng tugas ngawaskeun tiasa otomatis dina kalolobaan platform orkestrasi. Prinsip-prinsipna ditepikeun dina henteu aya urutan tinangtu.

Prinsip Perhatian Tunggal (SCP)

Prinsip ieu dina sababaraha cara sami sareng Prinsip Tanggung Jawab Tunggal. SRP), anu mangrupa bagian tina susunan SOLID sarta nyatakeun yén unggal obyék kudu boga hiji tanggung jawab, sarta tanggung jawab nu kudu lengkep encapsulated di kelas. Titik SRP nyaéta yén unggal tanggung jawab mangrupikeun alesan pikeun robih, sareng kelas kedah gaduh hiji-hijina alesan pikeun robih.

Dina SCP, kami nganggo kecap "prihatin" tibatan kecap "tanggung jawab" pikeun nunjukkeun tingkat abstraksi anu langkung luhur sareng tujuan anu langkung lega tina wadah dibandingkeun kelas OOP. Sareng upami tujuan SRP nyaéta ngan ukur hiji alesan pikeun robih, teras di tukangeun SCP nyaéta kahayang pikeun dilegakeun kamampuan pikeun nganggo deui sareng ngagentos wadah. Ku nuturkeun SRP jeung nyieun hiji wadah nu solves hiji masalah tunggal jeung ngalakukeun eta dina cara functionally lengkep, Anjeun ningkatkeun kasempetan a make deui éta gambar wadahna dina konteks aplikasi béda.

Prinsip SCP nyatakeun yén unggal wadahna kedah ngabéréskeun hiji masalah sareng ngalakukeunana saé. Leuwih ti éta, SCP di dunya wadahna leuwih gampang pikeun ngahontal ti SRP di dunya OOP, saprak peti biasana ngajalankeun hiji prosés tunggal, sarta lolobana waktu prosés ieu solves hiji tugas tunggal.

Upami microservice wadahna kedah ngarengsekeun sababaraha masalah sakaligus, maka éta tiasa dibagi kana wadah tugas tunggal sareng digabungkeun dina hiji pod (hijian panyebaran platform wadahna) nganggo sidecar sareng template wadah init. Salaku tambahan, SCP ngagampangkeun pikeun ngagentos wadah anu lami (sapertos server wéb atanapi calo pesen) sareng anu énggal anu ngarengsekeun masalah anu sami tapi parantos ngalegaan fungsionalitas atanapi skala anu langkung saé.

5 Prinsip Akal Umum pikeun Ngawangun Aplikasi Cloud-Native

Prinsip Observability Tinggi (HOP)

Nalika wadahna dianggo salaku cara anu ngahijikeun pikeun ngarangkep sareng ngajalankeun aplikasi, aplikasina nyalira janten kotak hideung. Nanging, upami ieu mangrupikeun wadah awan, maka aranjeunna kedah nyayogikeun API khusus ka runtime pikeun ngawas kasehatan wadahna sareng, upami diperyogikeun, nyandak tindakan anu pas. Tanpa ieu, mustahil pikeun ngahijikeun otomatisasi ngamutahirkeun peti sareng ngatur siklus hirupna, anu, kahareupna bakal ngaburukkeun stabilitas sareng usability sistem parangkat lunak.

5 Prinsip Akal Umum pikeun Ngawangun Aplikasi Cloud-Native
Dina prakna, aplikasi wadahna kedah, sahenteuna, gaduh API pikeun sababaraha jinis pamariksaan kaséhatan: tes liveness sareng tes kesiapan. Upami aplikasi ngaklaim ngalakukeun langkung seueur, éta kedah nyayogikeun cara sanés pikeun ngawas kaayaanana. Contona, logging acara penting via STDERR na STDOUT pikeun log aggregation maké Fluentd, Logstash sarta parabot sarupa lianna. Kitu ogé integrasi sareng ngalacak sareng perpustakaan koleksi métrik, sapertos OpenTracing, Prometheus, jsb.

Sacara umum, aplikasi masih tiasa diolah salaku kotak hideung, tapi kedah disayogikeun sareng sadaya API anu diperyogikeun pikeun platform pikeun ngawas sareng ngatur éta ku cara anu pangsaéna.

Prinsip Konformasi Daur Kahirupan (LCP)

LCP nyaéta antitésis tina HOP. Nalika HOP nyatakeun yén wadahna kedah ngalaan API anu dibaca kana platform, LCP ngabutuhkeun aplikasi pikeun tiasa nampi inpormasi tina platform éta. Sumawona wadahna henteu ngan ukur nampi acara, tapi ogé adaptasi, dina basa sanés, ngaréaksikeunana. Lantaran kitu nami prinsipna, anu tiasa dianggap sarat pikeun nyayogikeun platform nganggo API tulisan.

5 Prinsip Akal Umum pikeun Ngawangun Aplikasi Cloud-Native
Platform gaduh sababaraha jinis acara pikeun ngabantosan ngatur siklus kahirupan wadahna. Tapi terserah kana aplikasina sorangan pikeun mutuskeun anu mana anu ditingali sareng kumaha ngaréspon.

Éta jelas yén sababaraha acara langkung penting tibatan anu sanés. Contona, upami hiji aplikasi teu sabar ngadat ogé, éta kudu nampa sinyal: nungtungan (SIGTERM) pesen na initiate rutin terminasi na gancang-gancang pikeun nyekel sinyal: maéhan (SIGKILL) nu asalna sanggeus SIGTERM.

Salaku tambahan, acara sapertos PostStart sareng PreStop tiasa penting pikeun daur hirup hiji aplikasi. Salaku conto, saatos ngaluncurkeun aplikasi, panginten peryogi sababaraha waktos pemanasan sateuacan tiasa ngabales pamundut. Atanapi aplikasi kedah ngaleupaskeun sumber daya ku sababaraha cara khusus nalika pareum.

Prinsip Immutability Image (IIP)

Hal ieu umumna ditarima yén aplikasi containerized kedah tetep unchanged sanggeus diwangun, sanajan aranjeunna dijalankeun dina lingkungan béda. Ieu ngabutuhkeun kabutuhan pikeun neundeun data éksternal nalika runtime (dina kecap sanésna, ngagunakeun alat éksternal pikeun ieu) sareng ngandelkeun konfigurasi khusus runtime éksternal, tinimbang ngarobih atanapi nyiptakeun wadah unik pikeun unggal lingkungan. Saatos sagala parobahan dina aplikasi, gambar wadahna kudu diwangun deui tur deployed ka sadaya lingkungan dipaké. Ku jalan kitu, nalika ngatur sistem IT, prinsip anu sami dianggo, katelah prinsip immutability server sareng infrastruktur.

Tujuan IIP nyaéta pikeun nyegah nyiptakeun gambar wadahna anu misah pikeun lingkungan runtime anu béda sareng nganggo gambar anu sami dimana-mana sareng konfigurasi khusus lingkungan anu cocog. Nuturkeun prinsip ieu ngamungkinkeun anjeun pikeun nerapkeun prakték penting sapertos tina sudut pandang otomatisasi sistem awan sapertos roll-back sareng roll-forward update aplikasi.

5 Prinsip Akal Umum pikeun Ngawangun Aplikasi Cloud-Native

Prinsip Disposability Prosés (PDP)

Salah sahiji ciri anu paling penting tina wadah nyaéta ephemerality na: conto wadahna gampang diciptakeun sareng gampang dirusak, ku kituna tiasa gampang diganti ku conto anu sanés iraha waé. Aya seueur alesan pikeun ngagantian sapertos kitu: gagalna tés serviceability, skala aplikasi, transfer ka host anu sanés, kacapean sumberdaya platform, atanapi kaayaan sanés.

5 Prinsip Akal Umum pikeun Ngawangun Aplikasi Cloud-Native
Salaku konsekuensi, aplikasi containerized kudu ngajaga kaayaan maranéhanana ngagunakeun sababaraha cara éksternal, atawa ngagunakeun schemes disebarkeun internal kalawan redundancy pikeun ieu. Salaku tambahan, aplikasina kedah ngamimitian gancang sareng mareuman gancang, sareng disiapkeun pikeun gagalna hardware anu parah.

Hiji prakték anu ngabantosan ngalaksanakeun prinsip ieu nyaéta ngajaga wadahna leutik. Lingkungan awan sacara otomatis tiasa milih host pikeun ngaluncurkeun conto wadahna, janten langkung alit wadahna, langkung gancang éta bakal ngamimitian - éta ngan saukur bakal niron ka host target dina jaringan langkung gancang.

Prinsip Mandiri (S-CP)

Numutkeun prinsip ieu, dina tahap assembly, sadaya komponén diperlukeun téh kaasup kana wadahna. Wadahna kedah diwangun dina anggapan yén sistem ngan ukur gaduh kernel Linux murni, janten sadaya perpustakaan tambahan anu diperyogikeun kedah disimpen dina wadahna sorangan. Éta ogé kedah ngandung hal-hal sapertos runtime pikeun basa pamrograman anu cocog, platform aplikasi (upami diperyogikeun), sareng katergantungan sanés anu diperyogikeun nalika aplikasi wadahna dijalankeun.

5 Prinsip Akal Umum pikeun Ngawangun Aplikasi Cloud-Native

Pangecualian dilakukeun pikeun konfigurasi anu béda-béda ti lingkungan ka lingkungan sareng kedah disayogikeun dina waktos jalanna, contona ngalangkungan Kubernetes ConfigMap.

Hiji aplikasi bisa ngawengku sababaraha komponén containerized, contona, wadahna DBMS misah dina aplikasi wéb containerized. Numutkeun prinsip S-CP, wadahna ieu henteu kedah digabungkeun kana hiji, tapi kedah dilakukeun supados wadah DBMS ngandung sadayana anu dipikabutuh pikeun operasi database, sareng wadah aplikasi wéb ngandung sadayana anu dipikabutuh pikeun operasi wéb. aplikasi, server wéb anu sami. Hasilna, dina runtime wadahna aplikasi wéb bakal gumantung kana wadahna DBMS sareng ngaksésna upami diperyogikeun.

Prinsip Runtime Confinement (RCP)

Prinsip S-CP ngahartikeun kumaha wadahna kedah diwangun sareng naon anu kedah dikandung dina binér gambar. Tapi wadahna sanés ngan ukur "kotak hideung" anu ngan ukur gaduh hiji ciri - ukuran file. Salila palaksanaan, wadahna nyandak ukuran anu sanés: jumlah mémori anu dianggo, waktos CPU, sareng sumber sistem anu sanés.

5 Prinsip Akal Umum pikeun Ngawangun Aplikasi Cloud-Native
Sarta di dieu prinsip RCP datang dina gunana, numutkeun nu wadahna kudu decapitate sarat na sumberdaya sistem jeung mindahkeun ka platform nu. Kalayan profil sumberdaya unggal wadahna (sabaraha CPU, mémori, jaringan, sareng sumber disk anu diperyogikeun), platform tiasa sacara optimal ngalaksanakeun jadwal sareng autoscaling, ngatur kapasitas IT, sareng ngajaga tingkat SLA pikeun wadahna.

Salian minuhan sarat sumberdaya wadahna, éta ogé penting pikeun aplikasi teu balik saluareun watesna sorangan. Upami teu kitu, nalika aya kakurangan sumberdaya, platformna langkung dipikaresep ngalebetkeun kana daptar aplikasi anu kedah ditungtungan atanapi dimigrasikeun.

Nalika urang ngobrol ngeunaan janten awan-heula, urang ngobrol ngeunaan cara urang damel.
Di luhur, kami ngarumuskeun sababaraha prinsip umum anu netepkeun dasar metodologis pikeun ngawangun aplikasi wadah kualitas luhur pikeun lingkungan awan.

Catet yén salian prinsip umum ieu, anjeun ogé peryogi metode sareng téknik canggih tambahan pikeun damel sareng wadah. Salaku tambahan, kami gaduh sababaraha saran pondok anu langkung spésifik sareng kedah diterapkeun (atanapi henteu diterapkeun) gumantung kana kaayaan:

Webinar dina versi anyar tina OpenShift Container Platform - 4
11 Juni tabuh 11.00

Naon anu anjeun bakal diajar:

  • Immutable Red Hat Enterprise Linux CoreOS
  • OpenShift jasa bolong
  • kerangka operator
  • kerangka Knative

sumber: www.habr.com

Tambahkeun komentar