5 izazova da postanete izvorni oblak - i kako ih riješiti

Živimo u oblaku izvornom svijetu. Jedva čitate tehnološki blog ili odlazite na konferenciju, a da niste čuli za sve prednosti tehnologija koje su izvorne u oblaku ili arhitekture, kao što su spremnici, mikroservisi i funkcije bez poslužitelja.

No, usred svih uzbuđenja zbog prelaska na oblak, može biti lako zanemariti izazove koji nastaju prilikom prelaska s naslijeđenih, monolitnih aplikacija na strategiju koja se nalazi u oblaku. Ovi izazovi mogu se prevladati, ali samo ako ih se riješite kao dio svoje migracijske strategije u oblaku.

U tom cilju, pogledajmo pet najčešćih izazova u oblaku, zajedno s strategijama njihova prevladavanja.

Što je izvorni oblak?

Prvo, ipak, riječ o tome što zapravo znači oblak.

Uz hipe oko 'oblaka', oblak 'oblak' ljudi ponekad koriste kako bi značili bilo koju vrstu tehnologije ili strategiju koju smatraju modernom. Iz te perspektive, izvorni oblaci završavaju samo još jedna relativno besmislena buzzword.

S druge strane, kada se ulaže s određenim i ograničenim značenjem, izvorni oblaci su koristan pojam i koncept. Sviđa nam se definicija CNCF-a koja naglašava "labavo povezane sustave" i otpornost kao karakteristike računalnog izvornog oblaka. Definicija CNCF-a također ukazuje na specifičan i ograničen popis tehnologija i arhitektura - "spremnici, servisne mreže, mikroservisi, nepromjenjiva infrastruktura i deklarativni API-ji" - kao primjeri izvornih tehnologija u oblaku.

Za potrebe ovog članka držat ćemo se definicije CNCF izvornog oblaka. Sada, razmotrimo specifične izazove koji nastaju kada upotrebljavate tehnologije i strategije poput gore opisanih.

Izazovi usvajanja native Cloud

1) Trajno čuvanje podataka

Jedan čest izazov mnogih tehnologija izvornih oblaka je trajno pohranjivanje podataka. Spremnici, funkcije bez poslužitelja i aplikacije raspoređeni pomoću nepromjenjivog infrastrukturnog modela obično nemaju način trajnog pohranjivanja podataka u sebe jer se svi unutarnji podaci uništavaju kada se aplikacija isključi.

Rješavanje ovog izazova zahtijeva preispitivanje pristupa pohrani podataka odvajanjem od aplikacija i okruženja domaćina. Umjesto pohranjivanja podataka u aplikativnom okruženju, radni tijekovi koji se nalaze u oblaku pohranjuju ih izvana i izlažu podatke kao uslugu. Zatim se radna opterećenja koja trebaju pristupiti podacima povezuju s njom kao što bi se povezala s bilo kojom drugom uslugom.

Ovaj pristup - koji je omogućen pomoću različitih alata, poput volumena u Kubernetesu - ima dvije prednosti. Osim što omogućuje trajno pohranjivanje podataka za aplikacije koje same za sebe nisu dizajnirane da budu trajne, olakšava dijeljenje jedinstvenog spremišta podataka među više aplikacija ili usluga.

2) Integracija usluga

Aplikacije na izvornom oblaku obično se sastoje od skupa različitih usluga. Ova raspodijeljena priroda je ono što im pomaže da budu skalabilni i fleksibilni u usporedbi s monolitima.

Ali to također znači da opterećenja koja stvaraju oblak imaju mnogo više pokretnih komada koje je potrebno neprimjetno povezati da bi se postigao uspjeh.

Djelomično, integracija usluga problem je kojim se programeri trebaju obratiti dok izrađuju aplikacije izvorne u oblaku. Moraju osigurati da svaka usluga bude odgovarajuće veličine; najbolja praksa je stvoriti zasebnu uslugu za svaku vrstu funkcionalnosti u okviru radnog opterećenja, a ne pokušati natjerati jednu uslugu da radi više stvari. Također je važno izbjegavati dodavanje usluga samo zato što možete. Prije nego što uvedete više složenosti u svoju aplikaciju u obliku druge usluge, provjerite napreduje li određeni cilj.

Osim arhitekture same aplikacije, učinkovita integracija usluge ovisi i o odabiru pravih tehnika implementacije. Kontejneri su vjerojatno najočitiji način razmještanja više usluga i objedinjavanja u jedno radno opterećenje, ali u nekim slučajevima funkcije bez poslužitelja ili nekontejnerizirane aplikacije povezane API-jem mogu biti bolje metode implementacije usluge.

3) Upravljanje i nadzor

