Cunferenza QCon. Mastering Chaos: The Netflix Guide to Microservices. Parte 4

Josh Evans parla di u mondu caòticu è culurita di i microservizi Netflix, cuminciendu cù i principii assai basi - l'anatomia di i microservizi, i sfidi assuciati à i sistemi distribuiti, è i so benefici. Basendu nantu à sta fundazione, esplora e pratiche culturali, architettoniche è operative chì portanu à a maestria di i microservizi.

Cunferenza QCon. Mastering Chaos: The Netflix Guide to Microservices. Parte 1
Cunferenza QCon. Mastering Chaos: The Netflix Guide to Microservices. Parte 2
Cunferenza QCon. Mastering Chaos: The Netflix Guide to Microservices. Parte 3

A cuntrariu di a deriva operativa, l'intruduzioni di novi lingue per l'internazionalizazione di u serviziu è e tecnulugia novi cum'è i cuntenituri sò decisioni cuscenti per aghjunghje una nova cumplessità à l'ambiente. U mo squadra di l'operazioni standardizata nantu à u megliu tecnulugicu di strada per Netflix, chì hè stata cocciata in e migliori pratiche predefinite basate in Java è EC2, ma cum'è l'affari cresce, i sviluppatori anu cuminciatu à aghjunghje novi cumpunenti cum'è Python, Ruby, Node-JS è Docker.

Cunferenza QCon. Mastering Chaos: The Netflix Guide to Microservices. Parte 4

Sò assai fieru chì eramu i primi à sustene u nostru pruduttu per travaglià bè senza aspittà per i reclami di i clienti. Tuttu hà cuminciatu abbastanza simplice - avemu avutu prugrammi operativi in ​​Python è uni pochi di applicazioni back-office in Ruby, ma e cose sò diventate assai più interessanti quandu i nostri sviluppatori web anu annunziatu ch'elli anu da abbandunà a JVM è anu da spustà u web. applicazione à a piattaforma software Node. js. Dopu à l'intruduzioni di Docker, e cose sò diventate assai più cumplesse. Avemu seguitu a logica è e tecnulugii chì avemu ghjuntu sò diventate realtà quandu l'avemu implementatu per i clienti perchè avianu assai sensu. Vi dicu perchè questu hè cusì.

API Gateway hà veramente a capacità di integrà grandi scripts chì ponu agisce cum'è endpoints per i sviluppatori UI. Anu cunvertitu ognuna di sti script in tale manera chì dopu avè fattu cambiamenti puderanu implementà à a produzzione è dopu à i dispositi di l'utilizatori, è tutti questi cambiamenti sò stati sincronizati cù endpoints chì currianu in a porta di l'API.

In ogni casu, questu hà ripetutu u prublema di creà un novu monolitu induve u serviziu API hè stata sopracargata di codice in modu chì parechji scenarii di fallimentu sò accaduti. Per esempiu, certi endpoints sò stati eliminati, o scripts generati aleatoriamente tante versioni di qualcosa chì e versioni piglianu tutta a memoria dispunibule di u serviziu API.

Era logicu per piglià questi endpoints è tiralli fora di u serviziu API. Per fà questu, avemu criatu cumpunenti Node.js chì currianu cum'è picculi applicazioni in cuntenituri Docker. Questu ci hà permessu di isolà qualsiasi prublemi è crashes causati da queste applicazioni node.

U costu di sti cambiamenti hè abbastanza grande è si compone di i seguenti fatturi:

  • Strumenti di produtividade. A gestione di e novi tecnulugii necessitava novi arnesi perchè a squadra UI, utilizendu scripts assai boni per creà un mudellu efficiente, ùn hà micca bisognu di passà assai tempu à gestisce l'infrastruttura, avianu solu à scrive script è verificate a so funziunalità.
    Opportunità Insight è Sorting - Un esempiu chjave hè i novi strumenti necessarii per scopre l'infurmazioni di u driver di rendiment. Era bisognu di sapè quantu u processatore era occupatu, cumu a memoria hè stata utilizata, è a cullizzioni di sta informazione necessitava diverse strumenti.
  • Fragmentazione di l'imaghjini di basa - a basa simplice AMI hè diventata più frammentata è specializata.
  • Gestione di nodi. Ùn ci hè micca una architettura o tecnulugia off-the-shelf dispunibile chì vi permette di gestisce i nodi in u nuvulu, cusì avemu custruitu Titus, una piattaforma di gestione di cuntainer chì furnisce implementazione di container scalabile è affidabile è integrazione di nuvola cù Amazon AWS.
  • Duplicazione di una biblioteca o piattaforma. Furnisce e tecnulugia novi cù a listessa funziunalità core di a piattaforma hà bisognu di duplicà in l'uttene di sviluppatore Node.js basati in nuvola.
  • Curva di apprendimentu è sperienza industriale. L'intruduzioni di e tecnulugia novi inevitabbilmente crea novi sfidi chì deve esse superatu è amparatu da.

