5 Principi di u sensu cumunu per a creazione di Apps native in nuvola

L'applicazioni "Cloud native" o semplicemente "nuvola" sò create apposta per travaglià in infrastrutture nuvola. Sò tipicamente custruiti cum'è un inseme di microservizi pocu accoppiati imballati in cuntenituri, chì à u turnu sò gestiti da una piattaforma nuvola. Tali applicazioni sò disposti per fallimenti per difettu, chì significa chì travaglianu in modu affidabile è scala ancu in casu di fallimenti serii à livellu di l'infrastruttura. L'altra parte di a munita hè l'insemi di restrizioni (cuntratti) chì a piattaforma nuvola impone à l'applicazioni di cuntainer per pudè gestisce automaticamente.

5 Principi di u sensu cumunu per a creazione di Apps native in nuvola

Mentre sò cumplettamente cuscenti di a necessità è di l'impurtanza di passà à l'applicazioni basate in nuvola, assai urganisazioni ùn sanu ancu da induve principià. In questu post, guardemu una quantità di principii chì, se seguitu quandu u sviluppu di l'applicazioni containerizzate, vi permetterà di realizà u putenziale di e plataforme di nuvola è di ottene u funziunamentu affidabile è a scala di l'applicazioni ancu in casu di fallimenti seri à l'infrastruttura IT. livellu. L'ultimu scopu di i principii delineati quì hè di amparà cumu custruisce applicazioni chì ponu esse gestite automaticamente da e plataforme di nuvola cum'è Kubernetes.

Principi di cuncepimentu di software

In u mondu di prugrammazione, i principii riferenu à e regule abbastanza generale chì deve esse seguitu quandu u sviluppu di software. Puderanu esse utilizati quandu travaglianu cù qualsiasi lingua di prugrammazione. Ogni principiu hà i so scopi, l'arnesi per ottene chì sò generalmente mudelli è pratiche. Ci hè ancu una quantità di principii fundamentali per a creazione di software d'alta qualità, da quale tutti l'altri scorri. Eccu alcuni esempi di principii fundamentali:

  • KISS (Mantene simplice, stupidu) - ùn cumplicà micca;
  • SECCHE (Ùn ripetite micca) - ùn ripetite micca;
  • YAGNI (Ùn avete micca bisognu) - ùn crea micca qualcosa chì ùn hè micca immediatamente necessariu;
  • SoC Separazione di preoccupazioni - sparte e responsabilità.

Comu pudete vede, sti principii ùn stabiliscenu micca regule specifichi, ma appartenenu à a categuria di i cosi-chiamati cunsiderazioni di u sensu cumunu basatu nantu à l'esperienza pratica, chì sò spartuti da parechji sviluppatori è à quale si riferite regularmente.
Inoltre, ci hè SOLIDU - Un inseme di i primi cinque principii di prugrammazione è cuncepimentu orientati à l'ughjettu, formulati da Robert Martin. SOLID include principii larghi, aperti, cumplementarii chì, quandu sò appiicati inseme, aiutanu à creà sistemi software megliu è mantenenu megliu à longu andà.

I principii SOLID appartenenu à u campu di OOP è sò furmulati in a lingua di cuncetti è cuncetti cum'è classi, interfacce è eredi. Per analogia, i principii di sviluppu ponu ancu esse formulati per l'applicazioni in nuvola, solu l'elementu basu quì ùn serà micca una classa, ma un cuntinuu. Seguendu questi principii, pudete creà applicazioni containerizzate chì rispondenu megliu à i scopi è l'ugettivi di e plataforme di nuvola cum'è Kubernetes.

Contenituri nativi di nuvola: l'approcciu Red Hat

