{"id":35006,"date":"2019-10-31T22:01:47","date_gmt":"2019-10-31T19:01:47","guid":{"rendered":"https:\/\/prohoster.info\/blog\/5-printsipov-zdravogo-smysla-dlya-sozdaniya-cloud-native-apps\/"},"modified":"2019-10-31T22:01:47","modified_gmt":"2019-10-31T19:01:47","slug":"5-printsipov-zdravogo-smysla-dlya-sozdaniya-cloud-native-apps","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/news\/5-printsipov-zdravogo-smysla-dlya-sozdaniya-cloud-native-apps","title":{"rendered":"5 princip\u016f zdrav\u00e9ho rozumu pro vytv\u00e1\u0159en\u00ed cloud-native aplikac\u00ed","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>\u201eCloud-native\u201c nebo jednodu\u0161e \u201ecloudov\u00e9\u201c aplikace jsou navrhov\u00e1ny speci\u00e1ln\u011b pro provoz v cloudov\u00fdch infrastruktur\u00e1ch. Obvykle jsou sestaveny jako soubor slab\u011b propojen\u00fdch mikroslu\u017eeb, zabalen\u00fdch do kontejner\u016f, kter\u00e9 jsou spravov\u00e1ny cloudovou platformou. Tyto aplikace jsou z v\u00fdchoz\u00edho nastaven\u00ed p\u0159ipraveny na selh\u00e1n\u00ed, co\u017e znamen\u00e1, \u017ee spolehliv\u011b funguj\u00ed a \u0161k\u00e1luj\u00ed i p\u0159i v\u00e1\u017en\u00fdch selh\u00e1n\u00edch na \u00farovni infrastruktury. Na druh\u00e9 stran\u011b se s t\u00edm poj\u00ed soubor omezen\u00ed (kontrakty), kter\u00e9 cloudov\u00e1 platforma ukl\u00e1d\u00e1 na kontejnerov\u00e9 aplikace, aby je mohla automaticky spravovat.<\/p>\n<p><img decoding=\"async\" alt=\"5 princip\u016f zdrav\u00e9ho rozumu pro vytv\u00e1\u0159en\u00ed cloud-native aplikac\u00ed\" src=\"\/wp-content\/uploads\/2019\/06\/1f4af6f356ed36d3fbd8adef333501fa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI p\u0159esto, \u017ee si mnoho organizac\u00ed pln\u011b uv\u011bdomuje nezbytnost a d\u016fle\u017eitost p\u0159echodu na cloudov\u00e9 aplikace, st\u00e1le nev\u00ed, kde za\u010d\u00edt. V tomto p\u0159\u00edsp\u011bvku se zam\u011b\u0159\u00edme na \u0159adu princip\u016f, jejich\u017e dodr\u017eov\u00e1n\u00ed p\u0159i v\u00fdvoji kontejnerov\u00fdch aplikac\u00ed umo\u017en\u00ed vyu\u017e\u00edt potenci\u00e1l cloudov\u00fdch platforem a zajistit spolehliv\u00fd chod a \u0161k\u00e1lovatelnost aplikac\u00ed i p\u0159i v\u00e1\u017en\u00fdch selh\u00e1n\u00edch na \u00farovni IT infrastruktury. Kone\u010dn\u00fdm c\u00edlem zde uveden\u00fdch princip\u016f je nau\u010dit se vytv\u00e1\u0159et aplikace, kter\u00e9 mohou b\u00fdt automaticky spravov\u00e1ny cloudov\u00fdmi platformami, jako je Kubernetes.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Principy n\u00e1vrhu softwaru<\/h3>\n<p>\nVe sv\u011bt\u011b programov\u00e1n\u00ed se principy ch\u00e1pou jako celkem obecn\u00e1 pravidla, kter\u00e1 je t\u0159eba dodr\u017eovat p\u0159i v\u00fdvoji softwaru. Jejich pou\u017eit\u00ed je mo\u017en\u00e9 s jak\u00fdmkoliv programovac\u00edm jazykem. Ka\u017ed\u00fd princip m\u00e1 sv\u00e9 c\u00edle, jejich\u017e dosa\u017een\u00ed obvykle slou\u017e\u00ed \u0161ablony a praktiky. Existuje tak\u00e9 \u0159ada z\u00e1kladn\u00edch princip\u016f vytv\u00e1\u0159en\u00ed kvalitn\u00edho softwaru, z nich\u017e vych\u00e1zej\u00ed v\u0161echny ostatn\u00ed. Uvedeme p\u0159\u00edklady z\u00e1kladn\u00edch princip\u016f:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/KISS_(%D0%BF%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF)\">KISS<\/a><\/noindex> (Keep it simple, stupid) \u2013 nezjednodu\u0161ovat;<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Don%E2%80%99t_repeat_yourself\">DRY<\/a><\/noindex> (Don\u2019t repeat yourself) \u2013 neopakovat se;<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/YAGNI\">YAGNI<\/a><\/noindex> (You aren\u2019t gonna need it) \u2013 nevytv\u00e1\u0159et, co nen\u00ed bezprost\u0159edn\u011b pot\u0159eba;<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A0%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8\">SoC<\/a><\/noindex> (Separation of concerns) \u2013 odd\u011blovat odpov\u011bdnosti.<\/li>\n<\/ul>\n<p>\nJak je vid\u011bt, tyto principy nestanovuj\u00ed \u017e\u00e1dn\u00e1 konkr\u00e9tn\u00ed pravidla, ale pat\u0159\u00ed mezi takzvan\u00e1 zdrav\u00e1 rozumov\u00e1 hlediska vych\u00e1zej\u00edc\u00ed z praktick\u00fdch zku\u0161enost\u00ed, s nimi\u017e se ztoto\u017e\u0148uje mnoho v\u00fdvoj\u00e1\u0159\u016f a na kter\u00e9 se pravideln\u011b odvol\u00e1vaj\u00ed.<br \/>\nKrom\u011b toho existuje <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/SOLID_(%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)\">SOLID<\/a><\/noindex> \u2013 soubor prvn\u00edch p\u011bti princip\u016f objektov\u011b orientovan\u00e9ho programov\u00e1n\u00ed a n\u00e1vrhu, kter\u00e9 formuloval Robert Martin. SOLID zahrnuje zjednodu\u0161en\u00e9 a otev\u0159en\u00e9 k interpretaci vz\u00e1jemn\u011b se dopl\u0148uj\u00edc\u00ed principy, kter\u00e9 \u2013 pokud se aplikuj\u00ed v celku \u2013 pom\u00e1haj\u00ed vytv\u00e1\u0159et kvalitn\u011bj\u0161\u00ed softwarov\u00e9 syst\u00e9my a l\u00e9pe je podporovat v dlouhodob\u00e9m horizontu.<\/p>\n<p>Principy SOLID se vztahuj\u00ed na oblast OOP a jsou formulov\u00e1ny v jazyce takov\u00fdch pojm\u016f a koncept\u016f, jako jsou t\u0159\u00eddy, rozhran\u00ed a d\u011bdi\u010dnost. Analogicky lze pro cloudov\u00e9 aplikace formulovat tak\u00e9 principy v\u00fdvoje, kde z\u00e1kladn\u00edm prvkem nebude t\u0159\u00edda, ale kontejner. Dodr\u017eov\u00e1n\u00edm t\u011bchto princip\u016f lze vytv\u00e1\u0159et kontejnerov\u00e9 aplikace, kter\u00e9 l\u00e9pe odpov\u00eddaj\u00ed c\u00edl\u016fm a \u00fakol\u016fm cloudov\u00fdch platforem, jako je Kubernetes.<\/p>\n<h3>Cloudov\u011b orientovan\u00e9 kontejnery: p\u0159\u00edstup Red Hat<\/h3>\n<p>\nDnes lze do kontejner\u016f relativn\u011b snadno zabalit t\u00e9m\u011b\u0159 jakoukoli aplikaci. Aby v\u0161ak byly aplikace efektivn\u011b automatizov\u00e1ny a orchestracov\u00e1ny v r\u00e1mci cloudov\u00e9 platformy jako Kubernetes, je t\u0159eba vyvinout dodate\u010dn\u00e9 \u00fasil\u00ed.<br \/>\nZ\u00e1kladem pro n\u00ed\u017ee uveden\u00e9 my\u0161lenky byla metodologie <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/SOLID_(%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)\">The Twelve-Factor App<\/a><\/noindex> a \u0159ada dal\u0161\u00edch prac\u00ed zam\u011b\u0159en\u00fdch na r\u016fzn\u00e9 aspekty v\u00fdvoje webov\u00fdch aplikac\u00ed, od spr\u00e1vy zdrojov\u00e9ho k\u00f3du a\u017e po modely \u0161k\u00e1lov\u00e1n\u00ed. Popisovan\u00e9 principy se vztahuj\u00ed pouze na v\u00fdvoj kontejnerov\u00fdch aplikac\u00ed, kter\u00e9 jsou postaveny na mikroservis\u00e1ch a jsou ur\u010deny pro cloudov\u00e9 platformy, jako je Kubernetes. Z\u00e1kladn\u00edm prvkem v na\u0161ich \u00favah\u00e1ch je obraz kontejneru a pod c\u00edlovou prost\u0159ed\u00ed pro spu\u0161t\u011bn\u00ed kontejner\u016f rozum\u00edme platformu orchestrace kontejner\u016f. C\u00edlem navrhovan\u00fdch princip\u016f je vytv\u00e1\u0159et kontejnery, pro kter\u00e9 lze na v\u011bt\u0161in\u011b platforem orchestrace automatizovat \u00fakoly pl\u00e1nov\u00e1n\u00ed (scheduling \u2013 v\u00fdb\u011br hostitele pro spu\u0161t\u011bn\u00ed instance kontejneru), \u0161k\u00e1lov\u00e1n\u00ed a monitorov\u00e1n\u00ed. Principy jsou p\u0159edkl\u00e1d\u00e1ny v libovoln\u00e9m po\u0159ad\u00ed.<\/p>\n<h3>Princip jedn\u00e9 odpov\u011bdnosti (Single Concern Principle, SCP)<\/h3>\n<p>\nTento princip je do zna\u010dn\u00e9 m\u00edry podobn\u00fd principu jedin\u00e9 odpov\u011bdnosti (Single Responsibility Principle, <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9F%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF_%D0%B5%D0%B4%D0%B8%D0%BD%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9_%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8\">SRP<\/a><\/noindex>), kter\u00fd je sou\u010d\u00e1st\u00ed sady SOLID a \u0159\u00edk\u00e1, \u017ee ka\u017ed\u00fd objekt by m\u011bl m\u00edt jednu odpov\u011bdnost, a tato odpov\u011bdnost by m\u011bla b\u00fdt pln\u011b inkapsulov\u00e1na v t\u0159\u00edd\u011b. Podstatou SRP je, \u017ee ka\u017ed\u00e1 odpov\u011bdnost je d\u016fvodem pro zm\u011bny a t\u0159\u00edda by m\u011bla m\u00edt pouze jeden a jen jeden d\u016fvod pro zm\u011bnu.<\/p>\n<p>Ve SCP m\u00edsto slova \u201eodpov\u011bdnost\u201c (responsibility) pou\u017e\u00edv\u00e1me slovo \u201e\u00fakol\u201c (concern), abychom nazna\u010dili vy\u0161\u0161\u00ed \u00farove\u0148 abstrakce a \u0161ir\u0161\u00ed \u00fa\u010del kontejneru ve srovn\u00e1n\u00ed s OOP t\u0159\u00eddou. A pokud je c\u00edlem SRP m\u00edt pouze jeden d\u016fvod pro zm\u011bny, pak SCP p\u0159edstavuje snahu roz\u0161\u00ed\u0159it mo\u017enosti znovupou\u017eit\u00ed a v\u00fdm\u011bny kontejner\u016f. Dodr\u017eov\u00e1n\u00edm SRP a vytv\u00e1\u0159en\u00edm kontejneru, kter\u00fd \u0159e\u0161\u00ed pouze jeden \u00fakol a d\u011bl\u00e1 to funk\u010dn\u011b \u00fapln\u00fdm zp\u016fsobem, zvy\u0161ujete \u0161ance na znovupou\u017eit\u00ed tohoto kontejneru v r\u016fzn\u00fdch kontextech aplikace.<\/p>\n<p>Princip SCP \u0159\u00edk\u00e1, \u017ee ka\u017ed\u00fd kontejner by m\u011bl \u0159e\u0161it pouze jeden \u00fakol a d\u011blat to dob\u0159e. Nav\u00edc, SCP ve sv\u011bt\u011b kontejner\u016f je sn\u00e1ze dosa\u017eiteln\u00e9 ne\u017e SRP ve sv\u011bt\u011b OOP, proto\u017ee kontejnery obvykle vykon\u00e1vaj\u00ed pouze jeden proces, a v\u011bt\u0161inu \u010dasu tento proces \u0159e\u0161\u00ed pouze jeden \u00fakol.<\/p>\n<p>Pokud n\u011bjak\u00fd kontejnerov\u00fd mikroslu\u017eba mus\u00ed \u0159e\u0161it v\u00edce \u00fakol\u016f najednou, m\u016f\u017ee b\u00fdt rozd\u011blena na jednodeskov\u00e9 kontejnery a slou\u010dena v r\u00e1mci jednoho podu (jednotky nasazen\u00ed kontejnerov\u00e9 platformy) pomoc\u00ed \u0161ablon sidecar a init-kontejner\u016f. Krom\u011b toho SCP usnad\u0148uje v\u00fdm\u011bnu star\u00e9ho kontejneru (nap\u0159\u00edklad webov\u00e9ho serveru nebo zpravodajsk\u00e9ho brokera) za nov\u00fd, kter\u00fd \u0159e\u0161\u00ed stejn\u00fd \u00fakol, ale m\u00e1 roz\u0161\u00ed\u0159enou funk\u010dnost nebo se l\u00e9pe \u0161k\u00e1luje.<\/p>\n<p><img decoding=\"async\" alt=\"5 princip\u016f zdrav\u00e9ho rozumu pro vytv\u00e1\u0159en\u00ed cloud-native aplikac\u00ed\" src=\"\/wp-content\/uploads\/2019\/06\/a029e1ca36ace66550c94087e4aecc8e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Princip vysok\u00e9 pozorovatelnosti (High Observability Principle, HOP)<\/h3>\n<p>\nP\u0159i pou\u017e\u00edv\u00e1n\u00ed kontejner\u016f jako jednotn\u00e9ho zp\u016fsobu balen\u00ed a spou\u0161t\u011bn\u00ed aplikac\u00ed jsou samotn\u00e9 aplikace pova\u017eov\u00e1ny za \u201e\u010dernou sk\u0159\u00ed\u0148ku\u201c. Pokud se jedn\u00e1 o cloudov\u00e9 kontejnery, mus\u00ed poskytovat prost\u0159ed\u00ed pro b\u011bh speci\u00e1ln\u00ed API rozhran\u00ed, aby kontrolovala zdravotn\u00ed stav kontejner\u016f a v p\u0159\u00edpad\u011b pot\u0159eby p\u0159ij\u00edmala odpov\u00eddaj\u00edc\u00ed opat\u0159en\u00ed. Bez toho nebude mo\u017en\u00e9 standardizovat automatizaci aktualizace kontejner\u016f a \u0159\u00edzen\u00ed jejich \u017eivotn\u00edho cyklu, co\u017e na druhou stranu sn\u00ed\u017e\u00ed odolnost a pou\u017eitelnost softwarov\u00e9ho syst\u00e9mu.<\/p>\n<p><img decoding=\"async\" alt=\"5 princip\u016f zdrav\u00e9ho rozumu pro vytv\u00e1\u0159en\u00ed cloud-native aplikac\u00ed\" src=\"\/wp-content\/uploads\/2019\/06\/7df1320108d9b635c10c6cf41d5dfef6.jpg\" style=\"display:block;margin: 0 auto;\" \/> <br \/>\nV praxi by kontejnerov\u00e1 aplikace m\u011bla m\u00edt minim\u00e1ln\u011b API pro r\u016fzn\u00e9 typy kontrol zdrav\u00ed: testy aktivity (liveness) a testy p\u0159ipravenosti (readiness). Pokud aplikace \u017e\u00e1d\u00e1 o v\u00edce, m\u011bla by poskytovat i dal\u0161\u00ed prost\u0159edky ke kontrole sv\u00e9ho stavu. Nap\u0159\u00edklad registraci d\u016fle\u017eit\u00fdch ud\u00e1lost\u00ed prost\u0159ednictv\u00edm STDERR a STDOUT pro agregaci protokol\u016f pomoc\u00ed Fluentd, Logstash a dal\u0161\u00edch podobn\u00fdch n\u00e1stroj\u016f. A tak\u00e9 integraci s knihovnami pro sledov\u00e1n\u00ed a sb\u011br metrik, jako jsou OpenTracing, Prometheus a podobn\u011b.<\/p>\n<p>Obecn\u011b lze aplikaci st\u00e1le pova\u017eovat za \u201e\u010dernou sk\u0159\u00ed\u0148ku\u201c, ale mus\u00ed b\u00fdt vybavena v\u0161emi API, kter\u00e9 platforma pot\u0159ebuje k tomu, aby ji co nejl\u00e9pe monitorovala a spravovala.<\/p>\n<h3>Princip p\u0159izp\u016fsoben\u00ed \u017eivotn\u00edmu cyklu (Life-cycle Conformance Principle, LCP)<\/h3>\n<p>\nLCP je opak HOP. Pokud HOP prohla\u0161uje, \u017ee kontejner by m\u011bl poskytovat platform\u011b API rozhran\u00ed ke \u010dten\u00ed, LCP vy\u017eaduje, aby aplikace byla schopna p\u0159ij\u00edmat informace od platformy. Krom\u011b toho mus\u00ed kontejner nejen p\u0159ij\u00edmat ud\u00e1losti, ale tak\u00e9 se p\u0159izp\u016fsobit, jin\u00fdmi slovy reagovat na n\u011b. Odtud n\u00e1zev principu, kter\u00fd lze ch\u00e1pat jako po\u017eadavek na poskytov\u00e1n\u00ed API rozhran\u00ed pro z\u00e1pis platform\u011b.<\/p>\n<p><img decoding=\"async\" alt=\"5 princip\u016f zdrav\u00e9ho rozumu pro vytv\u00e1\u0159en\u00ed cloud-native aplikac\u00ed\" src=\"\/wp-content\/uploads\/2019\/06\/f32f5d133597ae3905206badc6677f92.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nPlatformy maj\u00ed r\u016fzn\u00e9 typy ud\u00e1lost\u00ed, kter\u00e9 pom\u00e1haj\u00ed \u0159\u00eddit \u017eivotn\u00ed cyklus kontejneru. Ale rozhodnout, kter\u00e9 z nich p\u0159ij\u00edmat a jak reagovat, by m\u011bla sama aplikace.<\/p>\n<p>Je jasn\u00e9, \u017ee n\u011bkter\u00e9 ud\u00e1losti jsou d\u016fle\u017eit\u011bj\u0161\u00ed ne\u017e jin\u00e9. Nap\u0159\u00edklad, pokud aplikace \u0161patn\u011b reaguje na neo\u010dek\u00e1van\u00e9 ukon\u010den\u00ed, mus\u00ed b\u00fdt schopna p\u0159ij\u00edmat zpr\u00e1vy signal: terminate (SIGTERM) a co nejrychleji iniciovat sv\u016fj proces ukon\u010den\u00ed, aby stihla p\u0159ed p\u0159\u00edchodem sign\u00e1lu: kill (SIGKILL), kter\u00fd n\u00e1sleduje po SIGTERM.<\/p>\n<p>Krom\u011b toho mohou b\u00fdt pro \u017eivotn\u00ed cyklus aplikace d\u016fle\u017eit\u00e9 takov\u00e9 ud\u00e1losti, jako jsou PostStart a PreStop. Nap\u0159\u00edklad po spu\u0161t\u011bn\u00ed m\u016f\u017ee aplikace pot\u0159ebovat ur\u010dit\u00fd \u010das na \u201eoh\u0159ev\u201c, ne\u017e za\u010dne reagovat na po\u017eadavky. Nebo aplikace mus\u00ed n\u011bjak\u00fdm zvl\u00e1\u0161tn\u00edm zp\u016fsobem uvolnit zdroje p\u0159i ukon\u010den\u00ed.<\/p>\n<h3>Princip nem\u011bnnosti kontejnerov\u00e9ho obrazu (Image Immutability Principle, IIP)<\/h3>\n<p>\nObecn\u011b se m\u00e1 za to, \u017ee kontejnerov\u00e9 aplikace by m\u011bly z\u016fstat nem\u011bnn\u00e9 po sestaven\u00ed, i kdy\u017e jsou spu\u0161t\u011bny v r\u016fzn\u00fdch prost\u0159ed\u00edch. Odtud vypl\u00fdv\u00e1 pot\u0159eba externalizovat \u00falo\u017ei\u0161t\u011b dat b\u011bhem provozu (jin\u00fdmi slovy, pou\u017e\u00edt k tomu extern\u00ed prost\u0159edky), a tak\u00e9 spol\u00e9hat na extern\u00ed, specificky nastaven\u00e9 konfigurace pro dan\u00e9 provozn\u00ed prost\u0159ed\u00ed, m\u00edsto aby se modifikovaly nebo vytv\u00e1\u0159ely unik\u00e1tn\u00ed kontejnery pro ka\u017ed\u00e9 prost\u0159ed\u00ed. Po jak\u00fdchkoli zm\u011bn\u00e1ch v aplikaci by m\u011bl b\u00fdt kontejnerov\u00fd obraz znovu sestaven a nasazen ve v\u0161ech pou\u017e\u00edvan\u00fdch prost\u0159ed\u00edch. Mimochodem, p\u0159i spr\u00e1v\u011b IT syst\u00e9m\u016f se pou\u017e\u00edv\u00e1 podobn\u00fd princip, zn\u00e1m\u00fd jako princip nem\u011bnnosti server\u016f a infrastruktury. <\/p>\n<p>C\u00edlem IIP je zabr\u00e1nit vytv\u00e1\u0159en\u00ed samostatn\u00fdch kontejnerov\u00fdch obraz\u016f pro r\u016fzn\u00e1 provozn\u00ed prost\u0159ed\u00ed a pou\u017e\u00edvat v\u0161ude stejn\u00fd obraz spolu s odpov\u00eddaj\u00edc\u00ed konfigurac\u00ed pro konkr\u00e9tn\u00ed prost\u0159ed\u00ed. Dodr\u017eov\u00e1n\u00ed tohoto principu umo\u017e\u0148uje realizovat takov\u00e9 d\u016fle\u017eit\u00e9 praktiky z hlediska automatizace cloudov\u00fdch syst\u00e9m\u016f, jako je rollback (vr\u00e1tit zp\u011bt) a rollout (p\u0159en\u00e9st vp\u0159ed) aktualizac\u00ed aplikace.<\/p>\n<p><img decoding=\"async\" alt=\"5 princip\u016f zdrav\u00e9ho rozumu pro vytv\u00e1\u0159en\u00ed cloud-native aplikac\u00ed\" src=\"\/wp-content\/uploads\/2019\/06\/86b93724830b37f82bf289b797407480.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Princip jednor\u00e1zovosti proces\u016f (Process Disposability Principle, PDP)<\/h3>\n<p>\nJednou z nejd\u016fle\u017eit\u011bj\u0161\u00edch charakteristik kontejneru je jeho efem\u00e9rnost: instanci kontejneru lze snadno vytvo\u0159it a snadno zni\u010dit, tak\u017ee ji lze kdykoli snadno nahradit jinou instanc\u00ed. D\u016fvod\u016f pro takovou v\u00fdm\u011bnu m\u016f\u017ee b\u00fdt cel\u00e1 \u0159ada: selh\u00e1n\u00ed testu na vhodnost, \u0161k\u00e1lov\u00e1n\u00ed aplikace, p\u0159esun na jin\u00fd hostitel, vy\u010derp\u00e1n\u00ed zdroj\u016f platformy nebo jin\u00e9 situace. <\/p>\n<p><img decoding=\"async\" alt=\"5 princip\u016f zdrav\u00e9ho rozumu pro vytv\u00e1\u0159en\u00ed cloud-native aplikac\u00ed\" src=\"\/wp-content\/uploads\/2019\/06\/858287b23c276363313e35cf18b81190.jpg\" style=\"display:block;margin: 0 auto;\" \/> <br \/>\nV d\u016fsledku toho by kontejnorov\u00e9 aplikace m\u011bly uchov\u00e1vat sv\u016fj stav pomoc\u00ed extern\u00edch prost\u0159edk\u016f, nebo pou\u017e\u00edvat vnit\u0159n\u00ed distribuovan\u00e9 sch\u00e9ma s redundanc\u00ed. Krom\u011b toho by m\u011blo b\u00fdt aplikaci umo\u017en\u011bno rychle se spou\u0161t\u011bt a rychle se zastavovat, a tak\u00e9 b\u00fdt p\u0159ipraveno na n\u00e1hl\u00e9 fat\u00e1ln\u00ed selh\u00e1n\u00ed hardwaru.<\/p>\n<p>Jednou z praktik, kter\u00e1 pom\u00e1h\u00e1 realizovat tento princip, je vytv\u00e1\u0159en\u00ed mal\u00fdch kontejner\u016f. Cloudov\u00e1 prost\u0159ed\u00ed mohou automaticky vyb\u00edrat hostitele pro spu\u0161t\u011bn\u00ed instance kontejneru, tak\u017ee \u010d\u00edm men\u0161\u00ed je velikost kontejneru, t\u00edm rychleji se spust\u00ed \u2013 jednodu\u0161e se rychleji zkop\u00edruje na c\u00edlov\u00fd hostitel p\u0159es s\u00ed\u0165.<\/p>\n<h3>Princip sob\u011bsta\u010dnosti (Self-containment Principle, S-CP)<\/h3>\n<p>\nPodle tohoto principu by m\u011bly b\u00fdt b\u011bhem sestaven\u00ed zahrnuty v\u0161echny pot\u0159ebn\u00e9 komponenty do kontejneru. Kontejner by m\u011bl b\u00fdt navr\u017een s ohledem na to, \u017ee v syst\u00e9mu existuje pouze \u010dist\u00e9 j\u00e1dro Linuxu, tak\u017ee v\u0161echny pot\u0159ebn\u00e9 knihovny mus\u00ed b\u00fdt um\u00edst\u011bny p\u0159\u00edmo v kontejneru. Tak\u00e9 by tam m\u011bly b\u00fdt um\u00edst\u011bny v\u011bci jako runtime pro odpov\u00eddaj\u00edc\u00ed programovac\u00ed jazyk, aplika\u010dn\u00ed platforma (pokud je to nutn\u00e9) a dal\u0161\u00ed z\u00e1vislosti, kter\u00e9 budou pot\u0159ebn\u00e9 b\u011bhem provozu kontejnerov\u00e9 aplikace. <\/p>\n<p><img decoding=\"async\" alt=\"5 princip\u016f zdrav\u00e9ho rozumu pro vytv\u00e1\u0159en\u00ed cloud-native aplikac\u00ed\" src=\"\/wp-content\/uploads\/2019\/06\/ecc7425510d63e4914c0c9a7e90b02a6.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>V\u00fdjimky se d\u011blaj\u00ed pouze pro konfigurace, kter\u00e9 se li\u0161\u00ed od prost\u0159ed\u00ed k prost\u0159ed\u00ed, a m\u011bly by b\u00fdt poskytov\u00e1ny v dob\u011b b\u011bhu, nap\u0159\u00edklad pomoc\u00ed Kubernetes ConfigMap.<\/p>\n<p>Aplikace m\u016f\u017ee zahrnovat n\u011bkolik kontejnerizovan\u00fdch komponent, nap\u0159\u00edklad samostatn\u00fd kontejner datab\u00e1zov\u00e9ho syst\u00e9mu jako sou\u010d\u00e1st kontejnerov\u00e9 webov\u00e9 aplikace. Podle principu S-CP by tyto kontejnery nem\u011bly b\u00fdt slou\u010deny do jednoho, ale m\u011bly by b\u00fdt navr\u017eeny tak, aby kontejner datab\u00e1zov\u00e9ho syst\u00e9mu obsahoval v\u0161e pot\u0159ebn\u00e9 pro provoz datab\u00e1ze, a kontejner webov\u00e9 aplikace \u2013 v\u0161e pot\u0159ebn\u00e9 pro fungov\u00e1n\u00ed webov\u00e9 aplikace, v\u010detn\u011b webov\u00e9ho serveru. V\u00fdsledkem je, \u017ee b\u011bhem provozu kontejner webov\u00e9 aplikace bude z\u00e1visl\u00fd na kontejneru datab\u00e1zov\u00e9ho syst\u00e9mu a bude se na n\u011bj obracet podle pot\u0159eby.<\/p>\n<h3>Princip omezen\u00ed v dob\u011b b\u011bhu (Runtime Confinement Principle, RCP)<\/h3>\n<p>\nPrincip S-CP ur\u010duje, jak m\u00e1 b\u00fdt kontejner sestaven a co by m\u011bl obsahovat bin\u00e1rn\u00ed soubor obrazu. Ale kontejner nen\u00ed jen \"\u010dern\u00e1 sk\u0159\u00ed\u0148ka\", kter\u00e1 m\u00e1 pouze jednu charakteristiku \u2013 velikost souboru. B\u011bhem b\u011bhu kontejner z\u00edsk\u00e1v\u00e1 i dal\u0161\u00ed rozm\u011bry: objem pou\u017e\u00edvan\u00e9 pam\u011bti, procesorov\u00fd \u010das a dal\u0161\u00ed syst\u00e9mov\u00e9 prost\u0159edky.<\/p>\n<p><img decoding=\"async\" alt=\"5 princip\u016f zdrav\u00e9ho rozumu pro vytv\u00e1\u0159en\u00ed cloud-native aplikac\u00ed\" src=\"\/wp-content\/uploads\/2019\/06\/a52e6a656892e57479ac014a3e6f4316.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nA tady se uplatn\u00ed princip RCP, podle kter\u00e9ho by m\u011bl kontejner dekapsulovat sv\u00e9 po\u017eadavky na syst\u00e9mov\u00e9 prost\u0159edky a p\u0159ed\u00e1vat je platform\u011b. S profilov\u00e1n\u00edm prost\u0159edk\u016f ka\u017ed\u00e9ho kontejneru (kolik pot\u0159ebuje prost\u0159edk\u016f CPU, pam\u011bti, s\u00edt\u011b a diskov\u00e9ho syst\u00e9mu) m\u016f\u017ee platforma optim\u00e1ln\u011b prov\u00e1d\u011bt spr\u00e1vu a automatick\u00e9 \u0161k\u00e1lov\u00e1n\u00ed, \u0159\u00eddit IT kapacity a udr\u017eovat SLA \u00farovn\u011b pro kontejnery.<\/p>\n<p>Krom\u011b spln\u011bn\u00ed po\u017eadavk\u016f na prost\u0159edky kontejneru je pro aplikaci tak\u00e9 d\u016fle\u017eit\u00e9, aby nep\u0159ekro\u010dila stanoven\u00e9 limity. Jinak, v p\u0159\u00edpad\u011b nedostatku prost\u0159edk\u016f, platforma s v\u011bt\u0161\u00ed pravd\u011bpodobnost\u00ed za\u0159ad\u00ed aplikaci mezi ty, kter\u00e9 je t\u0159eba p\u0159eru\u0161it nebo migrovat.<\/p>\n<p>Kdy\u017e mluv\u00edme o orientaci na cloud, m\u00e1me na mysli p\u0159edev\u0161\u00edm zp\u016fsob pr\u00e1ce. <br \/>\nV\u00fd\u0161e jsme formulovali \u0159adu obecn\u00fdch princip\u016f, kter\u00e9 tvo\u0159\u00ed metodologick\u00fd z\u00e1klad pro vytv\u00e1\u0159en\u00ed kvalitn\u00edch kontejnerov\u00fdch aplikac\u00ed pro cloudov\u00e1 prost\u0159ed\u00ed.<\/p>\n<p>Poznamenejme, \u017ee krom\u011b t\u011bchto obecn\u00fdch princip\u016f budete pot\u0159ebovat tak\u00e9 dal\u0161\u00ed pokro\u010dil\u00e9 metody a techniky pr\u00e1ce s kontejnery. Krom\u011b toho m\u00e1me n\u011bkolik kr\u00e1tk\u00fdch doporu\u010den\u00ed, kter\u00e1 maj\u00ed konkr\u00e9tn\u011bj\u0161\u00ed charakter a m\u011bla by b\u00fdt aplikov\u00e1na (nebo neaplikov\u00e1na) v z\u00e1vislosti na situaci:<\/p>\n<ul>\n<li>Sna\u017ete se zmen\u0161it velikost obraz\u016f: odstra\u0148te do\u010dasn\u00e9 soubory a nenainstalujte nepot\u0159ebn\u00e9 bal\u00ed\u010dky \u2013 \u010d\u00edm men\u0161\u00ed je velikost kontejneru, t\u00edm rychleji se sestavuje a kop\u00edruje na c\u00edlov\u00fd host p\u0159es s\u00ed\u0165.<\/li>\n<li>Orientujte se na libovoln\u00e9 u\u017eivatelsk\u00e9 ID: nepou\u017e\u00edvejte p\u0159\u00edkaz sudo nebo n\u011bjak\u00e1 zvl\u00e1\u0161tn\u00ed userid pro spu\u0161t\u011bn\u00ed sv\u00fdch kontejner\u016f.<\/li>\n<li>Ozna\u010dte d\u016fle\u017eit\u00e9 porty: \u010d\u00edsla port\u016f lze nastavovat i b\u011bhem b\u011bhu, ale je lep\u0161\u00ed je uv\u00e9st pomoc\u00ed p\u0159\u00edkazu EXPOSE \u2013 ostatn\u00edm lidem a program\u016fm bude snaz\u0161\u00ed pou\u017e\u00edvat va\u0161e obrazy. <\/li>\n<li>Ukl\u00e1dejte trval\u00e1 data na objemy: data, kter\u00e1 mus\u00ed z\u016fstat po zni\u010den\u00ed kontejneru, by m\u011bla b\u00fdt zapisov\u00e1na na objemy.<\/li>\n<li>Zapisujte metadata obrazu: tagy, \u0161t\u00edtky a anotace usnad\u0148uj\u00ed pou\u017e\u00edv\u00e1n\u00ed obraz\u016f \u2013 jin\u00ed v\u00fdvoj\u00e1\u0159i v\u00e1m budou vd\u011b\u010dn\u00ed.<\/li>\n<li>Synchronizujte hostitele a obrazy: n\u011bkter\u00e9 kontejnerov\u00e9 aplikace vy\u017eaduj\u00ed synchronizaci kontejneru s hostitelem na z\u00e1klad\u011b ur\u010dit\u00fdch atribut\u016f, jako je \u010das nebo identifik\u00e1tor stroje.<\/li>\n<li>Na z\u00e1v\u011br se pod\u011bl\u00edme o \u0161ablony a osv\u011bd\u010den\u00e9 postupy, kter\u00e9 pomohou efektivn\u011bji implementovat v\u00fd\u0161e zm\u00edn\u011bn\u00e9 principy:<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/www.slideshare.net\/luebken\/container-patterns\">www.slideshare.net\/luebken\/container-patterns<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/docs.docker.com\/engine\/userguide\/eng-image\/dockerfile_best-practices\">docs.docker.com\/engine\/userguide\/eng-image\/dockerfile_best-practices<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/docs.projectatomic.io\/container-best-practices\">docs.projectatomic.io\/container-best-practices<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/docs.openshift.com\/enterprise\/3.0\/creating_images\/guidelines.html\">docs.openshift.com\/enterprise\/3.0\/creating_images\/guidelines.html<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/www.usenix.org\/system\/files\/conference\/hotcloud16\/hotcloud16_burns.pdf\">www.usenix.org\/system\/files\/conference\/hotcloud16\/hotcloud16_burns.pdf<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/leanpub.com\/k8spatterns\/\">leanpub.com\/k8spatterns<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/12factor.net\/\">12factor.net<\/a><\/noindex><\/li>\n<\/ul>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/events.redhat.com\/profile\/form\/index.cfm?intcmp=701f20000012s47AAA&amp;PKFormID=0x5789474c4\"><b>Webin\u00e1\u0159 k nov\u00e9 verzi OpenShift Container Platform \u2013 4<\/b><\/a><\/noindex><br \/>\n11. \u010dervna v 11:00<\/p>\n<p>Co se dozv\u00edte:<\/p>\n<ul>\n<li>Immutable Red Hat Enterprise Linux CoreOS<\/li>\n<li>OpenShift service mesh<\/li>\n<li>Operator framework<\/li>\n<li>Knative framework<\/li>\n<\/ul>\n<p>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/redhatrussia\/blog\/455024\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u00ab\u041e\u0431\u043b\u0430\u0447\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435\u00bb (cloud native) \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u00ab\u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0435\u00bb \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u0445. \u041e\u0431\u044b\u0447\u043d\u043e \u043e\u043d\u0438 \u0441\u0442\u0440\u043e\u044f\u0442\u0441\u044f \u043a\u0430\u043a \u043d\u0430\u0431\u043e\u0440 \u0441\u043b\u0430\u0431\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439. \u0422\u0430\u043a\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0433\u043e\u0442\u043e\u0432\u044b \u043a \u0441\u0431\u043e\u044f\u043c, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0430\u0434\u0435\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0434\u0430\u0436\u0435 \u043f\u0440\u0438 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u044b\u0445 \u043e\u0442\u043a\u0430\u0437\u0430\u0445 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f. \u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 \u043c\u0435\u0434\u0430\u043b\u0438 \u2013 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":26340,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-35006","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u00ab\u041e\u0431\u043b\u0430\u0447\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435\u00bb (cloud native) \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u00ab\u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0435\u00bb \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u0445.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/cs\/blog\/news\/5-printsipov-zdravogo-smysla-dlya-sozdaniya-cloud-native-apps\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd475 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u043e\u0432 \u0437\u0434\u0440\u0430\u0432\u043e\u0433\u043e \u0441\u043c\u044b\u0441\u043b\u0430 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f cloud-native apps | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u00ab\u041e\u0431\u043b\u0430\u0447\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435\u00bb (cloud native) \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u00ab\u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0435\u00bb \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u0445.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/news\/5-printsipov-zdravogo-smysla-dlya-sozdaniya-cloud-native-apps\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:01:47+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:01:47+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd475 princip\u016f zdrav\u00e9ho rozumu pro vytv\u00e1\u0159en\u00ed cloud-native aplikac\u00ed | ProHoster","description":"\u201eCloud-nativn\u00ed\u201c aplikace jsou navr\u017eeny speci\u00e1ln\u011b pro pr\u00e1ci v cloudov\u00fdch infrastruktur\u00e1ch.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/news\/5-printsipov-zdravogo-smysla-dlya-sozdaniya-cloud-native-apps","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd475 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u043e\u0432 \u0437\u0434\u0440\u0430\u0432\u043e\u0433\u043e \u0441\u043c\u044b\u0441\u043b\u0430 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f cloud-native apps | ProHoster","og:description":"\u00ab\u041e\u0431\u043b\u0430\u0447\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435\u00bb (cloud native) \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u00ab\u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0435\u00bb \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u0445.","og:url":"https:\/\/prohoster.info\/cs\/blog\/news\/5-printsipov-zdravogo-smysla-dlya-sozdaniya-cloud-native-apps","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:01:47+00:00","article:modified_time":"2019-10-31T19:01:47+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"35006","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 21:27:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:11:30","updated":"2026-01-21 21:27:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/35006","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=35006"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/35006\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/26340"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=35006"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=35006"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=35006"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}