Cusì, ùn pudemu micca limità à una "strada asfaltata" è duvemu constantemente custruisce novi modi per avanzà e nostre tecnulugia. Per mantene i costi, avemu limitatu u supportu centralizatu è cuncentratu nantu à a JVM, novi nodi è Docker. Avemu priurità l'impattu efficace, infurmatu e squadre nantu à u costu di e so decisioni, è li incuraghjimu à circà modi per riutilizà e soluzioni d'impattu elevatu chì avianu digià sviluppatu. Avemu usatu questu approcciu quandu traduce u serviziu in lingue straniere per furnisce u pruduttu à i clienti internaziunali. L'esempii includenu biblioteche clientali relativamente simplici chì ponu esse generati automaticamente, perchè hè abbastanza faciule per creà una versione Python, una versione Ruby, una versione Java, etc.

Avemu cercatu constantemente l'opportunità di utilizà tecnulugii pruvati chì si sò pruvati in un locu è in altre situazioni simili.

Parlemu di l'ultimu elementu - cambiamenti, o variazioni. Fighjate cumu u cunsumu di u nostru pruduttu varia in modu irregulare per ghjornu di a settimana è per ora in tuttu u ghjornu. Puderia dì chì 9 a.m. hè u tempu più duru per Netflix, quandu a carica nantu à u sistema righjunghji u so massimu.

Cunferenza QCon. Mastering Chaos: The Netflix Guide to Microservices. Parte 4

Cumu pudemu ottene una alta velocità di implementazione di l'innuvazioni di u software, vale à dì, facendu constantemente novi cambiamenti à u sistema, senza pruvucà interruzzioni in a prestazione di serviziu è senza creà inconvenienti à i nostri clienti? Netflix hà rializatu questu attraversu l'usu di Spinnaker, una nova piattaforma globale di gestione basata in nuvola è di spedizione continua (CD).

Cunferenza QCon. Mastering Chaos: The Netflix Guide to Microservices. Parte 4

Criticamente, Spinnaker hè statu cuncepitu per integrà e nostre migliori pratiche in modu chì cum'è implementemu cumpunenti in a produzzione, pudemu integrà a pruduzzioni direttamente in a nostra tecnulugia di consegna di media.

Cunferenza QCon. Mastering Chaos: The Netflix Guide to Microservices. Parte 4

Avemu pussutu incorpore duie tecnulugia in u nostru pipeline di consegna chì valutemu assai: analisi canari automatizatu è implementazione in scena. L'analisi Canary significa chì dirigemu un trickle di u trafficu à a nova versione di u codice, è passà u restu di u trafficu di produzzione attraversu a versione antica. Allora cuntrollemu cumu u novu codice copre cù u compitu - megliu o peggiu di quellu esistenti.

Un rollout staggered significa chì se un rollout in una regione hà prublemi, andemu à un rollout in una altra regione. In questu casu, a lista di cuntrollu sopra citata deve esse inclusa in u pipeline di produzzione. Vi risparmiaraghju un pocu di tempu è vi cunsigliu di cunsultà a mo discussione precedente, Ingegneria Global Netflix Operations in the Cloud, se site interessatu à immersione più in questu tema. A registrazione video di u discorsu pò esse vistu seguitu u ligame à u fondu di a diapositiva.

Cunferenza QCon. Mastering Chaos: The Netflix Guide to Microservices. Parte 4

À a fine di a conversazione, parleraghju brevemente di l'urganizazione è l'architettura di Netflix. À u principiu avemu avutu un schema chjamatu Electronic Delivery, chì era a prima versione di NRDP 1.x media streaming. U terminu "backstream" pò esse usatu quì perchè inizialmente l'utilizatore puderia scaricà solu u cuntenutu per a riproduzione dopu nantu à u dispusitivu. A prima piattaforma di spedizione digitale di Netflix, in u 2009, pareva qualcosa cusì.

Cunferenza QCon. Mastering Chaos: The Netflix Guide to Microservices. Parte 4

U dispusitivu di l'utilizatori cuntene l'applicazione Netflix, chì era custituita da una interfaccia UI, moduli di sicurezza, attivazione di serviziu è riproduzione, basatu nantu à a piattaforma NRDP - Netflix Ready Device Platform.

À quellu tempu l'interfaccia d'utilizatore era assai simplice. Conteneva ciò chì era chjamatu Queque Reader, è l'utilizatore andava à u situ per aghjunghje qualcosa à Queque è dopu vede u cuntenutu aghjuntu nantu à u so dispusitivu. U pusitivu era chì a squadra di front-end è a squadra di back-end appartenevanu à a listessa urganizazione Elettronica di consegna è avianu una stretta relazione di travagliu. A carica hè stata creata basatu annantu à XML. À u listessu tempu, hè stata creata l'API di Netflix per l'affari di DVD, chì hà incuraghjitu l'applicazioni di terzu per dirige u trafficu à u nostru serviziu.

