{"id":351,"date":"2026-05-15T19:51:25","date_gmt":"2026-05-15T17:51:25","guid":{"rendered":"https:\/\/gorankostic.com\/blog\/?p=351"},"modified":"2026-05-15T19:51:25","modified_gmt":"2026-05-15T17:51:25","slug":"reliable-deployment-practices","status":"publish","type":"post","link":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/reliable-deployment-practices\/","title":{"rendered":"Reliable Deployment Practices"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Reliable Deployment Practices<\/h2>\n\n\n\n<p><strong>Excerpt:<\/strong> <br>Reliable deployment practices omogu\u0107avaju da se nove verzije sajta, aplikacije ili konfiguracije uvode kontrolisano, bez nepotrebnog rizika za produkciju. Dobar deployment proces uklju\u010duje pripremu, testiranje, backup, rollback plan i proveru nakon objave.<\/p>\n\n\n\n<p><strong>Blog \u010dlanak:<\/strong><\/p>\n\n\n\n<p>Reliable deployment practices su va\u017ean deo tehni\u010dke stabilizacije jer svaka promena u produkciji nosi odre\u0111eni rizik. Update plugina, izmena koda, promena PHP verzije, novi Docker image ili korekcija server konfiguracije mogu pobolj\u0161ati sistem, ali ga mogu i destabilizovati.<\/p>\n\n\n\n<p>Prvi princip pouzdanog deployment-a je da se promene ne rade nasumi\u010dno. Pre svake izmene treba znati \u0161ta se menja, za\u0161to se menja, koji deo sistema mo\u017ee biti pogo\u0111en i kako se proverava da li je promena uspela.<\/p>\n\n\n\n<p>Testiranje pre produkcije zna\u010dajno smanjuje rizik. Idealno je imati staging okru\u017eenje gde se nova verzija mo\u017ee proveriti bez uticaja na korisnike. Ako staging ne postoji, promene u produkciji moraju biti manje, pa\u017eljivije i dobro dokumentovane.<\/p>\n\n\n\n<p>Backup je obavezan pre ozbiljnog deployment-a. To ne zna\u010di samo imati neki stari backup, ve\u0107 imati sve\u017eu kopiju fajlova, baze i relevantnih konfiguracija. Posebno je va\u017eno znati da li backup mo\u017ee brzo da se vrati ako ne\u0161to krene pogre\u0161no.<\/p>\n\n\n\n<p>Rollback plan mora postojati pre promene, ne tek nakon problema. Ako update obori sajt, ako nova verzija koda ne radi ili ako konfiguracija izazove gre\u0161ku, treba odmah znati kako se sistem vra\u0107a na prethodno stabilno stanje.<\/p>\n\n\n\n<p>Kod CMS sistema deployment \u010desto uklju\u010duje pluginove, teme, page buildere i bazu. Jedan update mo\u017ee promeniti strukturu podataka ili na\u010din rada \u0161ablona, pa posle objave treba proveriti frontend, administraciju, forme, checkout i klju\u010dne funkcije.<\/p>\n\n\n\n<p>Kod custom aplikacija pouzdan deployment se \u010desto oslanja na Git, release verzije, environment varijable, build proces i jasno odvajanje produkcionih pode\u0161avanja od lokalnog razvoja. Time se smanjuje mogu\u0107nost da test konfiguracija zavr\u0161i u produkciji.<\/p>\n\n\n\n<p>Deployment ne zavr\u0161ava u trenutku kada se nova verzija objavi. Potrebno je proveriti logove, HTTP statuse, gre\u0161ke u browser konzoli, performanse, tracking evente i sve kriti\u010dne korisni\u010dke tokove. Mnogi problemi se pojave tek nakon realnog kori\u0161\u0107enja.<\/p>\n\n\n\n<p>Va\u017eno je dokumentovati promene. Kratak zapis o tome \u0161ta je objavljeno, kada, ko je uradio izmenu i koji su rezultati provere mo\u017ee kasnije zna\u010dajno ubrzati debugging i rollback.<\/p>\n\n\n\n<p>Reliable deployment practices pretvaraju tehni\u010dke promene u kontrolisan proces. Kada postoje testiranje, backup, rollback, dokumentacija i provera posle objave, produkcija postaje stabilnija, a razvoj se mo\u017ee nastaviti sa manje rizika.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Reliable deployment practices omogu\u0107avaju da se nove verzije sajta, aplikacije ili konfiguracije uvode kontrolisano, bez nepotrebnog rizika za produkciju. Dobar deployment proces uklju\u010duje pripremu, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17,20],"tags":[],"class_list":["post-351","post","type-post","status-publish","format-standard","hentry","category-recovery-optimization","category-technical-stabilization"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.5 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Reliable Deployment Practices - Goran Kostic Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/reliable-deployment-practices\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Reliable Deployment Practices\" \/>\n<meta property=\"og:description\" content=\"Reliable deployment practices omogu\u0107avaju da se nove verzije sajta, aplikacije ili konfiguracije uvode kontrolisano, bez nepotrebnog rizika za produkciju. Dobar deployment proces uklju\u010duje pripremu, [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/reliable-deployment-practices\/\" \/>\n<meta property=\"og:site_name\" content=\"Goran Kostic Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-15T17:51:25+00:00\" \/>\n<meta name=\"author\" content=\"WebixDesign\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"WebixDesign\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/reliable-deployment-practices\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/reliable-deployment-practices\\\/\"},\"author\":{\"name\":\"WebixDesign\",\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/#\\\/schema\\\/person\\\/0f800bfa90359ff9d2204020d58099c8\"},\"headline\":\"Reliable Deployment Practices\",\"datePublished\":\"2026-05-15T17:51:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/reliable-deployment-practices\\\/\"},\"wordCount\":427,\"commentCount\":0,\"articleSection\":[\"RECOVERY &amp; OPTIMIZATION\",\"Technical Stabilization\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/reliable-deployment-practices\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/reliable-deployment-practices\\\/\",\"url\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/reliable-deployment-practices\\\/\",\"name\":\"Reliable Deployment Practices - Goran Kostic Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-05-15T17:51:25+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/#\\\/schema\\\/person\\\/0f800bfa90359ff9d2204020d58099c8\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/reliable-deployment-practices\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/reliable-deployment-practices\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/2026\\\/05\\\/15\\\/reliable-deployment-practices\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Reliable Deployment Practices\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/\",\"name\":\"Goran Kostic Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/#\\\/schema\\\/person\\\/0f800bfa90359ff9d2204020d58099c8\",\"name\":\"WebixDesign\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0b4c4d73af3b6d4c23d5191555e82cdc78a86604f69eae8d2c3d23e45d3967c5?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0b4c4d73af3b6d4c23d5191555e82cdc78a86604f69eae8d2c3d23e45d3967c5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0b4c4d73af3b6d4c23d5191555e82cdc78a86604f69eae8d2c3d23e45d3967c5?s=96&d=mm&r=g\",\"caption\":\"WebixDesign\"},\"sameAs\":[\"https:\\\/\\\/gorankostic.com\\\/blog\"],\"url\":\"https:\\\/\\\/gorankostic.com\\\/blog\\\/author\\\/webixdesign\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Reliable Deployment Practices - Goran Kostic Blog","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:\/\/gorankostic.com\/blog\/2026\/05\/15\/reliable-deployment-practices\/","og_locale":"en_US","og_type":"article","og_title":"Reliable Deployment Practices","og_description":"Reliable deployment practices omogu\u0107avaju da se nove verzije sajta, aplikacije ili konfiguracije uvode kontrolisano, bez nepotrebnog rizika za produkciju. Dobar deployment proces uklju\u010duje pripremu, [&hellip;]","og_url":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/reliable-deployment-practices\/","og_site_name":"Goran Kostic Blog","article_published_time":"2026-05-15T17:51:25+00:00","author":"WebixDesign","twitter_card":"summary_large_image","twitter_misc":{"Written by":"WebixDesign","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/reliable-deployment-practices\/#article","isPartOf":{"@id":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/reliable-deployment-practices\/"},"author":{"name":"WebixDesign","@id":"https:\/\/gorankostic.com\/blog\/#\/schema\/person\/0f800bfa90359ff9d2204020d58099c8"},"headline":"Reliable Deployment Practices","datePublished":"2026-05-15T17:51:25+00:00","mainEntityOfPage":{"@id":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/reliable-deployment-practices\/"},"wordCount":427,"commentCount":0,"articleSection":["RECOVERY &amp; OPTIMIZATION","Technical Stabilization"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/gorankostic.com\/blog\/2026\/05\/15\/reliable-deployment-practices\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/reliable-deployment-practices\/","url":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/reliable-deployment-practices\/","name":"Reliable Deployment Practices - Goran Kostic Blog","isPartOf":{"@id":"https:\/\/gorankostic.com\/blog\/#website"},"datePublished":"2026-05-15T17:51:25+00:00","author":{"@id":"https:\/\/gorankostic.com\/blog\/#\/schema\/person\/0f800bfa90359ff9d2204020d58099c8"},"breadcrumb":{"@id":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/reliable-deployment-practices\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gorankostic.com\/blog\/2026\/05\/15\/reliable-deployment-practices\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/gorankostic.com\/blog\/2026\/05\/15\/reliable-deployment-practices\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/gorankostic.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Reliable Deployment Practices"}]},{"@type":"WebSite","@id":"https:\/\/gorankostic.com\/blog\/#website","url":"https:\/\/gorankostic.com\/blog\/","name":"Goran Kostic Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gorankostic.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/gorankostic.com\/blog\/#\/schema\/person\/0f800bfa90359ff9d2204020d58099c8","name":"WebixDesign","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/0b4c4d73af3b6d4c23d5191555e82cdc78a86604f69eae8d2c3d23e45d3967c5?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/0b4c4d73af3b6d4c23d5191555e82cdc78a86604f69eae8d2c3d23e45d3967c5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0b4c4d73af3b6d4c23d5191555e82cdc78a86604f69eae8d2c3d23e45d3967c5?s=96&d=mm&r=g","caption":"WebixDesign"},"sameAs":["https:\/\/gorankostic.com\/blog"],"url":"https:\/\/gorankostic.com\/blog\/author\/webixdesign\/"}]}},"_links":{"self":[{"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/posts\/351","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/comments?post=351"}],"version-history":[{"count":1,"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/posts\/351\/revisions"}],"predecessor-version":[{"id":352,"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/posts\/351\/revisions\/352"}],"wp:attachment":[{"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/media?parent=351"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/categories?post=351"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gorankostic.com\/blog\/wp-json\/wp\/v2\/tags?post=351"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}