{"id":508776,"date":"2022-04-26T07:26:27","date_gmt":"2022-04-26T05:26:27","guid":{"rendered":"https:\/\/www.devoteam.com\/expert-view\/prica-iz-prve-ruke-transformacija-aplikacije-kubernetes-klasterom\/"},"modified":"2025-02-13T17:29:08","modified_gmt":"2025-02-13T16:29:08","slug":"prica-iz-prve-ruke-transformacija-aplikacije-kubernetes-klasterom","status":"publish","type":"expert-view","link":"https:\/\/devoteam.info\/sr\/expert-view\/prica-iz-prve-ruke-transformacija-aplikacije-kubernetes-klasterom\/","title":{"rendered":"Pri\u010da iz \u201cprve ruke\u201d: Transformacija aplikacije Kubernetes klasterom"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Svaki projekat ima dve strane &#8211; benefite koje je doneo, i nepredvi\u0111ene izazove koji se pojave u toku izrade samog projekta. Danas \u0107u u ovom blogu govoriti upravo o toj manje lepoj strani medalje, koja unosi nervozu u tim i \u010dini donosi neo\u010dekivane izazove.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kao i ve\u0107ina softver developera u Devoteam-u, moj glavni zadatak na projektima bio je da pi\u0161em dobar kod koji ispunjava zahteve korisnika, istovremeno po\u0161tuju\u0107i in\u017eenjerske principe i zatim da to isporu\u010dim u testno okru\u017eenje korisnika. Ipak, kada se radi o sme\u0161tanju projekta u produkciono okru\u017eenje za rad sa klijentima i korisnicima, sve mo\u017ee izgledati dosta druga\u010dije.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Konkretno ovaj projekat pokrenut je sa idejom o transformaciji postoje\u0107e monolitne aplikacije u aplikaciju sa mikroservisnom arhitekturom, sastavljene od vi\u0161e manjih servisa koji nezavisno rade na Kubernetes klasteru.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Arhitekte sa iskustvom, biznis analiti\u010dari i tim lidovi preuzeli su sve neophodne korake kako bi obezbedili uspe\u0161nu tranziciju na produkciju. Imali smo dobro smi\u0161ljen plan i odli\u010dnu realizaciju. Projekat je isporu\u010den uspe\u0161no. Ipak, tokom same isporuke projekta pojavilo se nekoliko nepredvi\u0111enih izazova. Dve glavne \u201clekcije\u201d koje mi je ovo iskustvo donelo su:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Va\u017enost stress testiranja<\/li><li>Migracije podataka i neslaganja u polju datuma<\/li><\/ul>\n\n\n\n<h2 class=\"has-text-color wp-block-heading\" style=\"color:#f8485e\">Va\u017enost stress testiranja<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Jedan od najve\u0107ih problema u okru\u017eenju produkcije bio je zna\u010dajan pad ukupnih performansi u pogledu brzine. Na ovaj pad uticalo je nekoliko faktora:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Prekomerni pozivi backend API-ja i nepotrebni importi na frontend-u,<\/li><li> \u201cUska grla\u201d i neoptimalna upotreba framework-a u backend-u,<\/li><li>Sporo dobavljanje informacija kao rezultat zna\u010dajnog pove\u0107anja skupa podataka.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">U nastavku \u0107u analizirati svaki od ovih izazova i predstavi\u0107u na\u0161a re\u0161enja za iste.<\/p>\n\n\n\n<h3 class=\"has-background wp-block-heading\" style=\"background-color:#fddade\">Optimizacija Frontend-a<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Frontend je najmanje uzrokovao pad performansi. Jedan mali problem koji se pojavio su neiskori\u0161\u0107eni uvozi, i to je re\u0161eno prili\u010dno brzo jednostavnim brisanjem pomenutih uvoza.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dalje, postojali su neki servisi u aplikaciji koji su bili \u201cinRoot\u201d. Kao rezultat toga, aplikacija je zahtevala od svih servisa da budu instancirani pre pokretanja aplikacije. Ovaj izazov prevazi\u0111en je brisanjem \u201cinRoot\u201d konfirguracije tamo gde smo smatrali da je nepotrebna, i pravilnim u\u010ditavanjem servisa u module koji su omogu\u0107avali bolji \u201clazy loading\u201d.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I kona\u010dno, u na\u0161oj aplikaciji korisnik je imao mogu\u0107nost da pogleda ili da koriguje dokument. Ipak, nisu sve funkcionalnosti bile omogu\u0107ene u \u201cview\u201d modu, i tako su neki API pozivi backend-u bili redundantni. Jednostavnom promenom koji je mod aktiviran u instanci komponente, mi smo uspeli da smanjimo API pozive ka backend-u, \u0161to je rezultiralo ve\u0107om brzinom aplikacije.<\/p>\n\n\n\n\t<div class=\"align wp-block-acf-quote\">\n\n\t\n\t<figure class=\"text-center\"><blockquote class=\"blockquote\"><svg width=\"49\" height=\"38\" viewBox=\"0 0 49 38\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M42.875 0C44.4995 0 46.0574 0.652728 47.206 1.81459C48.3547 2.97645 49 4.55228 49 6.1954V15.4885C49 17.1316 48.3547 18.7075 47.206 19.8693C46.0574 21.0312 44.4995 21.6839 42.875 21.6839H33.6875C33.6875 24.1486 34.6555 26.5123 36.3785 28.2551C38.1014 29.9979 40.4383 30.977 42.875 30.977H45.9375C46.7497 30.977 47.5287 31.3034 48.103 31.8843C48.6773 32.4652 49 33.2532 49 34.0747C49 34.8963 48.6773 35.6842 48.103 36.2651C47.5287 36.8461 46.7497 37.1724 45.9375 37.1724H42.875C38.8139 37.1724 34.9191 35.5406 32.0474 32.6359C29.1758 29.7313 27.5625 25.7917 27.5625 21.6839V6.1954C27.5625 4.55228 28.2078 2.97645 29.3565 1.81459C30.5051 0.652728 32.063 0 33.6875 0H42.875ZM15.3125 0C16.937 0 18.4949 0.652728 19.6435 1.81459C20.7922 2.97645 21.4375 4.55228 21.4375 6.1954V15.4885C21.4375 17.1316 20.7922 18.7075 19.6435 19.8693C18.4949 21.0312 16.937 21.6839 15.3125 21.6839H6.125C6.125 24.1486 7.09296 26.5123 8.81596 28.2551C10.5389 29.9979 12.8758 30.977 15.3125 30.977H18.375C19.1872 30.977 19.9662 31.3034 20.5405 31.8843C21.1148 32.4652 21.4375 33.2532 21.4375 34.0747C21.4375 34.8963 21.1148 35.6842 20.5405 36.2651C19.9662 36.8461 19.1872 37.1724 18.375 37.1724H15.3125C11.2514 37.1724 7.35658 35.5406 4.48493 32.6359C1.61328 29.7313 0 25.7917 0 21.6839V6.1954C0 4.55228 0.645313 2.97645 1.79397 1.81459C2.94263 0.652728 4.50055 0 6.125 0H15.3125Z\" fill=\"#3C3C3A\"\/>\n<\/svg><p>Osnovna ideja pri razvoju ovog projekta je transformisanje postoje\u0107e monolitne aplikacije u aplikaciju sa mikroservisnom arhitekturom sastavljenom od vi\u0161e manjih servisa koji nezavisno rade na Kubernetes klasteru. <\/p><\/blockquote><figcaption class=\"blockquote-footer\">\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-8d39b2df wp-block-group-is-layout-flex\"><figure class=\"wp-block-image size-full is-resized is-style-rounded\"><img decoding=\"async\" src=\"https:\/\/devo2024.local\/wp-content\/uploads\/2024\/08\/nico-sienaert.jpg\" alt=\"\" class=\"wp-image-36180\" style=\"aspect-ratio:1;object-fit:cover;width:80px\"\/><\/figure>\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-6fa7971b wp-block-group-is-layout-flex\">\n\t<p class=\"has-medium-font-size wp-block-paragraph\" style=\"font-style:normal;font-weight:500\">Filip Moldvai<\/p>\n\t\n\t<p class=\"wp-block-paragraph\">Integration Consultant<\/p>\n\t<\/div>\n<\/div>\n<\/figcaption><\/figure>\n\t\n\t<\/div>\n\n\n\n\n<h3 class=\"has-background wp-block-heading\" style=\"background-color:#fddade\">Optimizacija Backend-a<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Optimizacija backend servisa zahtevala je vi\u0161e truda od frontend-a iz prostog razloga \u0161to kompletan backend kod obuhvata vi\u0161e mikroservisa. Zato smo proverili svaki servis za koji smo sumnjali da je \u201cusko grlo\u201d, i svaki od servisa predstavljao je jedinstveni problem. U nastavku \u0107u govoriti o nekima od njih.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Jedna od stvari koja nam je prijavljena vrlo brzo nakom \u0161to je projekat isporu\u010den na produkciju, je da aplikacija u nekim delovima dana radi bolje dok je u drugima sporija. Pro\u0161irili smo loging informacije kako bismo imali uvid u uzrok koji usporava performanse aplikacije, i to nam je zapravo otkrilo neke vrlo zanimljive \u010dinjenice.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mi koristimo Keycloak, open-source menad\u017ement alat kako bismo organizovali korisnike, uloge i ovla\u0161e\u0107nja u aplikaciji. Unutar same strukture nalazi se MySQL baza podataka koja \u010duva ove osetljive informacije. Ono \u0161to smo na\u0161li je da na\u0161 kod ispituje bazu podataka kako bi do\u0161ao do podataka koji se ne menjaju kada se sve podesi. Implementacijom jednostavnog cache re\u0161enja u servis sloju, kao \u0161to je hash mapa u kojoj su sa\u010duvane uloge, omogu\u0107ili smo da se upit zaobi\u0111e ukoliko je tra\u017eena uloga na mapi. Ukoliko je ura\u0111en update uloge u bazi, isto \u0107emo uraditi i u cache-u.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Jo\u0161 jedna interesantna stvar je da mi nismo dovoljno iskoristili mogu\u0107nosti MongoDB i njene agregacije. Ovo je postalo evidentno kada je zavr\u0161ena migracija podataka i kada se veli\u010dina podataka pove\u0107ala sa nekoliko hiljada dokumenata na nekoliko desetina hiljada. MongoDB bio je na\u0161 izbor za \u010duvanje skoro svih podataka koje je generisala aplikacija. Transformisanjem koda u repository sloju servisa od onog baziranog na typescript logici u onaj koji koristi MongoDB aggregation pipeline, smanjili smo optere\u0107enost pri izvr\u0161avanju servisa u bazi. Kao rezultat ovoga, celokupne performanse su bile bolje.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ovo je sve bilo dobro za operacije koje se ti\u010du update-ovanja podataka, ali smo mi tako\u0111e trebali da ubrzamo i prikupljanje informacija iz baze, \u0161to nikako nismo mogli uraditi pobolj\u0161anjem koda. Ipak, postojala je jedna stvar u samoj bazi koju smo mogli, a to je dodavanje indeksa u bazu. Ovo omogu\u0107ava MongoDB da ograni\u010di broj dokumenata koje treba da pregleda, i tako izvr\u0161ava upite br\u017ee. Mi smo analizirali svaku kolekciju svake&nbsp;baze kako bi identifikovali najoptimalnije indekse za svaku od njih. Kada smo to implementirali, aplikacija je ponovo radila brzo.<\/p>\n\n\n\n<h2 class=\"has-text-color wp-block-heading\" style=\"color:#f8485e\">Migracije podataka i neslaganja u polju datuma<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Jedan od glavnih zahteva je bio upotrebljivost podataka iz prethodne verzije. Ovo je omogu\u0107eno zahvaljuju\u0107i na\u0161oj analizi podataka i migracionom timu, koji je mapirao postoje\u0107a polja u novi set polja i izvr\u0161io migraciju podataka u serijama, sa povremenim testiranjem, kako bi se uverio da \u0107e aplikacija neometano raditi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sve ovo pro\u0161lo bi savr\u0161eno, da nismo prevideli jednu \u010dinjenicu koja je proistekla iz migracije i skladi\u0161tenja polja datuma.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ve\u0107ina dokumenata sa datumima sadr\u017ei razli\u010dita polja: po\u010detni i krajnji datum nekog perioda, datume ro\u0111enja i klijenata i zaposlenih, datume odre\u0111enih aktivnosti&#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Datumi sami po sebi bili su laki za migraciju, datum iz jedne javascript aplikacije se na isti na\u010din interpretira u drugoj. Problem je nastao sa datumima unutar novo kreiranih dokumenata na novoj verziji aplikacije, gde se vreme datuma skladi\u0161ti kao pono\u0107. I ne samo to, po\u0161to je na\u0161a baza locirana u vremenskoj zoni CET, datum se \u010duvao kao pretodni dan sa vremenom pode\u0161enim na 23:00.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignright size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/devoteam.info\/wp-content\/uploads\/2025\/01\/Devoteam_icons_others_red-poppy-5_Sprint-2.png\" alt=\"\" class=\"wp-image-5547\" width=\"288\" height=\"288\" \/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Na primer, ukoliko bismo kreirali novog klijenta sa datumom ro\u0111enja 01.03.2007, to bi bilo sa\u010duvano kao \u201c28-02-2007T23:00:00Z\u201d.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">U nekim drugim slu\u010dajevima, aplikacija je \u010duvala datum-vreme objekte kao datum i vreme zakazanih sastanaka, datum kreiranja i modifikovanja dokumenata\u2026 Ovog puta sa\u010duvani podaci uklju\u010divali su i sate i minute, ali opet je sve \u010duvano u Centralno evropskoj vremenskoj zoni, \u0161to zna\u010di da \u0107e se datum-vreme objekat umanjiti za jedan sat (npr. Sastanak zakazan za 20.01.2022 u 15:30 bio bi sa\u010duvan kao &#8222;20-01-2022T14:30:00Z\u201d).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Neusagla\u0161enost izme\u0111u formata datuma stare i nove verzije aplikacije uzrokovalo je da odre\u0111ene funkcionalnosti ne rade. Ovo je bio vrlo zna\u010dajan problem i ni jedno re\u0161enje ne bi obuhvatilo svaki njegov aspekt. Oni delovi koji su se bavili odre\u0111enim update-om putem Kubernetes klastera zahtevali su striktan datum i vreme interpretiran u CEST vremenskoj zoni; dok su drugi delovi aplikacije bili agnosti\u010dni prema vremenskoj zoni, i transformisali su datum prema vremenskoj zoni ure\u0111aja korisnika.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Jedno mogu\u0107e re\u0161enje bilo je da se modifikuje format datuma i da se skladi\u0161ti u formatu UTC, tako da je vremenska zona nepoznanica. To bi podrazumevalo refaktorisanje delova koda u backend-u gde je potrebna vremenska zona, ali ovo se mo\u017ee posti\u0107i kori\u0161\u0107enjem framework-a kao \u0161to je Moment za transformaciju datuma u \u200b\u200bispravan format pre nego \u0161to se nastavi sa izvr\u0161avanjem koda.<\/p>\n\n\n\n<h2 class=\"has-text-color wp-block-heading\" style=\"color:#f8485e\">Zaklju\u010dak<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Na kraju, \u017eeleo bih da dodam jo\u0161 jednu stvar za koju smatram da je klju\u010dan faktor za uspeh projekta, a to je saradnja unutar tima, gde svi \u010dlanovi tima imaju raznovrsne ve\u0161tine, jer za takav tim svaki izazov koji nastane tokom projekta je mogu\u0107e prevazi\u0107i. Tokom ovog perioda javile su neke nove ideje, probali smo nove stvari, i na kraju smo uspeli.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ovo iskustvo pokazalo je koliko je planiranje dragoceno ne samo prilikom isporuke u produkciju, nego i tokom celog projekta generalno. I ovo je tako\u0111e ne\u0161to \u0161to volim kod svog posla, uvek ima \u0161ta novo da se nau\u010di.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Svaki projekat ima dve strane &#8211; benefite koje je doneo, i nepredvi\u0111ene izazove koji se pojave u toku izrade samog projekta. Danas \u0107u u ovom blogu govoriti upravo o toj manje lepoj strani medalje, koja unosi nervozu u tim i \u010dini donosi neo\u010dekivane izazove. Kao i ve\u0107ina softver developera u Devoteam-u, moj glavni zadatak na [&hellip;]<\/p>\n","protected":false},"featured_media":416315,"template":"","categories":[4593],"tags":[811,841,779,854],"industry":[],"class_list":["post-508776","expert-view","type-expert-view","status-publish","has-post-thumbnail","hentry","category-cloud-native-architecture-sr","tag-api","tag-distributed-cloud","tag-innovative-tech","tag-kubernetes"],"acf":[],"cards":"\n\t<div class=\"single-post-card\">\n\n\t\t<figure class=\"wp-block-post-featured-image\"><a href=\"https:\/\/devoteam.info\/sr\/expert-view\/prica-iz-prve-ruke-transformacija-aplikacije-kubernetes-klasterom\/\" target=\"_self\" ><img width=\"2560\" height=\"1650\" src=\"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_1819430477-scaled-4.jpg\" class=\"attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"Pri\u010da iz \u201cprve ruke\u201d: Transformacija aplikacije Kubernetes klasterom\" style=\"aspect-ratio:4\/3;width:100%;object-fit:cover;\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_1819430477-scaled-4.jpg 2560w, https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_1819430477-scaled-4-300x193.jpg 300w, https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_1819430477-scaled-4-1024x660.jpg 1024w, https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_1819430477-scaled-4-768x495.jpg 768w, https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_1819430477-scaled-4-1536x990.jpg 1536w, https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_1819430477-scaled-4-2048x1320.jpg 2048w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><\/a><\/figure>\n\n\t\t\n\t\t<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-43282307 wp-block-group-is-layout-flex\">\n\t<p style=\"font-style:normal;font-weight:700\" class=\"has-link-color wp-elements-1 wp-block-lp-post-type has-text-color has-primary-color has-small-font-size\">Stru\u010dni stavovi<\/p>\n\n\t\t\n\t\t<h3 style=\"font-style:normal;font-weight:400\" class=\"wp-block-post-title has-base-font-size\"><a href=\"https:\/\/devoteam.info\/sr\/expert-view\/prica-iz-prve-ruke-transformacija-aplikacije-kubernetes-klasterom\/\" target=\"_self\" >Pri\u010da iz \u201cprve ruke\u201d: Transformacija aplikacije Kubernetes klasterom<\/a><\/h3><\/div>\n\t\t\n\t<\/div>\n\n","yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.4 (Yoast SEO v28.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Pri\u010da iz \u201cprve ruke\u201d: Transformacija aplikacije Kubernetes klasterom | Devoteam<\/title>\n<meta name=\"description\" content=\"Transformacija aplikacije Kubernetes klasterom - izazovi i re\u0161enja primenjena na Devoteam projektu\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/devoteam.info\/sr\/expert-view\/prica-iz-prve-ruke-transformacija-aplikacije-kubernetes-klasterom\/\" \/>\n<meta property=\"og:locale\" content=\"sr_RS\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Pri\u010da iz \u201cprve ruke\u201d: Transformacija aplikacije Kubernetes klasterom\" \/>\n<meta property=\"og:description\" content=\"Transformacija aplikacije Kubernetes klasterom - izazovi i re\u0161enja primenjena na Devoteam projektu\" \/>\n<meta property=\"og:url\" content=\"https:\/\/devoteam.info\/sr\/expert-view\/prica-iz-prve-ruke-transformacija-aplikacije-kubernetes-klasterom\/\" \/>\n<meta property=\"og:site_name\" content=\"Devoteam\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-13T16:29:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_1819430477-scaled-4.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1650\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u041f\u0440\u043e\u0446\u0435\u045a\u0435\u043d\u043e \u0432\u0440\u0435\u043c\u0435 \u0447\u0438\u0442\u0430\u045a\u0430\" \/>\n\t<meta name=\"twitter:data1\" content=\"6 \u043c\u0438\u043d\u0443\u0442\u0430\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/devoteam.info\\\/sr\\\/expert-view\\\/prica-iz-prve-ruke-transformacija-aplikacije-kubernetes-klasterom\\\/\",\"url\":\"https:\\\/\\\/devoteam.info\\\/sr\\\/expert-view\\\/prica-iz-prve-ruke-transformacija-aplikacije-kubernetes-klasterom\\\/\",\"name\":\"Pri\u010da iz \u201cprve ruke\u201d: Transformacija aplikacije Kubernetes klasterom | Devoteam\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/devoteam.info\\\/sr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/devoteam.info\\\/sr\\\/expert-view\\\/prica-iz-prve-ruke-transformacija-aplikacije-kubernetes-klasterom\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/devoteam.info\\\/sr\\\/expert-view\\\/prica-iz-prve-ruke-transformacija-aplikacije-kubernetes-klasterom\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/devoteam.info\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/shutterstock_1819430477-scaled-4.jpg\",\"datePublished\":\"2022-04-26T05:26:27+00:00\",\"dateModified\":\"2025-02-13T16:29:08+00:00\",\"description\":\"Transformacija aplikacije Kubernetes klasterom - izazovi i re\u0161enja primenjena na Devoteam projektu\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/devoteam.info\\\/sr\\\/expert-view\\\/prica-iz-prve-ruke-transformacija-aplikacije-kubernetes-klasterom\\\/#breadcrumb\"},\"inLanguage\":\"sr-RS\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/devoteam.info\\\/sr\\\/expert-view\\\/prica-iz-prve-ruke-transformacija-aplikacije-kubernetes-klasterom\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"sr-RS\",\"@id\":\"https:\\\/\\\/devoteam.info\\\/sr\\\/expert-view\\\/prica-iz-prve-ruke-transformacija-aplikacije-kubernetes-klasterom\\\/#primaryimage\",\"url\":\"https:\\\/\\\/devoteam.info\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/shutterstock_1819430477-scaled-4.jpg\",\"contentUrl\":\"https:\\\/\\\/devoteam.info\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/shutterstock_1819430477-scaled-4.jpg\",\"width\":2560,\"height\":1650},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/devoteam.info\\\/sr\\\/expert-view\\\/prica-iz-prve-ruke-transformacija-aplikacije-kubernetes-klasterom\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/devoteam.info\\\/sr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Stru\u010dni stavovi\",\"item\":\"https:\\\/\\\/devoteam.info\\\/sr\\\/expert-view\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Pri\u010da iz \u201cprve ruke\u201d: Transformacija aplikacije Kubernetes klasterom\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/devoteam.info\\\/sr\\\/#website\",\"url\":\"https:\\\/\\\/devoteam.info\\\/sr\\\/\",\"name\":\"Devoteam\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/devoteam.info\\\/sr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"sr-RS\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Pri\u010da iz \u201cprve ruke\u201d: Transformacija aplikacije Kubernetes klasterom | Devoteam","description":"Transformacija aplikacije Kubernetes klasterom - izazovi i re\u0161enja primenjena na Devoteam projektu","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/devoteam.info\/sr\/expert-view\/prica-iz-prve-ruke-transformacija-aplikacije-kubernetes-klasterom\/","og_locale":"sr_RS","og_type":"article","og_title":"Pri\u010da iz \u201cprve ruke\u201d: Transformacija aplikacije Kubernetes klasterom","og_description":"Transformacija aplikacije Kubernetes klasterom - izazovi i re\u0161enja primenjena na Devoteam projektu","og_url":"https:\/\/devoteam.info\/sr\/expert-view\/prica-iz-prve-ruke-transformacija-aplikacije-kubernetes-klasterom\/","og_site_name":"Devoteam","article_modified_time":"2025-02-13T16:29:08+00:00","og_image":[{"width":2560,"height":1650,"url":"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_1819430477-scaled-4.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"\u041f\u0440\u043e\u0446\u0435\u045a\u0435\u043d\u043e \u0432\u0440\u0435\u043c\u0435 \u0447\u0438\u0442\u0430\u045a\u0430":"6 \u043c\u0438\u043d\u0443\u0442\u0430"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/devoteam.info\/sr\/expert-view\/prica-iz-prve-ruke-transformacija-aplikacije-kubernetes-klasterom\/","url":"https:\/\/devoteam.info\/sr\/expert-view\/prica-iz-prve-ruke-transformacija-aplikacije-kubernetes-klasterom\/","name":"Pri\u010da iz \u201cprve ruke\u201d: Transformacija aplikacije Kubernetes klasterom | Devoteam","isPartOf":{"@id":"https:\/\/devoteam.info\/sr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/devoteam.info\/sr\/expert-view\/prica-iz-prve-ruke-transformacija-aplikacije-kubernetes-klasterom\/#primaryimage"},"image":{"@id":"https:\/\/devoteam.info\/sr\/expert-view\/prica-iz-prve-ruke-transformacija-aplikacije-kubernetes-klasterom\/#primaryimage"},"thumbnailUrl":"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_1819430477-scaled-4.jpg","datePublished":"2022-04-26T05:26:27+00:00","dateModified":"2025-02-13T16:29:08+00:00","description":"Transformacija aplikacije Kubernetes klasterom - izazovi i re\u0161enja primenjena na Devoteam projektu","breadcrumb":{"@id":"https:\/\/devoteam.info\/sr\/expert-view\/prica-iz-prve-ruke-transformacija-aplikacije-kubernetes-klasterom\/#breadcrumb"},"inLanguage":"sr-RS","potentialAction":[{"@type":"ReadAction","target":["https:\/\/devoteam.info\/sr\/expert-view\/prica-iz-prve-ruke-transformacija-aplikacije-kubernetes-klasterom\/"]}]},{"@type":"ImageObject","inLanguage":"sr-RS","@id":"https:\/\/devoteam.info\/sr\/expert-view\/prica-iz-prve-ruke-transformacija-aplikacije-kubernetes-klasterom\/#primaryimage","url":"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_1819430477-scaled-4.jpg","contentUrl":"https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_1819430477-scaled-4.jpg","width":2560,"height":1650},{"@type":"BreadcrumbList","@id":"https:\/\/devoteam.info\/sr\/expert-view\/prica-iz-prve-ruke-transformacija-aplikacije-kubernetes-klasterom\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/devoteam.info\/sr\/"},{"@type":"ListItem","position":2,"name":"Stru\u010dni stavovi","item":"https:\/\/devoteam.info\/sr\/expert-view\/"},{"@type":"ListItem","position":3,"name":"Pri\u010da iz \u201cprve ruke\u201d: Transformacija aplikacije Kubernetes klasterom"}]},{"@type":"WebSite","@id":"https:\/\/devoteam.info\/sr\/#website","url":"https:\/\/devoteam.info\/sr\/","name":"Devoteam","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/devoteam.info\/sr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"sr-RS"}]}},"uagb_featured_image_src":{"full":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_1819430477-scaled-4.jpg",2560,1650,false],"thumbnail":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_1819430477-scaled-4-150x150.jpg",150,150,true],"medium":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_1819430477-scaled-4-300x193.jpg",300,193,true],"medium_large":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_1819430477-scaled-4-768x495.jpg",768,495,true],"large":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_1819430477-scaled-4-1024x660.jpg",1024,660,true],"1536x1536":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_1819430477-scaled-4-1536x990.jpg",1536,990,true],"2048x2048":["https:\/\/devoteam.info\/wp-content\/uploads\/2024\/12\/shutterstock_1819430477-scaled-4-2048x1320.jpg",2048,1320,true]},"uagb_author_info":{"display_name":"tomvermeersch","author_link":"https:\/\/devoteam.info\/sr\/author\/"},"uagb_comment_info":0,"uagb_excerpt":"Svaki projekat ima dve strane &#8211; benefite koje je doneo, i nepredvi\u0111ene izazove koji se pojave u toku izrade samog projekta. Danas \u0107u u ovom blogu govoriti upravo o toj manje lepoj strani medalje, koja unosi nervozu u tim i \u010dini donosi neo\u010dekivane izazove. Kao i ve\u0107ina softver developera u Devoteam-u, moj glavni zadatak na&hellip;","_links":{"self":[{"href":"https:\/\/devoteam.info\/sr\/wp-json\/wp\/v2\/expert-view\/508776","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devoteam.info\/sr\/wp-json\/wp\/v2\/expert-view"}],"about":[{"href":"https:\/\/devoteam.info\/sr\/wp-json\/wp\/v2\/types\/expert-view"}],"version-history":[{"count":0,"href":"https:\/\/devoteam.info\/sr\/wp-json\/wp\/v2\/expert-view\/508776\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devoteam.info\/sr\/wp-json\/wp\/v2\/media\/416315"}],"wp:attachment":[{"href":"https:\/\/devoteam.info\/sr\/wp-json\/wp\/v2\/media?parent=508776"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devoteam.info\/sr\/wp-json\/wp\/v2\/categories?post=508776"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devoteam.info\/sr\/wp-json\/wp\/v2\/tags?post=508776"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/devoteam.info\/sr\/wp-json\/wp\/v2\/industry?post=508776"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}