In ogni casu, l'API Netflix era ben preparatu per aiutà à noi cù una interfaccia d'utilizatore innovativa, chì cuntene metadata di tuttu u cuntenutu, infurmazione nantu à ciò chì i filmi sò dispunibili, chì creanu a capacità di generà liste di vigilia. Avia un API REST genericu basatu annantu à u schema JSON, u Codice di Risposta HTTP, u stessu utilizatu in l'architettura muderna, è un mudellu di sicurezza OAuth, chì era ciò chì era necessariu à u mumentu per una applicazione front-end. Questu hà permessu di passà da un mudellu publicu di spedizione di cuntenutu streaming à un mudellu privatu.

Cunferenza QCon. Mastering Chaos: The Netflix Guide to Microservices. Parte 4

U prublema cù a transizione era a frammentazione, postu chì avà u nostru sistema operava dui servizii basati nantu à principii di funziunamentu completamente differenti - unu in Rest, JSON è OAuth, l'altru in RPC, XML è un mecanismu di sicurità di l'utilizatori basatu nantu à u sistema di token NTBA. Questa era a prima architettura hibrida.

Ci era essenzialmente un firewall trà e nostre duie squadre perchè inizialmente l'API ùn hà micca scalatu assai bè cù NCCP è questu hà purtatu à l'attrito trà e squadre. I diffirenzii eranu in servizii, protokolli, circuiti, moduli di sicurezza, è i sviluppatori spessu avianu da cambià trà cuntesti completamente differenti.

Cunferenza QCon. Mastering Chaos: The Netflix Guide to Microservices. Parte 4

In questu rispettu, aghju avutu una conversazione cù unu di l'ingegneri anziani di a cumpagnia, à quale aghju dumandatu a quistione: "Chì duverebbe esse l'architettura à longu andà?" è hà dumandatu a quistione di contru: "Avete probabilmente più preoccupatu. nantu à e cunsequenze urganisazione - chì succèri s'è no integrà sti cosi, è si rompe ciò chì avemu amparatu à fà bè? Stu approcciu hè assai pertinente à a Legge di Conway: "L'urganisazioni chì i sistemi di cuncepimentu sò limitati da un disignu chì replica a struttura di cumunicazione di quella urganizazione". Questa hè una definizione assai astratta, cusì preferite una più specifica: "Qualunque pezzu di software riflette a struttura organizzativa chì l'hà creatu". Eccu a mo cita preferita da Eric Raymond: "Se avete quattru squadre di sviluppatori chì travaglianu nantu à un compilatore, vi finiscinu cù un compilatore di quattru passi". Ebbè, Netflix hà un compilatore di quattru passi, è cusì travagliammu.

Pudemu dì chì in questu casu, a coda hè a mozza di u cane. A nostra prima priorità ùn hè micca a suluzione, ma l'urganizazione; hè l'urganizazione chì guida l'architettura chì avemu. À pocu à pocu, da un mischju di servizii, avemu trasfirutu à una architettura chì avemu chjamatu Blade Runner, perchè quì avemu parlatu di servizii di punta è a capacità di NCCP per esse separati è integrati direttamente in u proxy Zuul, a porta API, è u funziunale currispundente. I "pezzi" sò stati trasfurmati in novi microservizi cù funzioni più avanzate di sicurezza, replay, data sorting, etc.

Cusì, si pò dì chì e strutture dipartimentali è a dinamica di l'imprese ghjucanu un rolu impurtante in a furmazione di u disignu di u sistema è sò un fattore chì prumove o impedisce u cambiamentu. L'architettura di i microservizi hè cumplessa è organica, è a so salute hè basatu annantu à a disciplina è u caosu introduttu.

Un pocu di publicità

Grazie per stà cun noi. Ti piace i nostri articuli ? Vulete vede più cuntenutu interessante? Supportaci facendu un ordine o ricumandendu à l'amichi, cloud VPS per sviluppatori da $ 4.99, un analogu unicu di servitori di livellu d'entrata, chì hè statu inventatu da noi per voi: Tutta a verità nantu à VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps da $ 19 o cumu si sparte un servitore? (dispunibule cù RAID1 è RAID10, finu à 24 core è finu à 40GB DDR4).

Dell R730xd 2 volte più prezzu in u centru di dati Equinix Tier IV in Amsterdam? Solu quì 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV da $ 199 in l'Olanda! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - da $ 99! Leghje circa Cumu custruisce una infrastruttura corp. classa cù l'usu di i servitori Dell R730xd E5-2650 v4 valenu 9000 XNUMX euro per un centesimu?

Source: www.habr.com

Add a comment