Oghje, quasi ogni applicazione pò esse imballata relativamente facilmente in cuntenituri. Ma per l'applicazioni per esse automatizate è orchestrate in modu efficace in una piattaforma cloud cum'è Kubernetes, hè necessariu un sforzu supplementu.
A basa per l'idee delineate quì sottu era a metodulugia L'app Twelve Factor è assai altri travaglii nantu à diversi aspetti di a custruzione di l'applicazioni web, da a gestione di u codice fonte à i mudelli di scala. I principii descritti s'applicanu solu à u sviluppu di l'applicazioni containerizzate chì sò custruiti nantu à i microservizi è pensati per e plataforme di nuvola cum'è Kubernetes. L'elementu basu in a nostra discussione hè l'imaghjini di u containeru, è u tempu di runtime di u containeru di destinazione hè a piattaforma di orchestrazione di u containeru. L'obiettivu di i principii pruposti hè di creà cuntenituri per quale i travaglii di pianificazione, scalazione è monitoraghju ponu esse automatizati nantu à a maiò parte di e plataforme d'orchestrazione. I principii sò presentati in nisun ordine particulari.

Principiu di preoccupazione unica (SCP)

Stu principiu hè in parechje manere simili à u Principiu di Responsabilità Unicu. SRP), chì face parte di u settore SOLID è dichjara chì ogni ughjettu deve avè una rispunsabilità, è chì a rispunsabilità deve esse cumpletamente incapsulata in una classa. U puntu di SRP hè chì ogni rispunsabilità hè un mutivu di cambià, è una classa deve avè una è una sola ragione per cambià.

In SCP, usemu a parolla "preoccupazione" invece di a parola "responsabilità" per indicà u livellu più altu di astrazione è u scopu più largu di un containeru cumparatu à una classe OOP. È se u scopu di SRP hè di avè solu un mutivu di cambià, allora daretu à SCP hè u desideriu di espansione a capacità di riutilizà è rimpiazzà i cuntenituri. Seguendu l'SRP è creendu un containeru chì risolve un solu prublema è face in un modu funziunale cumpletu, aumentate e probabilità di riutilizà quella maghjina di u containeru in diversi cuntesti di l'applicazione.

U principiu SCP dice chì ogni cuntainer deve risolve un solu prublema è fà bè. Inoltre, SCP in u mondu di u containeru hè più faciule da ottene cà SRP in u mondu OOP, postu chì i cuntenituri di solitu eseguenu un solu prucessu, è a maiò parte di u tempu stu prucessu risolve una sola tarea.

