5 izzivov, kako postati domači v oblaku - in kako jih rešiti

Živimo v svetu, ki je domač v oblaku. Komaj preberete tehnološki blog ali pojdite na konferenco, ne da bi slišali o vseh prednostih tehnologij ali arhitektur, ki delujejo v oblaku, kot so zabojniki, mikroservice in funkcije brez strežnika.

Kljub vsemu navdušenju nad prehodom v oblak je lahko preprosto spregledati izzive, ki nastanejo, ko se iz zapuščenih, monolitnih aplikacij premaknete na strategijo v oblaku. Te izzive je mogoče premagati, vendar le, če se jih lotite kot del svoje migracijske strategije v oblaku.

V ta namen si oglejmo pet najpogostejših izzivov v oblaku, skupaj s strategijami za njihovo premagovanje.

Kaj je domače v oblaku?

Najprej pa beseda o tem, kaj domače v oblaku dejansko pomeni.

S hype okrog vsega, kar je "oblak", ljudje v oblaku včasih uporabljajo ljudi, da pomenijo kakršno koli tehnologijo ali strategijo, ki se jim zdi sodobna. Iz tega vidika se domače v oblaku konča kot le še ena relativno nesmiselna glasba.

Po drugi strani pa je, če je naloženo s specifičnim in omejenim pomenom, domače v oblaku uporaben izraz in pojem. Všeč nam je definicija CNCF, ki poudarja "ohlapno povezane sisteme" in odpornost kot značilnosti računalništva v oblaku. Opredelitev CNCF prav tako kaže na poseben in omejen seznam tehnologij in arhitektur - "zabojniki, storitvene mreže, mikroservice, nespremenljiva infrastruktura in deklarativni API-ji" - kot primeri tehnologij, ki delujejo v oblaku.

Za namene tega članka se bomo držali definicije CNCF, ki je domača v oblaku. Zdaj pa razpravljajmo o posebnih izzivih, ki nastanejo pri uporabi tehnologij in strategij, kot so opisane zgoraj.

Izzivi pri sprejemanju domorodnih oblakov

1) Trajno shranjevanje podatkov

Eden od pogostih izzivov številnih tehnologij v oblaku je trajno shranjevanje podatkov. Zabojniki, funkcije brez strežnika in aplikacije, nameščeni z uporabo nepremičnega infrastrukturnega modela, ponavadi nimajo možnosti, da bi podatke trajno shranili v sebi, ker se vsi notranji podatki uničijo, ko se aplikacija ustavi.

Za reševanje tega izziva je potrebno ponovno razmisliti o pristopih k shranjevanju podatkov tako, da ga ločimo od aplikacij in gostiteljskega okolja. Namesto da podatke shranjujejo v aplikacijskem okolju, delovni tokovi v oblaku jih shranjujejo zunaj in podatke izpostavljajo kot storitev. Nato se delovne obremenitve, ki potrebujejo dostop do podatkov, povežejo z njimi tako, kot bi se povezale s katero koli drugo storitvijo.

Ta pristop - ki ga omogočajo različna orodja, kot so zvezki v Kubernetesu - ima dve prednosti. Poleg tega, da omogočite obstojno shranjevanje podatkov za aplikacije, ki niso zasnovane tako, da so obstojne, omogoča tudi preprosto skupno rabo enega samega prostora za shranjevanje med več aplikacijami ali storitvami.

2) Integracija storitev

Aplikacije v domačem oblaku so običajno sestavljene iz nabora različnih storitev. Ta porazdeljena narava je tisto, kar pomaga, da postanejo prilagodljivi in ​​prožni v primerjavi z monolitami.

To pa pomeni tudi, da imajo obremenitve v oblaku veliko več gibljivih kosov, ki jih je treba brez težav povezati, da bi dosegli uspeh.

Deloma je integracija storitev težava, s katero se lahko razvijalci lotijo, ko gradijo aplikacije v domačem oblaku. Zagotoviti morajo pravilno velikost vsake storitve; najboljša praksa je ustvariti ločeno storitev za vsako vrsto funkcionalnosti v okviru delovne obremenitve, namesto da poskuša eno storitev storiti več stvari. Prav tako se je treba izogibati dodajanju storitev samo zato, ker lahko. Preden v aplikacijo vnesete večjo zapletenost v obliki druge storitve, se prepričajte, da storitev doseže določen cilj.

Poleg same arhitekture aplikacije je učinkovita integracija storitev odvisna tudi od izbire pravih tehnik uvajanja. Kontejnerji so verjetno najbolj očiten način za razporeditev več storitev in njihovo združevanje v eno delovno obremenitev, vendar so v nekaterih primerih funkcije brez strežnika ali brez vsebnikov, ki jih povezujejo API-ji, lahko boljši načini uvajanja storitev.

3) Upravljanje in spremljanje

