Video: Шаблоны проектирования микросервисов на примере Авито / Фрол Крючков (Авито) (Prosinac 2024)
Preduzeće softvera tvrtke prošarano je buzzy tehnologijama. O puno smo ih pisali, bilo da je to blockchain, razvoj niskog koda ili drugi trendovi u nastajanju koji mijenjaju način na koji radimo. Jedna nova buzzword za koju možda niste čuli prije je "mikroservisi".
To je po dizajnu. Mikroservisi drugačiji su način za izradu softverskog softvera temeljen na skupu isprepletenih modularnih komponenti, a ne na tradicionalnoj ideji "monolita" - aplikacije koja se sastoji od jedne stalno rastuće planine koda. Aplikacije utemeljene na mikroservisima ne razlikuju se od korisničkog sučelja (UI), bilo da se radi o složenoj aplikaciji za podatkovni centar ili web ili mobilnoj aplikaciji koja se nalazi na infrastrukturi skalabilnog oblaka.
Razlog zbog kojeg bi se tvrtke trebale brinuti o mikroservisima jest taj što arhitektura može iza vremena pomoći vašem razvojnom i IT timu da brže rade i inoviraju, upravljaju infrastrukturom i smanjuju troškove i složenost dodavanja novih značajki i funkcionalnosti aplikaciji. Al Hilwa, direktor programa za istraživanje softvera za razvoj aplikacija u IDC-u, objasnio je kako će mikroservis postaviti na izvrstan način, pritom imajući u vidu i kulturne i tehnološke izazove.
"Prilikom gradnje novih sustava vjerojatno je ključna stvar prepoznati da bi jedan mali mikroservis trebao graditi mali tim", rekla je Hilwa. "Drugo, tolerancija na različitost u programskim jezicima i radnim procesima programera često se podrazumijeva zbog neovisnosti cjelokupne kulture mikroservisa. Glavni smisao egzec-a je graditi softver postupno koristeći male timove, pri čemu svaki izrađuje koherentan modul s objavljenim Prednost je u tome što se neovisni moduli mogu razvijati znatno bržim tempom nezavisno dok se objavljenim API-jevima upravlja na organiziran način."
Što su zapravo mikroservisi?
Hilwa je napisala izvješće IDC-a za 2015. pod nazivom „Pojava mikroservisa kao novi arhitektonski pristup izgradnji novih softverskih sustava“. U izvješću on definira mikroservise kao detaljnu softversku arhitekturu gdje su komponente aplikacija dizajnirane i evoluirane neovisno kako bi zadovoljile API-je definirane zahtjeve interoperabilnosti (što znači, vezane uz aplikaciju kao cjelinu). Mikroservisi, međutim, ne postoje u vakuumu. Nova arhitektura zahtijeva snažnu organizacijsku podršku i pomak u IT kulturi.
Mikroservis također nije definiran nijednom posebnom tehnologijom, ali kao evoluciju dugogodišnjeg koncepta uslužne orijentirane arhitekture (SOA) koji je pojačan pojavom spremnika i porastom automatizacije putem razvojnih pristupa kao što su kontinuirana isporuka (CD) i kontinuirana integracija (CI).
"Organizacije koje danas koriste mikro usluge obično su motivirane željom za bržim razvojem usluge", rekla je Hilwa. "Prema tome, u većini takvih slučajeva mikroservisi u velikoj mjeri koriste automatizaciju CI / CD-a. Međutim, tempo stvarne implementacije može se razlikovati između službi. Mislim da je ključno dobro pogledati unutarnju kulturu i biti siguran sam da ste spremni tolerirati veću decentralizaciju i raznolikost u tehnološkom paketu."
"Unutarnja kultura" Hilwa se u velikoj mjeri odnosi na DevOps, filozofiju koja kombinira razvoj softvera, IT operacije i osiguranje kvalitete (QA) u jedinstveni tijek rada. Pokretanje softvera DevOps HashiCorp i njegovi osnivači već su dugo zagovornici mikro usluga. Tvrtka, koja je nedavno osigurala 24 milijuna dolara financiranja serije B, računa tvrtke poput Cisco, DigitalOcean, Mozilla i Stripe među svoje korisnike s otvorenim kodom i poslovne korisnike.
Mikroservisi su bitni u načinu na koji HashiCorp pristupa razvoju infrastrukture DevOps-a i protoka rada aplikacija kroz svoje popularne alate otvorenog koda i rastući paket poslovnih proizvoda. Armon Dadgar, CTO i suosnivač HashiCorpa, razbio je razliku između monolita i mikroservisa koristeći jednostavnu analogiju: Amazon i eBay.
"Razmislite o Amazonu i eBayu kao pojedinačnim aplikacijama. Iz perspektive krajnjeg korisnika izgledaju slično, ali iza scene, tvrtke su imale suprotne pristupe u načinu izrade i arhitekture svojih aplikacija", rekao je Dadgar. "Amazon je od početka bio skup mikro usluga; djeluje kao jedna aplikacija. Ali ako uzmete pretraživanje, katalog proizvoda, košaricu, račune, tijekove narudžbe i podijelite te funkcije, dvije se aplikacije pokreću na različitim strojevi „.
Analogija Amazona također se proteže na način na koji je strukturiran sam Amazon. Dadgar objašnjava tehnološke pristupe poput mikro usluga kao alate za podršku većem kretanju procesa prema DevOpsu. "Pravilo dvije pizze" Jeffa Bezosa djeluje tako da samo jedan od pet do osam ljudi bude u bilo kojem timu iz Amazona. Ako se tim poveća, onda se on dijeli na dva.
Amazonova organizacijska hijerarhija započinje mapiranje prema onome što je Dadgar opisao kao "raspad funkcionalnosti". Razdvojen na organizacijskoj i modularnoj razini arhitekture, svaki tim tada može razvijati i eksperimentirati slobodnije, bez potrebe da koordinira svaku promjenu - i dalje djelujući kao dio jedinstvene kohezivne aplikacije.
"eBay je preuzeo monolitni pristup; svi su eBay izgradili kao dugačku, 50-milionsku liniju primjene koda", rekao je tata. "Pristup mikroservisima u početku je bolniji, jer problemi s modularnošću i interoperabilnošću su oni koji ne postoje u monolitu. Ali stvari se pokreću kad aplikacija postane prevelika. U monolitu nema raspada.
"Razmislite o stotinama ili tisućama programera koji surađuju na jedinstvenoj bazi podataka i pokušavaju se koordinirati. QA tim koji dodaje funkcionalnost na jednoj strani aplikacije mogao bi na drugi način prebiti način jer to ne postoji jasno razdvajanje uloga i odgovornosti. To treba popraviti to će vam zatrebati sve veća koordinacija između projektnih menadžera i QA procesa koji može trajati tjednima i uskih grla, bez obzira koliko brz tim radi. Previše kuhara u kuhinji."
Kontejneri i mikroservisi u svijetu razvijenih
Način na koji vaše poslovanje implementira arhitekturu mikroservisa bit će dug put prema utvrđivanju isplati li se investicija ili ne. Mikroservisi puno rade unaprijed, posebno u integraciji API-ja koja je potrebna kako bi sve usluge razgovarale jedna s drugom. Hilwa je objasnila da je to još složenije kada se pokušava integrirati mikroservis u postojeći sustav; preporučuje da poduzeća grade nove sustave kad god je to moguće, a ne da rekonstruiraju naslijeđenu monolitnu aplikaciju za mikroservise.
"Tradicionalne arhitekture sustava obično uključuju velike, složene sustave zapisa podataka s razrađenim normaliziranim shemama", rekao je Hilwa. "Razdvajanje takvih sustava u manje sastavne dijelove sa vlastitim neovisnim sustavima zahtijeva mnogo posla na dizajniranju baze podataka i učinkovito prepisivanje većine osnovne logike aplikacije. To u većini slučajeva općenito ne zahtijeva troškove i vrijeme."
Ako rekonstruirate naslijeđenu aplikaciju, tada Hilwa savjetuje da to učinite postupno. Iako su još važniji od integracije API-ja, mikroservisi ne funkcioniraju bez DevOps kulture koja stoji iza nje. HashiCorpov tata rekao je da, kada je u pitanju veći kišobran DevOpsa, mikroservisi postaju alat za olakšavanje većeg pomaka procesa prema temeljnoj promjeni radnih tokova putem kojih isporučujemo aplikacije. Ukazao je na Tao HashiCorpa koji je uspostavio kad je sa suosnivačem Mitchelom Hashimotom pokrenuo tvrtku: jednostavnu, modularnu i kompostirajuću.
"DevOps je u nekom smislu još preopterećeniji pojam od mikroservisa", rekao je tata. "Ali posao čine ljudi s različitim znanstvenim specijalnostima: programeri, operatori, službenici osiguranja. A onda imate proces, način na koji organizirate te ljude. Tada imate alate za podršku tom procesu, a to su mjesto gdje se nalaze mikroservisi i spremnici ući."
Kontejneri, popularizirani otvorenom eksplozijom Dockera, daleko su od jedinog alata koji poduzeća mogu koristiti za olakšavanje mikro usluga. IDC-ova Hilwa rekla je da se spremnici koriste u modernim aplikacijama kao dio CI / CD radnih tijekova i, u nekim slučajevima, dok se implementiraju u proizvodnju. Ali rekao je da mikroservisi također mogu utjecati na virtualne strojeve (VM), bez potrebe za kontejnerima.
To je rečeno, kad je riječ o načinima na koji se razvijaju poslovni oblaci, Docker kontejneri i mikroservisi močna su kombinacija alata koju privlači posao svih oblika i veličina - od startapa poput HashiCorpa do korporativnih divova poput Oraclea. HashiCorpov tata rekao je da su kontejneri pogodno sredstvo kojim Dev i Ops (i, prema udruzi, različiti timovi i službe) komuniciraju jedni s drugima.
"Koji je artefakt koji prenosimo između programera i operatora? Koji temeljito protječemo i oko čega gradimo? Kontejneri su pogodna jedinica za prolazak", rekao je tata. "Razmislite o globalnom korporativnom proizvodu koji isporučuje svijet. Bilo da se radi o teretnom brodu, teretnom vlaku ili kamionu, to je ista jedinica koja prolazi kroz cijeli sustav."
DevOps i mikroservisi još su daleko od širokog prihvaćanja poduzeća, ali tržište samo raste. Prema izvješću IDC-a, arhitektura mikroservisa ući će u fazu sazrijevanja u narednih pet godina. Ta će se zrelost dogoditi za petama kulture DevOps koja doseže 50 posto organizacija do 2020. godine, kontinuiranog razvoja alata za automatizaciju softvera i dominacije jeftine skalabilne oblačne infrastrukture koju pružaju Amazon Web Services (AWS) i Microsoft Azure.
Dadgar je rekao da je, čak i uz mali dio poduzeća koje trenutno prihvaćaju DevOps i mikroservis, HashiCorp već pretplaćen. Svoj prvi sedmeroznamenkasti prihod postigao je nakon samo devet mjeseci prodaje poduzeća, iznad zajednice otvorenog koda na GitHubu od nekoliko milijuna aktivnih aktivnih korisnika mjesečno. Mikroservisi samo su dio HashiCorp-ovog cjevovoda za alate za radne programe i veće DevOps-ove putne karte. Ali modularnost i interoperabilnost ispod svega što tvrtka gradi potaknuli su meteorski uspon jednog od najtoplijih softverskih startapa u Silicijskoj dolini.
"Prije četiri godine kada smo počeli ići ćemo u sastanke i iznijeti svoju viziju kako će se upravljati infrastrukturom", rekao je tata. "Nismo se baš smijali iz sobe; znali smo da je rano. Ali, sada su naši alati poput Terraforma na putu da postanu industrijski standardi. Ono što ćemo vidjeti je domino efekt pritiska konkurencije i, u dugoročno, naša će uloga biti suradnja sa službenicima za strateške poslove i organizacijama za organizaciju tehničkih službi kako bi razumjeli promjenu procesa koju trebaju poduzeti.
"Razmisli o Toyoti unatrag dana", nastavio je Dadgar. "Imali ste gomilu automobilskih tvrtki koje proizvode proizvode, ali trošak je bio viši nego što bi trebao biti. Toyota nije izumila što je automobil; oni su samo bili stroži i sve strožiji u procesu, i prešli su iz smijališta u elektroenergetsku kuću, forsirajući ostatak industrije prihvaća isti skup prakse kako bi ostao konkurentan. Upravo sada imamo voditelje u industriji koji pitaju kako mogu steći konkurentsku prednost, a njihov odgovor je usvajanje prakse Googlesa i Amazona na tržištu. točka, pogodit će kritičnu masu."