Se un microserviziu di cuntainer deve risolve parechji prublemi in una volta, allora pò esse divisu in cuntenituri unicu compitu è ​​cumminatu in un pod (una unità di implementazione di piattaforma di container) usendu sidecar è mudelli di container init. Inoltre, SCP facilita a rimpiazzà un vechju cuntainer (cum'è un servitore web o un broker di messagi) cù un novu chì risolve u stessu prublema, ma hà allargatu a funziunalità o scala megliu.

5 Principi di u sensu cumunu per a creazione di Apps native in nuvola

Principiu di l'Alta Osservabilità (HOP)

Quandu i cuntenituri sò usati cum'è un modu unificatu per imballà è eseguisce l'applicazioni, l'applicazioni stessi sò trattate cum'è una scatula negra. In ogni casu, s'ellu si tratta di cuntenituri di nuvola, allora devenu furnisce API speciale à u runtime per monitorizà a salute di i cuntenituri è, se ne necessariu, piglià l'azzioni appropritate. Senza questu, ùn serà micca pussibule unificà l'automatizazione di l'aghjurnamentu di i cuntenituri è a gestione di u so ciclu di vita, chì, à u turnu, aggravarà a stabilità è l'usabilità di u sistema di software.

5 Principi di u sensu cumunu per a creazione di Apps native in nuvola
In pratica, una applicazione containerizzata deve, à u minimu, avè una API per diversi tipi di cuntrolli di salute: teste di vita è teste di prontezza. Se una applicazione pretende di fà più, deve furnisce altri mezi di monitorizà u so statu. Per esempiu, registrà avvenimenti impurtanti via STDERR è STDOUT per l'aggregazione di log cù Fluentd, Logstash è altri strumenti simili. In più di l'integrazione cù e biblioteche di cullizzioni di traccia è metriche, cum'è OpenTracing, Prometheus, etc.

In generale, l'applicazione pò ancu esse trattata cum'è una scatula negra, ma deve esse furnita cù tutte l'API chì a piattaforma necessita per monitorizà è gestisce in u megliu modu pussibule.

Principiu di Conformità di u Ciclu di Vita (LCP)

LCP hè l'antitesi di HOP. Mentre HOP dichjara chì u cuntinuu deve espose l'API di lettura à a piattaforma, LCP richiede l'applicazione per esse capace di accettà l'infurmazioni da a piattaforma. Inoltre, u cuntinuu ùn deve micca solu riceve avvenimenti, ma ancu adattà, in altri palori, reagisce à elli. Da quì u nome di u principiu, chì pò esse cunsideratu cum'è un requisitu per furnisce a piattaforma cù API di scrittura.

5 Principi di u sensu cumunu per a creazione di Apps native in nuvola
I plataformi anu diversi tipi di avvenimenti per aiutà à gestisce u ciclu di vita di un containeru. Ma tocca à l'applicazione stessa per decide quale di elli per percive è cumu reagisce.

Hè chjaru chì certi avvenimenti sò più impurtanti chè altri. Per esempiu, se una applicazione ùn tollerà micca bè i crashes, deve accettà signale: terminate (SIGTERM) i missaghji è inizià a so rutina di terminazione u più prestu pussibule per catturà u signale: kill (SIGKILL) chì vene dopu à SIGTERM.

Inoltre, avvenimenti cum'è PostStart è PreStop ponu esse impurtanti per u ciclu di vita di una applicazione. Per esempiu, dopu avè lanciatu una applicazione, pò esse bisognu di qualchì tempu di riscaldamentu prima di pudè risponde à e dumande. O l'applicazione deve liberà risorse in qualchì modu speciale quandu si chjude.

U principiu di l'immutabilità di l'imaghjini (IIP)

Hè generalmente accettatu chì l'applicazioni containerizzate ùn devenu esse cambiate dopu esse custruite, ancu s'ellu sò eseguiti in ambienti differenti. Questu hè necessariu a necessità di esternalizà l'almacenamiento di dati in runtime (in altri palori, per utilizà strumenti esterni per questu) è di cunfidenza in cunfigurazioni esterne, specifiche di runtime, invece di mudificà o creà cuntenituri unichi per ogni ambiente. Dopu ogni cambiamentu di l'applicazione, l'imaghjina di u containeru deve esse ricustruita è implementata in tutti l'ambienti utilizati. In modu, quandu si gestisce i sistemi IT, un principiu simili hè utilizatu, cunnisciutu cum'è u principiu di immutabilità di servitori è infrastruttura.

L'obiettivu di l'IIP hè di impedisce a creazione d'imaghjini di cuntainer separati per diversi ambienti di runtime è di utilizà a stessa maghjina in ogni locu cù a cunfigurazione specifica di l'ambiente appropritatu. Dopu stu principiu vi permette di implementà pratiche cusì impurtanti da u puntu di vista di l'automatizazione di i sistemi di nuvola cum'è roll-back è roll-forward di l'aghjurnamenti di l'applicazioni.

5 Principi di u sensu cumunu per a creazione di Apps native in nuvola

Principiu di Disposabilità di Processu (PDP)

Una di e caratteristiche più impurtanti di un cuntinuu hè a so effimera: una istanza di un cuntinuu hè faciule di creà è faciule di distruzzione, perchè pò esse facilmente rimpiazzata cù una altra istanza in ogni mumentu. Ci ponu esse parechje motivi per un tali rimpiazzamentu: fallimentu di una prova di serviziu, scaling di l'applicazione, trasferimentu à un altru òspite, esaurimentu di risorse di piattaforma, o altre situazioni.

5 Principi di u sensu cumunu per a creazione di Apps native in nuvola
In cunsiquenza, l'applicazioni cuntainerized deve mantene u so statu cù qualchi mezi esterni, o aduprà schemi internu distribuitu cù redundancy per questu. Inoltre, l'applicazione deve inizià rapidamente è chjude rapidamente, è esse preparatu per un fallimentu di hardware fatale improvvisu.

Una pratica chì aiuta à implementà stu principiu hè di mantene i cuntenituri chjuchi. L'ambienti di nuvola ponu selezziunà automaticamente un òspite per lancià una istanza di cuntainer, cusì u più chjucu u cuntinuu, u più veloce cumminciarà - serà simplicemente copiatu à l'ospite di destinazione nantu à a rete più veloce.

Principiu d'autocontenimentu (S-CP)

Sicondu stu principiu, in u stadiu di assemblea, tutti i cumpunenti necessarii sò inclusi in u cuntinuu. U cuntinuu deve esse custruitu annantu à l'assunzione chì u sistema hà solu un kernel Linux puru, cusì tutte e biblioteche supplementari necessarii deve esse posti in u cuntinuu stessu. Deve ancu cuntene cose cum'è u runtime per a lingua di prugrammazione currispondente, a piattaforma di l'applicazioni (se necessariu), è altre dipendenze chì saranu richieste mentre l'applicazione di u containeru hè in esecuzione.

5 Principi di u sensu cumunu per a creazione di Apps native in nuvola

Eccezzioni sò fatti per cunfigurazioni chì varianu da l'ambiente à l'ambiente è deve esse furnitu in runtime, per esempiu attraversu un ConfigMap Kubernetes.

Una applicazione pò include parechji cumpunenti containerizzati, per esempiu, un containeru DBMS separatu in una applicazione web containerizzata. Sicondu u principiu S-CP, sti cuntenituri ùn deve esse cumminati in unu, ma deve esse fattu in modu chì u cuntinuu DBMS cuntene tuttu ciò chì hè necessariu per u funziunamentu di a basa di dati, è u cuntinuu di l'applicazione web cuntene tuttu ciò chì hè necessariu per u funziunamentu di u web. applicazione, u stessu servitore web. In u risultatu, in runtime u cuntinuu di l'applicazioni web dependerà di u cuntinuu DBMS è accede à ellu cum'è necessariu.

Principiu di Confine di Runtime (RCP)

U principiu S-CP definisce cumu u cuntinuu deve esse custruitu è ​​ciò chì l'imaghjini binariu deve cuntene. Ma un cuntinuu ùn hè micca solu una "scatola negra" chì hà una sola caratteristica - a dimensione di u schedariu. Durante l'esekzione, u cuntinuu piglia altre dimensioni: a quantità di memoria utilizata, u tempu di CPU è altre risorse di u sistema.

5 Principi di u sensu cumunu per a creazione di Apps native in nuvola
E quì u principiu RCP hè utile, secondu chì u cuntinuu deve decapitate i so bisogni per i risorsi di u sistema è trasfiriri à a piattaforma. Cù i profili di risorse di ogni containeru (quantu CPU, memoria, rete è risorse di discu hà bisognu), a piattaforma pò eseguisce in modu ottimale a pianificazione è l'autoscaling, gestisce a capacità IT è mantene i livelli SLA per i cuntenituri.

In più di risponde à i requisiti di risorsa di u cuntinuu, hè ancu impurtante per l'applicazione per ùn andà oltre i so cunfini. Altrimenti, quandu una carenza di risorse si trova, a piattaforma hè più prubabile di includela in a lista di l'applicazioni chì deve esse terminate o migrate.

Quandu parlemu di esse nuvola prima, parlemu di a manera di travaglià.
Sopra, avemu formulatu una quantità di principii generali chì stabiliscenu a basa metodulugia per a custruzzione di applicazioni di cuntainer d'alta qualità per ambienti nuvola.

Innota chì in più di sti principii generali, avete ancu bisognu di metudi è tecniche avanzati supplementari per travaglià cù cuntenituri. Inoltre, avemu uni pochi di cunsiglii brevi chì sò più specifichi è devenu esse applicati (o micca appiicati) secondu a situazione:

Webinar nantu à a nova versione di OpenShift Container Platform - 4
U 11 di ghjugnu à 11.00

Ciò chì amparà:

  • Immutable Red Hat Enterprise Linux CoreOS
  • Mesh di serviziu OpenShift
  • Quadru operatore
  • Quadru knative

Source: www.habr.com

Add a comment