Več storitev, ki jih izvajate kot del aplikacije, težje je nadzirati in upravljati z njimi. To je res, ne samo zaradi velikega števila storitev, ki jih morate spremljati, ampak tudi zato, ker zagotavljanje zdravja aplikacij zahteva spremljanje odnosov med storitvami, ne samo samimi storitvami.

Nato je za uspešno spremljanje in upravljanje storitev v domačem okolju potreben pristop, ki lahko napove, kako bo odpoved ene storitve vplival na druge, pa tudi razumel, katere odpovedi so najbolj kritične. Ključnega pomena je tudi dinamično izhodišče, kar pomeni nadomeščanje statičnih pragov s tistimi, ki nenehno ponovno ocenjujejo aplikacijsko okolje, da bi ugotovili, kaj je normalno in kaj je nepravilnost.

4) Izogibanje zaklepanju v oblak

Tveganja pri zaklepanju niso značilna samo za oblak; izvirajo lahko iz skoraj vsake vrste tehnologije in že desetletja grozijo okretnosti. Vendar pa je v primeru aplikacij ali arhitektur, ki delujejo v oblaku, grožnja, da postanemo preveč odvisni od določenega ponudnika ali storitve v oblaku, še posebej velika, ker lahko delovne obremenitve razporedimo tako, da potrebujejo določeno storitev iz določenega oblaka.

Na srečo je zmanjšanje tega tveganja za zaklepanje v oblaku dovolj enostavno, če načrtujete vnaprej. Če se držite standardov, ki temeljijo na skupnosti (kot so tisti, ki jih spodbuja OCCI), boste naredili veliko za zagotovitev, da lahko svoje delovne obremenitve enostavno premikate iz enega oblaka v drugega. Medtem ko načrtujete, katere storitve v oblaku boste uporabljali za izvorne oblake, razmislite, ali ima katera od storitev, ki jih razmišljate, značilnosti, ki so resnično edinstvene in niso na voljo v drugih oblakih. V nasprotnem primeru se izogibajte tem funkcijam, ker vas lahko zaklenejo.

Na primer, določeni jeziki in okviri, ki jih podpirajo brez strežniške računalniške platforme različnih javnih oblakov, se nekoliko razlikujejo. AWS Lambda podpira na primer Go, Azure pa ne. Zaradi tega bi se bilo pametno izogniti pisanju svojih brez strežniških funkcij v Go. Tudi če nameravate najprej uporabljati AWS za njihovo gostovanje, bi ta odvisnost v prihodnosti otežila prehod v drug oblak. Držite se jezika, kot je Java, za katerega lahko varno stavite, da bo povsod podprta.

5) Izdelava aplikacij za dovodne kanale v oblaku

Po definiciji aplikacije, ki delujejo v oblaku, delujejo v oblaku. Medtem ko je oblak lahko javni ali zasebni, on-prem ali hibridni oblak v okolju organizacije - to pomeni nespremenljivo infrastrukturo in procese upravljanja oblaka. Toda številni cevovodi za dostavo aplikacij še vedno delujejo večinoma v tradicionalnih lokalnih okoljih, ki morda niso bila motna ali nejasna, če so integrirana z aplikacijami in storitvami, ki delujejo na javnih oblakih ali na zabojnikih.

To ustvarja izziv v več pogledih. Eno je, da uvajanje kode iz lokalnega okolja v lokalno okolje lahko povzroči zamude. Drugo je, da razvoj in preizkušanje lokalno otežuje posnemanje proizvodnih pogojev, kar lahko privede do nepričakovanega vedenja aplikacij, po namestitvi.

Najučinkovitejši način za premagovanje teh ovir je, da plinovod CI / CD premaknete v oblačno okolje - ne le, da izkoristite nespremenljivo infrastrukturo in razširljivost v oblaku ter druge koristi, temveč tudi, da posnemate proizvodne pogoje in približate svoj cevovod - čim več kar je mogoče - v vaše aplikacije. Tako se koda zapiše bližje mestu, kjer je nameščena, s čimer se uvajanje hitreje izvede. Prav tako postane lažje vrteti testna okolja, ki so enaka proizvodnim.

Medtem ko razvoj, ki je popolnoma zasnovan v oblaku, ni za vsakogar in nekateri razvijalci raje poznajo in odzivajo lokalne IDE nad oblaki, poskusite zagotoviti, da se vaši plinovodi CI / CD izvajajo v oblačnem okolju, kolikor je to mogoče.

Zaključek

Ne glede na to, kako ga zavrtete, je težko ustvarjanje oblakov težko. V primerjavi s starejšimi aplikacijami so aplikacije, ki delujejo v oblaku, bolj zapletene in imajo veliko več krajev, kjer lahko gredo stvari narobe. Kljub temu je mogoče premagati izzive v računalništvu, ki so izvorni v oblaku - in izvajanje strategij, ki lahko rešijo izzive, je ključnega pomena za odklepanje okretnosti, zanesljivosti in razširljivosti, ki jo lahko prinesejo samo arhitekture v oblaku.