Što više usluga imate u sklopu aplikacije, to je teže nadzirati ih i upravljati njima. To je istina, ne samo zbog velikog broja usluga koje morate pratiti, već i zbog toga što zajamčeno zdravlje aplikacija zahtijeva nadzor odnosa između usluga, a ne samo samih usluga.

Tada je za uspješno nadgledanje i upravljanje uslugama u izvornom okruženju potrebno pristup koji može predvidjeti kako će neuspjeh u jednoj usluzi utjecati na druge, kao i razumjeti koji su kvarovi najvažniji. Kritična je i dinamička osnovna podjela, koja znači zamjenu statičkih pragova s ​​onima koja kontinuirano preispituju aplikacijsko okruženje kako bi se utvrdilo što je normalno, a što anomalija.

4) Izbjegavanje blokiranja u oblaku

Rizici zaključavanja nisu jedinstveni za oblak; mogu proizaći iz gotovo bilo koje vrste tehnologije, a već desetljećima prijete agilnosti. Međutim, u slučaju aplikacija ili arhitektura utemeljenih na oblaku, prijetnja postajati previše ovisna o određenom pružatelju usluga ili oblaku može biti osobito velika, zbog lakoće kojom se radno opterećenje može rasporediti na takav način da zahtijevaju određeni usluga iz određenog oblaka.

Srećom, ublažavanje rizika blokiranja oblaka dovoljno je jednostavno ako planirate unaprijed. Pridržavanje standarda utemeljenih u zajednici (poput onih koje promovira OCCI) učinit će mnogo za to da jednostavno premjestite svoje radno opterećenje iz jednog oblaka u drugi. Isto tako, dok planirate koje oblačne usluge koristiti ćete za stvaranje oblaka, uzmite u obzir da li neka od usluga koje razmatrate ima značajke koje su uistinu jedinstvene i nisu dostupne od drugih oblaka. Ako to učine, izbjegavajte te značajke, jer mogu zaključati vas.

Na primjer, specifični jezici i okviri koje podržavaju računalne platforme bez poslužitelja različitih javnih oblaka ponešto variraju. Na primjer, AWS Lambda podržava Go, ali Azure to ne čini. Iz tog razloga, pametno bi bilo izbjeći pisanje funkcija bez poslužitelja u programu Go. Čak i ako planirate koristiti AWS da ih ugostite u početku, ta bi ovisnost u budućnosti otežala migraciju na neki drugi oblak. Držite se jezika poput Jave na koji se sigurno možete kladiti da će biti podržani svugdje.

5) Izrada aplikacija za cjevovodne isporuke u oblaku

Po definiciji aplikacije u izvornom oblaku pokreću se u oblaku. Iako oblak može biti ili javni oblak, ili privatni, prekid ili hibridni oblak u okruženjima vaše organizacije - to znači nepromjenjivu infrastrukturu i procese upravljanja oblakom. No, mnogi cjevovodi za dostavu aplikacija i dalje se u velikoj mjeri koriste u tradicionalnim lokalnim okruženjima koja možda nisu oblačna ili nejasna kada su integrirani s aplikacijama i uslugama koje se pokreću na javnim oblacima ili na kontejnerima.

To stvara izazov u nekoliko aspekata. Jedan je da implementacija koda iz lokalnog okoliša u lokalno okruženje može dovesti do kašnjenja. Drugi je način da razvoj i testiranje lokalno otežava oponašanje uvjeta proizvodnje, što može dovesti do neočekivanog ponašanja aplikacije, nakon implementacije.

Najefikasniji način da se ove prepreke prevladaju je premještanje CI / CD cjevovoda u okruženje oblaka - ne samo da biste iskoristili nepromjenjivu infrastrukturu i skalabilnost oblaka i druge pogodnosti, već i oponašali proizvodne uvjete i približili svoj cjevovod - što više što je više moguće - vašim aplikacijama. Na taj se način šifra piše bliže mjestu na kojem je implementiran, što ubrzava implementaciju. Također postaje lakše vrtjeti testna okruženja koja su identična onima u proizvodnji.

Iako razvoj koji je potpuno temeljen na oblaku nije za sve, a neki programeri više vole poznavanje i odzivnost lokalnih IDE-a nad oblacima temeljenim na oblaku, pokušajte osigurati da vaši CI / CD cjevovodi rade u oblačnom okruženju, u mjeri u kojoj je to moguće.

Zaključak

Bez obzira na to kako ga okrenete, teško je krenuti u oblak. U usporedbi sa naslijeđenim aplikacijama, izvorni programi u oblaku su složeniji i imaju mnogo više mjesta na kojima stvari mogu poći po zlu. U skladu s tim, izazovi u računanju izvornih oblaka mogu se prevladati - a provedba strategija koja mogu riješiti izazove ključna je za otključavanje okretnosti, pouzdanosti i skalabilnosti koju mogu ponuditi samo arhitekture u oblaku.