{"id":114174,"date":"2023-05-12T12:54:05","date_gmt":"2023-05-12T10:54:05","guid":{"rendered":"https:\/\/fotc.com\/?p=114174"},"modified":"2023-11-27T09:32:31","modified_gmt":"2023-11-27T08:32:31","slug":"jak-uniknac-przestojow-przy-wdrazaniu-nowej-funkcji-w-aplikacji","status":"publish","type":"post","link":"https:\/\/fotc.com\/pl\/blog\/jak-uniknac-przestojow-przy-wdrazaniu-nowej-funkcji-w-aplikacji\/","title":{"rendered":"Jak unikn\u0105\u0107 przestoj\u00f3w przy wdra\u017caniu nowej funkcji w aplikacji?"},"content":{"rendered":"\n<p>Aplikacje wymagaj\u0105 aktualizacji. Wdro\u017ceniu nowej wersji towarzysz\u0105 wyzwania takie jak mo\u017cliwo\u015b\u0107 pojawienia si\u0119 przestoj\u00f3w, czy te\u017c incydent\u00f3w ko\u0144cz\u0105cych si\u0119 nieskuteczn\u0105 implementacj\u0105. W tym artykule pokazujemy jak zminimalizowa\u0107 liczb\u0119 b\u0142\u0119d\u00f3w, zar\u00f3wno ludzkich jak i procesowych, czego skutkiem b\u0119dzie skuteczne i powtarzalne wdro\u017cenie.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-jakie-s-cele-biznesowe-wdro-enia\"><strong>Jakie s\u0105 cele biznesowe wdro\u017cenia?<\/strong><\/h2>\n\n\n\n<p>W zale\u017cno\u015bci od za\u0142o\u017conego celu biznesowego, mamy do czynienia z r\u00f3\u017cnymi rodzajami wdro\u017ce\u0144. Jednym z nich jest wprowadzenie zmian bez niepotrzebnych przestoj\u00f3w. Inn\u0105 mo\u017ce by\u0107 konieczno\u015b\u0107 dokonania transformacji wewn\u0105trz \u015brodowiska albo te\u017c podzbioru u\u017cytkownik\u00f3w. Bez wzgl\u0119du na cel, pierwszym krokiem jest okre\u015blenie strategii wdra\u017cania.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-strategie-wdra-ania-aplikacji\"><strong>Strategie wdra\u017cania aplikacji<\/strong><\/h2>\n\n\n\n<p>Uruchomienie nowej us\u0142ugi jest cz\u0119sto oddzielone od faktu udost\u0119pnienia jej u\u017cytkownikom. Jednak w przypadku us\u0142ug wdra\u017canych w modelu in-place, zar\u00f3wno deployment jak i udost\u0119pnienie nast\u0119puj\u0105 symultanicznie. Oznacza to, \u017ce ju\u017c w momencie wdro\u017cenia nowej wersji, zaczyna ona akceptowa\u0107 ruch produkcyjny.<\/p>\n\n\n\n<p>Mo\u017cliwe jest r\u00f3wnie\u017c r\u00f3wnoleg\u0142e wdra\u017canie i udost\u0119pnianie wielu wersji us\u0142ugi, tu z pomoc\u0105 przychodzi<a href=\"https:\/\/fotc.com\/pl\/blog\/kubernetes-tutorial\/\"> Kubernetes<\/a>. Mo\u017cemy te\u017c skorzysta\u0107 z trzech podstawowych wzorc\u00f3w wdra\u017cania nowych aplikacji, kt\u00f3re zapewni\u0105 elastyczno\u015b\u0107 i odpowiedni poziom automatyzacji. Pomog\u0105 nam w tym narz\u0119dzia dost\u0119pne w ramach <a aria-label=\"chmury Google (opens in a new tab)\" href=\"https:\/\/fotc.com\/pl\/blog\/chmura-google-dostepne-rozwiazania\/\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"ek-link\">chmury Google<\/a>, takie jak m.in. Load Balancer.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-wzorzec-wdro-enia-odtworzeniowego-recreate-deployment-pattern\"><strong>Wzorzec wdro\u017cenia odtworzeniowego (<\/strong><strong>recreate deployment pattern)<\/strong><\/h3>\n\n\n\n<p>Korzystaj\u0105c z wzorca odtworzonego wdra\u017cania mo\u017cesz ca\u0142kowicie zeskalowa\u0107 obecn\u0105 wersj\u0119 aplikacji w g\u00f3r\u0119. Aby wdro\u017cy\u0107 wersj\u0119 nr 2 musisz w pierwszej kolejno\u015bci przeskalowa\u0107 istniej\u0105ce repliki wersji nr 1 do zera, a nast\u0119pnie wdra\u017casz te repliki wraz z now\u0105 wersj\u0105 aplikacji.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"981\" height=\"407\" src=\"https:\/\/fotc.com\/app\/uploads\/2023\/05\/image-3.png\" alt=\"\" class=\"wp-image-114175\" srcset=\"https:\/\/fotc.com\/app\/uploads\/2023\/05\/image-3.png 981w, https:\/\/fotc.com\/app\/uploads\/2023\/05\/image-3-300x124.png 300w, https:\/\/fotc.com\/app\/uploads\/2023\/05\/image-3-768x319.png 768w, https:\/\/fotc.com\/app\/uploads\/2023\/05\/image-3-123x51.png 123w, https:\/\/fotc.com\/app\/uploads\/2023\/05\/image-3-142x59.png 142w, https:\/\/fotc.com\/app\/uploads\/2023\/05\/image-3-352x146.png 352w, https:\/\/fotc.com\/app\/uploads\/2023\/05\/image-3-542x225.png 542w, https:\/\/fotc.com\/app\/uploads\/2023\/05\/image-3-26x11.png 26w\" sizes=\"(max-width: 981px) 100vw, 981px\" \/><\/figure>\n\n\n\n<p>Model ten, charakteryzuj\u0105cy si\u0119 prostot\u0105, sprawia, \u017ce <strong>nie musisz zarz\u0105dza\u0107 r\u00f3wnolegle wi\u0119cej ni\u017c jedn\u0105 wersj\u0105 aplikacji<\/strong>. Pozwala to unikn\u0105\u0107 problem\u00f3w zwi\u0105zanych ze zgodno\u015bci\u0105 wsteczn\u0105 (backward compatibility) danych oraz aplikacji. Wyb\u00f3r tej metody mo\u017ce jednak wi\u0105za\u0107 si\u0119 z przestojami. O ile w przypadku rozwi\u0105za\u0144, kt\u00f3re maj\u0105 zaplanowane przerwy konserwacyjne, nie jest to wi\u0119kszym problemem, to ju\u017c us\u0142ugi o znaczeniu krytycznym, obarczone umowami o wysokim poziomie us\u0142ug (SLA), jak r\u00f3wnie\u017c wymaganiami dotycz\u0105cymi dost\u0119pno\u015bci, b\u0119d\u0119 wymaga\u0142y innego sposobu wdro\u017cenia zmian.<\/p>\n\n\n\n<p><strong>Benefity wdra\u017cania odtworzeniowego:<\/strong><\/p>\n\n\n\n<p>\u00b7 &nbsp; &nbsp; &nbsp; &nbsp; prostota,<\/p>\n\n\n\n<p>\u00b7 &nbsp; &nbsp; &nbsp; &nbsp; zarz\u0105dzanie jedn\u0105 wersj\u0105 aplikacja na raz,<\/p>\n\n\n\n<p>\u00b7 &nbsp; &nbsp; &nbsp; &nbsp; unikanie wyzwa\u0144 zwi\u0105zanych z kompatybilno\u015bci\u0105 wsteczn\u0105 danych i aplikacji.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-wzorzec-wdro-enia-krocz-cego-rolling-update-deployment-pattern\"><strong>Wzorzec wdro\u017cenia krocz\u0105cego (<\/strong><strong>rolling update deployment pattern)<\/strong><\/h3>\n\n\n\n<p>Rozwi\u0105zaniem om\u00f3wionego powy\u017cej problemu mo\u017ce by\u0107 wyb\u00f3r wzorca wdro\u017cenia krocz\u0105cego. W tym przypadku, zamiast jednocze\u015bnie aktualizowa\u0107 ka\u017cd\u0105 instancj\u0119 aplikacji, aktualizacji ulega podzbi\u00f3r uruchamianych instancji.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"967\" height=\"552\" src=\"https:\/\/fotc.com\/app\/uploads\/2023\/05\/image-4.png\" alt=\"\" class=\"wp-image-114177\" srcset=\"https:\/\/fotc.com\/app\/uploads\/2023\/05\/image-4.png 967w, https:\/\/fotc.com\/app\/uploads\/2023\/05\/image-4-300x171.png 300w, https:\/\/fotc.com\/app\/uploads\/2023\/05\/image-4-768x438.png 768w, https:\/\/fotc.com\/app\/uploads\/2023\/05\/image-4-123x70.png 123w, https:\/\/fotc.com\/app\/uploads\/2023\/05\/image-4-142x81.png 142w, https:\/\/fotc.com\/app\/uploads\/2023\/05\/image-4-307x175.png 307w, https:\/\/fotc.com\/app\/uploads\/2023\/05\/image-4-494x282.png 494w, https:\/\/fotc.com\/app\/uploads\/2023\/05\/image-4-321x183.png 321w, https:\/\/fotc.com\/app\/uploads\/2023\/05\/image-4-26x15.png 26w\" sizes=\"(max-width: 967px) 100vw, 967px\" \/><\/figure>\n\n\n\n<p>Metoda ta pozwala na stopniowe rolowanie aplikacji. Liczba instancji, kt\u00f3re aktualizuj\u0105 si\u0119 jednocze\u015bnie nazywa si\u0119 rozmiarem okna (window size). W przypadku wi\u0119kszych klastr\u00f3w konieczne jest zwi\u0119kszenie window size.<\/p>\n\n\n\n<p>Wzorzec wdro\u017cenia krocz\u0105cego pozwala ci <strong>zyska\u0107 wi\u0119ksz\u0105 elastyczno\u015b\u0107 w sposobie dokonywania aktualizacji<\/strong>. Mo\u017cesz wybra\u0107, czy wolisz dokona\u0107 przeskalowania instancji nowej aplikacji w g\u00f3r\u0119 zanim dokonasz przeskalowania instancji starej aplikacji w d\u00f3\u0142. Z drugiej strony jeste\u015b w stanie okre\u015bli\u0107 maksymaln\u0105 liczb\u0119 instancji aplikacji, kt\u00f3re pozostan\u0105 niedost\u0119pne podczas r\u00f3wnoleg\u0142ego skalowania w g\u00f3r\u0119 nowych instancji.<\/p>\n\n\n\n<p>Dzi\u0119ki tej metodzie <strong>mo\u017cesz unikn\u0105\u0107 przestoj\u00f3w w dzia\u0142aniu aplikacji<\/strong>. Bazuj\u0105c na rozmiarze okna mo\u017cesz wybra\u0107 model wdro\u017cenia \u201eone by one\u201d lub \u201etwo by two\u201d. Ruch do zaktualizowanych miejsc docelowych jest kierowany dopiero w momencie, w kt\u00f3rym aplikacja w ca\u0142o\u015bci jest gotowa. Kolejn\u0105 korzy\u015bci\u0105 jest fakt, \u017ce ewentualne nieprawid\u0142owo\u015bci w dzia\u0142aniu nowej wersji aplikacji nie b\u0119d\u0105 globalne \u2013 mog\u0105 dotyczy\u0107 tylko cz\u0119\u015bci u\u017cytkownik\u00f3w.<\/p>\n\n\n\n<p>Je\u017celi oka\u017ce si\u0119, \u017ce po wdro\u017ceniu aplikacja nie jest stabilna, <strong>mo\u017cliwe jest wy\u0142\u0105czenie nowych replik i wdro\u017cenie starej wersji<\/strong> (slow rollback). W tym przypadku warto jednak pami\u0119ta\u0107, \u017ce jest to stopniowy, przyrostowy proces, zbli\u017cony w swojej strukturze do wdra\u017cania nowej wersji.<\/p>\n\n\n\n<p>Zwr\u00f3\u0107 uwag\u0119 na fakt, \u017ce w przypadku wyboru wzorca wdro\u017cenia krocz\u0105cego, zar\u00f3wno <strong>nowy jak i stary kod dzia\u0142aj\u0105 r\u00f3wnolegle obok siebie<\/strong>. Sprawia to, \u017ce u\u017cytkownicy mog\u0105 by\u0107 arbitralnie kierowani do jednej z tych wersji. Musisz mie\u0107 wi\u0119c pewno\u015b\u0107, \u017ce nowe wdro\u017cenie jest kompatybilne z poprzednim. Innymi s\u0142owy \u2013 nowa aplikacja powinna odczytywa\u0107 i obs\u0142ugiwa\u0107 dane, do kt\u00f3rych mia\u0142a dost\u0119p stara wersja. Zar\u00f3wno te znajduj\u0105ce si\u0119 na dysku, jak r\u00f3wnie\u017c w bazie danych czy zapisane w sesji przegl\u0105darki u\u017cytkownika.<\/p>\n\n\n\n<p>Je\u015bli aplikacja wymaga zachowania sesji, to mo\u017ce w tym pom\u00f3c load balancer wspieraj\u0105cy &#8222;lepk\u0105 sesj\u0119&#8221; oraz &#8222;connection draining&#8221;. Dodatkowo, rekomendowane jest aby wdro\u017cy\u0107 w aplikacji wsp\u00f3\u0142dzielenie sesji zawsze gdy jest to mo\u017cliwe, np. za pomoc\u0105 bazy NoSQL, takiej jak Datastore, pozwoli to oddzieli\u0107 sesj\u0119 od zasob\u00f3w aplikacji.<\/p>\n\n\n\n<p><strong>Benefity wdra\u017cania krocz\u0105cego:<\/strong><\/p>\n\n\n\n<p>\u00b7 &nbsp; &nbsp; &nbsp; &nbsp; brak przestoj\u00f3w,<\/p>\n\n\n\n<p>\u00b7 &nbsp; &nbsp; &nbsp; &nbsp; mniejsze ryzyko wdro\u017ceniowe,<\/p>\n\n\n\n<p>\u00b7 &nbsp; &nbsp; &nbsp; &nbsp; \u0142atwe przywracanie poprzedniej wersji \u2013 slow rollback.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-wdra-anie-niebiesko-zielone-blue-green-deployment-pattern\"><strong>Wdra\u017canie niebiesko-zielone (<\/strong><strong>blue\/green deployment pattern)<\/strong><\/h3>\n\n\n\n<p>Ten model zak\u0142ada wykonanie dw\u00f3ch identycznych wdro\u017ce\u0144. Diagram zaznaczony na rysunku kolorem niebieskim obrazuje aktualn\u0105 wersj\u0119 aplikacji, podczas gdy zielony jest wersj\u0105 now\u0105. Na etapie pocz\u0105tkowym dost\u0119pna jest tylko pierwsza wersja, do kt\u00f3rej kierowany jest ruch. W mi\u0119dzyczasie dokonujemy wdro\u017cenia i testowania wersji zielonej. W momencie, w kt\u00f3rym testy ko\u0144cz\u0105 si\u0119 sukcesem nast\u0119puje przekierowanie ruchu do nowej wersji.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"706\" src=\"https:\/\/fotc.com\/app\/uploads\/2023\/05\/Screenshot-40-2-1024x706.png\" alt=\"\" class=\"wp-image-115503\" srcset=\"https:\/\/fotc.com\/app\/uploads\/2023\/05\/Screenshot-40-2-1024x706.png 1024w, https:\/\/fotc.com\/app\/uploads\/2023\/05\/Screenshot-40-2-300x207.png 300w, https:\/\/fotc.com\/app\/uploads\/2023\/05\/Screenshot-40-2-768x529.png 768w, https:\/\/fotc.com\/app\/uploads\/2023\/05\/Screenshot-40-2-123x85.png 123w, https:\/\/fotc.com\/app\/uploads\/2023\/05\/Screenshot-40-2-142x98.png 142w, https:\/\/fotc.com\/app\/uploads\/2023\/05\/Screenshot-40-2-254x175.png 254w, https:\/\/fotc.com\/app\/uploads\/2023\/05\/Screenshot-40-2-409x282.png 409w, https:\/\/fotc.com\/app\/uploads\/2023\/05\/Screenshot-40-2-266x183.png 266w, https:\/\/fotc.com\/app\/uploads\/2023\/05\/Screenshot-40-2-26x18.png 26w, https:\/\/fotc.com\/app\/uploads\/2023\/05\/Screenshot-40-2.png 1029w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>W przypadku wyboru tej \u015bcie\u017cki wdro\u017cenia<strong> mo\u017cna r\u00f3wnie\u017c zachowa\u0107 star\u0105 wersj\u0119, pozostawiaj\u0105c opcj\u0119 ewentualnego wycofania si\u0119 w przysz\u0142o\u015bci<\/strong>. Mo\u017cna te\u017c j\u0105 usun\u0105\u0107. Innym wariantem jest wykorzystanie niebieskiego \u015brodowiska do wdra\u017cania w przysz\u0142o\u015bci kolejnej wersji. W tym przypadku obszary zaznaczone na zielono b\u0119d\u0105 pe\u0142ni\u0142y rol\u0119 aktualnej wersji, a te niebieskie stan\u0105 si\u0119 nowym, testowanym i wdra\u017canym rozwi\u0105zaniem.<\/p>\n\n\n\n<p>Podobnie jak w przypadku wzorca krocz\u0105cego<strong> unikamy przestoj\u00f3w w dzia\u0142aniu aplikacji.<\/strong> Natomiast w przypadku problem\u00f3w i konieczno\u015bci odtworzenia poprzedniej wersji, rolleback jest o wiele szybszy. Sprowadza si\u0119 do czasu potrzebnego na przekierowanie ruchu z obszaru \u015brodowiska zielonego na niebieskie. Zastosowanie separacji \u015brodowiskowej ma jeszcze jedn\u0105 korzy\u015b\u0107 \u2013 r\u00f3wnoleg\u0142e uruchomienie wdro\u017cenia zielonego nie wp\u0142ynie na zasoby obs\u0142uguj\u0105ce \u015brodowisko niebieskie.<\/p>\n\n\n\n<p>Wyb\u00f3r tego wariantu zwi\u0105zany jest jednak z <strong>generowaniem wi\u0119kszych koszt\u00f3w operacyjnych,<\/strong> gdy\u017c wymusza utrzymywanie zduplikowanych \u015brodowisk z identyczn\u0105 infrastruktur\u0105.<\/p>\n\n\n\n<p>O ile pod wzgl\u0119dem czasu trwania prze\u0142\u0105czenie pomi\u0119dzy wersjami \u015brodowiska nie stanowi problemu, to konieczne jest spe\u0142nienie jednego dodatkowego warunku \u2013 upewnienia si\u0119, \u017ce obie wersje mog\u0105 korzysta\u0107 ze schematu bazy datastore oraz jej danych. W tym przypadku kompatybilno\u015b\u0107 wsteczna jest niezb\u0119dna aby bezproblemowo prze\u0142\u0105cza\u0107 si\u0119 mi\u0119dzy wersjami.<\/p>\n\n\n\n<p><strong>Benefity wdra\u017cania niebiesko-zielonego:<\/strong><\/p>\n\n\n\n<p>\u00b7 &nbsp; &nbsp; &nbsp; &nbsp; brak przestoj\u00f3w,<\/p>\n\n\n\n<p>\u00b7 &nbsp; &nbsp; &nbsp; &nbsp; \u0142atwe i szybkie przywracanie poprzedniej wersji \u2013 instant rollback.<\/p>\n\n\n\n<p>\u00b7 &nbsp; &nbsp; &nbsp; &nbsp; separacja \u015brodowisk.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-por-wnanie-wzorc-w-wdra-ania\">Por\u00f3wnanie wzorc\u00f3w wdra\u017cania<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Wzorzec wdra\u017cania&nbsp;<\/strong><\/td><td><strong>Brak przestoj\u00f3w (zero downtime)<\/strong><\/td><td><strong>Czas trwania rollbacku<\/strong><\/td><td><strong>Wp\u0142yw na hardware i koszty chmury<\/strong><\/td><\/tr><tr><td>Recreate<\/td><td>x<\/td><td>Szybki, ale uci\u0105\u017cliwy<\/td><td>Brak dodatkowych wymaga\u0144<\/td><\/tr><tr><td>Rolling udpate<\/td><td>\u2713<\/td><td>Wolny<\/td><td>Mo\u017ce wymaga\u0107 dodatkowej konfiguracji<\/td><\/tr><tr><td>Blue\/green<\/td><td>\u2713<\/td><td>B\u0142yskawiczny<\/td><td>Konieczno\u015b\u0107 jednoczesnego utrzymania obu \u015brodowisk<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-bezproblemowa-aktualizacja-aplikacji-z-partnerem-google-cloud\"><strong>Bezproblemowa aktualizacja aplikacji z partnerem Google Cloud<\/strong><\/h2>\n\n\n\n<p>W drodze do zwi\u0119kszenia wydajno\u015bci aplikacji mo\u017cesz napotka\u0107 szereg przeszk\u00f3d, zau\u0142k\u00f3w i dr\u00f3g na skr\u00f3ty, kt\u00f3re ostatecznie mog\u0105 wp\u0142yn\u0105\u0107 na zwi\u0119kszenie koszt\u00f3w operacyjnych. Aby tego unikn\u0105\u0107 warto skorzysta\u0107 z profesjonalnej pomocy partnera <a href=\"https:\/\/fotc.com\/pl\/google-cloud-platform\/\" target=\"_blank\" aria-label=\"Google Cloud (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">Google Cloud<\/a>, kt\u00f3ry przeprowadzi\u0107 Ci\u0119 przez ca\u0142y proces aktualizacji. W FOTC posiadamy wiedz\u0119 i do\u015bwiadczenie poparte licznymi certyfikatami, takimi jak m.in. Cloud Engineer czy Cloud Architect.<\/p>\n\n\n<div class=\"bg-yellow banners mt-4 mb-4\">\r\n  <div class=\"container \">\r\n    <div class=\"row sw\">\r\n        <div class=\"col-md-7 sw col-12 mb-md-0\">\r\n        <span style=\"margin-bottom: 1rem;\r\n    font-weight: 500;margin-top: 25px;\r\n    line-height: 1.1;\r\n    font-size: 2rem; display: block; color:#fff\">Chcesz zaktualizowa\u0107 aplikacj\u0119 w chmurze?<\/span>\r\n        <\/div>\r\n        <div class=\"col-md-5 sw sww\">\r\n        <img decoding=\"async\" style=\"margin-top:25px;\" src=\"\/app\/uploads\/2023\/02\/FOTC-LOGO-WWW-RGB-RED-2.png\">\r\n        <\/div>\r\n        <\/div>\r\n        <div class=\"row\">\r\n          <div class=\"col-md-7\"><p style=\"color:#fff\">Skontaktuj si\u0119 z nami &#8211; pomo\u017cemy Ci w wyborze najbardziej efektywnego rozwi\u0105zania<\/p><\/div>\r\n        <div class=\"col-md-5 col-12 text-cent-right\">\r\n        <a class=\"newbtn bannerbtn\" href=\"https:\/\/fotc.com\/pl\/kontakt\/\">Napisz do nas<\/a>\r\n        \r\n        <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\n\n\n<p>Pomo\u017cemy Ci zbudowa\u0107 i rozwin\u0105\u0107 produkty w chmurze, efektywnie korzystaj\u0105c z zasob\u00f3w Google Cloud i maksymalnie redukuj\u0105c koszty. Porozmawiamy o charakterystyce Twojej aplikacji i wybierzemy najbardziej optymalny wzorzec aktualizacji.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Aplikacje wymagaj\u0105 aktualizacji. Wdro\u017ceniu nowej wersji towarzysz\u0105 wyzwania takie jak mo\u017cliwo\u015b\u0107 pojawienia si\u0119 przestoj\u00f3w, czy te\u017c incydent\u00f3w ko\u0144cz\u0105cych si\u0119 nieskuteczn\u0105 implementacj\u0105. W tym artykule pokazujemy jak zminimalizowa\u0107 liczb\u0119 b\u0142\u0119d\u00f3w, zar\u00f3wno ludzkich jak i procesowych, czego skutkiem b\u0119dzie skuteczne i powtarzalne wdro\u017cenie. Jakie s\u0105 cele biznesowe wdro\u017cenia? W zale\u017cno\u015bci od za\u0142o\u017conego celu biznesowego, mamy do czynienia&#8230;<\/p>\n","protected":false},"author":26,"featured_media":114191,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":4,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","footnotes":""},"categories":[560],"tags":[],"class_list":["post-114174","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-google-cloud-platform-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Jak unikn\u0105\u0107 przestoj\u00f3w przy nowej funkcji w aplikacji - FOTC<\/title>\n<meta name=\"description\" content=\"Wdro\u017ceniu nowej wersji aplikacji towarzysz\u0105 wyzwania takie jak przestoje i b\u0142\u0119dy. W tym artykule pokazujemy jak mo\u017cna je zminimalizowa\u0107.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fotc.com\/pl\/blog\/jak-uniknac-przestojow-przy-wdrazaniu-nowej-funkcji-w-aplikacji\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Jak unikn\u0105\u0107 przestoj\u00f3w przy wdra\u017caniu nowej funkcji w aplikacji?\" \/>\n<meta property=\"og:description\" content=\"Wdro\u017ceniu nowej wersji aplikacji towarzysz\u0105 wyzwania takie jak przestoje i b\u0142\u0119dy. W tym artykule pokazujemy jak mo\u017cna je zminimalizowa\u0107.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fotc.com\/pl\/blog\/jak-uniknac-przestojow-przy-wdrazaniu-nowej-funkcji-w-aplikacji\/\" \/>\n<meta property=\"og:site_name\" content=\"FOTC\" \/>\n<meta property=\"article:published_time\" content=\"2023-05-12T10:54:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-11-27T08:32:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fotc.com\/app\/uploads\/2023\/05\/BLOG_GCP_PL-15.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Micha\u0142 Krzak\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fotc.com\/pl\/blog\/jak-uniknac-przestojow-przy-wdrazaniu-nowej-funkcji-w-aplikacji\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fotc.com\/pl\/blog\/jak-uniknac-przestojow-przy-wdrazaniu-nowej-funkcji-w-aplikacji\/\"},\"author\":{\"name\":\"Micha\u0142 Krzak\",\"@id\":\"https:\/\/fotc.com\/pl\/#\/schema\/person\/1ca9f7720d5a8f0687904566e1da0b4f\"},\"headline\":\"Jak unikn\u0105\u0107 przestoj\u00f3w przy wdra\u017caniu nowej funkcji w aplikacji?\",\"datePublished\":\"2023-05-12T10:54:05+00:00\",\"dateModified\":\"2023-11-27T08:32:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fotc.com\/pl\/blog\/jak-uniknac-przestojow-przy-wdrazaniu-nowej-funkcji-w-aplikacji\/\"},\"wordCount\":1366,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/fotc.com\/pl\/blog\/jak-uniknac-przestojow-przy-wdrazaniu-nowej-funkcji-w-aplikacji\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fotc.com\/app\/uploads\/2023\/05\/BLOG_GCP_PL-15.png\",\"articleSection\":[\"Google Cloud\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fotc.com\/pl\/blog\/jak-uniknac-przestojow-przy-wdrazaniu-nowej-funkcji-w-aplikacji\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fotc.com\/pl\/blog\/jak-uniknac-przestojow-przy-wdrazaniu-nowej-funkcji-w-aplikacji\/\",\"url\":\"https:\/\/fotc.com\/pl\/blog\/jak-uniknac-przestojow-przy-wdrazaniu-nowej-funkcji-w-aplikacji\/\",\"name\":\"Jak unikn\u0105\u0107 przestoj\u00f3w przy nowej funkcji w aplikacji - FOTC\",\"isPartOf\":{\"@id\":\"https:\/\/fotc.com\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fotc.com\/pl\/blog\/jak-uniknac-przestojow-przy-wdrazaniu-nowej-funkcji-w-aplikacji\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fotc.com\/pl\/blog\/jak-uniknac-przestojow-przy-wdrazaniu-nowej-funkcji-w-aplikacji\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fotc.com\/app\/uploads\/2023\/05\/BLOG_GCP_PL-15.png\",\"datePublished\":\"2023-05-12T10:54:05+00:00\",\"dateModified\":\"2023-11-27T08:32:31+00:00\",\"author\":{\"@id\":\"https:\/\/fotc.com\/pl\/#\/schema\/person\/1ca9f7720d5a8f0687904566e1da0b4f\"},\"description\":\"Wdro\u017ceniu nowej wersji aplikacji towarzysz\u0105 wyzwania takie jak przestoje i b\u0142\u0119dy. W tym artykule pokazujemy jak mo\u017cna je zminimalizowa\u0107.\",\"breadcrumb\":{\"@id\":\"https:\/\/fotc.com\/pl\/blog\/jak-uniknac-przestojow-przy-wdrazaniu-nowej-funkcji-w-aplikacji\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fotc.com\/pl\/blog\/jak-uniknac-przestojow-przy-wdrazaniu-nowej-funkcji-w-aplikacji\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/fotc.com\/pl\/blog\/jak-uniknac-przestojow-przy-wdrazaniu-nowej-funkcji-w-aplikacji\/#primaryimage\",\"url\":\"https:\/\/fotc.com\/app\/uploads\/2023\/05\/BLOG_GCP_PL-15.png\",\"contentUrl\":\"https:\/\/fotc.com\/app\/uploads\/2023\/05\/BLOG_GCP_PL-15.png\",\"width\":1200,\"height\":628},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fotc.com\/pl\/blog\/jak-uniknac-przestojow-przy-wdrazaniu-nowej-funkcji-w-aplikacji\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fotc.com\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Google Cloud\",\"item\":\"https:\/\/fotc.com\/pl\/blog\/category\/google-cloud-platform-pl\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Jak unikn\u0105\u0107 przestoj\u00f3w przy wdra\u017caniu nowej funkcji w aplikacji?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fotc.com\/pl\/#website\",\"url\":\"https:\/\/fotc.com\/pl\/\",\"name\":\"FOTC\",\"description\":\"Partner Google Cloud\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fotc.com\/pl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/fotc.com\/pl\/#\/schema\/person\/1ca9f7720d5a8f0687904566e1da0b4f\",\"name\":\"Micha\u0142 Krzak\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/2e37dddec23b250c0a434fc7a70b742276d7c949d65e09ecbd9751a049ef8e24?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2e37dddec23b250c0a434fc7a70b742276d7c949d65e09ecbd9751a049ef8e24?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2e37dddec23b250c0a434fc7a70b742276d7c949d65e09ecbd9751a049ef8e24?s=96&d=mm&r=g\",\"caption\":\"Micha\u0142 Krzak\"},\"description\":\"Copywriter, dziennikarz, content marketer. Od 2005 roku tworzy artyku\u0142y , teksty blogowe i raporty dla bran\u017cy nowoczesnych technologii, druku 3D oraz logistyki.\",\"url\":\"https:\/\/fotc.com\/pl\/blog\/author\/michal-krzak\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Jak unikn\u0105\u0107 przestoj\u00f3w przy nowej funkcji w aplikacji - FOTC","description":"Wdro\u017ceniu nowej wersji aplikacji towarzysz\u0105 wyzwania takie jak przestoje i b\u0142\u0119dy. W tym artykule pokazujemy jak mo\u017cna je zminimalizowa\u0107.","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:\/\/fotc.com\/pl\/blog\/jak-uniknac-przestojow-przy-wdrazaniu-nowej-funkcji-w-aplikacji\/","og_locale":"pl_PL","og_type":"article","og_title":"Jak unikn\u0105\u0107 przestoj\u00f3w przy wdra\u017caniu nowej funkcji w aplikacji?","og_description":"Wdro\u017ceniu nowej wersji aplikacji towarzysz\u0105 wyzwania takie jak przestoje i b\u0142\u0119dy. W tym artykule pokazujemy jak mo\u017cna je zminimalizowa\u0107.","og_url":"https:\/\/fotc.com\/pl\/blog\/jak-uniknac-przestojow-przy-wdrazaniu-nowej-funkcji-w-aplikacji\/","og_site_name":"FOTC","article_published_time":"2023-05-12T10:54:05+00:00","article_modified_time":"2023-11-27T08:32:31+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/fotc.com\/app\/uploads\/2023\/05\/BLOG_GCP_PL-15.png","type":"image\/png"}],"author":"Micha\u0142 Krzak","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fotc.com\/pl\/blog\/jak-uniknac-przestojow-przy-wdrazaniu-nowej-funkcji-w-aplikacji\/#article","isPartOf":{"@id":"https:\/\/fotc.com\/pl\/blog\/jak-uniknac-przestojow-przy-wdrazaniu-nowej-funkcji-w-aplikacji\/"},"author":{"name":"Micha\u0142 Krzak","@id":"https:\/\/fotc.com\/pl\/#\/schema\/person\/1ca9f7720d5a8f0687904566e1da0b4f"},"headline":"Jak unikn\u0105\u0107 przestoj\u00f3w przy wdra\u017caniu nowej funkcji w aplikacji?","datePublished":"2023-05-12T10:54:05+00:00","dateModified":"2023-11-27T08:32:31+00:00","mainEntityOfPage":{"@id":"https:\/\/fotc.com\/pl\/blog\/jak-uniknac-przestojow-przy-wdrazaniu-nowej-funkcji-w-aplikacji\/"},"wordCount":1366,"commentCount":0,"image":{"@id":"https:\/\/fotc.com\/pl\/blog\/jak-uniknac-przestojow-przy-wdrazaniu-nowej-funkcji-w-aplikacji\/#primaryimage"},"thumbnailUrl":"https:\/\/fotc.com\/app\/uploads\/2023\/05\/BLOG_GCP_PL-15.png","articleSection":["Google Cloud"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fotc.com\/pl\/blog\/jak-uniknac-przestojow-przy-wdrazaniu-nowej-funkcji-w-aplikacji\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fotc.com\/pl\/blog\/jak-uniknac-przestojow-przy-wdrazaniu-nowej-funkcji-w-aplikacji\/","url":"https:\/\/fotc.com\/pl\/blog\/jak-uniknac-przestojow-przy-wdrazaniu-nowej-funkcji-w-aplikacji\/","name":"Jak unikn\u0105\u0107 przestoj\u00f3w przy nowej funkcji w aplikacji - FOTC","isPartOf":{"@id":"https:\/\/fotc.com\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fotc.com\/pl\/blog\/jak-uniknac-przestojow-przy-wdrazaniu-nowej-funkcji-w-aplikacji\/#primaryimage"},"image":{"@id":"https:\/\/fotc.com\/pl\/blog\/jak-uniknac-przestojow-przy-wdrazaniu-nowej-funkcji-w-aplikacji\/#primaryimage"},"thumbnailUrl":"https:\/\/fotc.com\/app\/uploads\/2023\/05\/BLOG_GCP_PL-15.png","datePublished":"2023-05-12T10:54:05+00:00","dateModified":"2023-11-27T08:32:31+00:00","author":{"@id":"https:\/\/fotc.com\/pl\/#\/schema\/person\/1ca9f7720d5a8f0687904566e1da0b4f"},"description":"Wdro\u017ceniu nowej wersji aplikacji towarzysz\u0105 wyzwania takie jak przestoje i b\u0142\u0119dy. W tym artykule pokazujemy jak mo\u017cna je zminimalizowa\u0107.","breadcrumb":{"@id":"https:\/\/fotc.com\/pl\/blog\/jak-uniknac-przestojow-przy-wdrazaniu-nowej-funkcji-w-aplikacji\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fotc.com\/pl\/blog\/jak-uniknac-przestojow-przy-wdrazaniu-nowej-funkcji-w-aplikacji\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/fotc.com\/pl\/blog\/jak-uniknac-przestojow-przy-wdrazaniu-nowej-funkcji-w-aplikacji\/#primaryimage","url":"https:\/\/fotc.com\/app\/uploads\/2023\/05\/BLOG_GCP_PL-15.png","contentUrl":"https:\/\/fotc.com\/app\/uploads\/2023\/05\/BLOG_GCP_PL-15.png","width":1200,"height":628},{"@type":"BreadcrumbList","@id":"https:\/\/fotc.com\/pl\/blog\/jak-uniknac-przestojow-przy-wdrazaniu-nowej-funkcji-w-aplikacji\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fotc.com\/pl\/"},{"@type":"ListItem","position":2,"name":"Google Cloud","item":"https:\/\/fotc.com\/pl\/blog\/category\/google-cloud-platform-pl\/"},{"@type":"ListItem","position":3,"name":"Jak unikn\u0105\u0107 przestoj\u00f3w przy wdra\u017caniu nowej funkcji w aplikacji?"}]},{"@type":"WebSite","@id":"https:\/\/fotc.com\/pl\/#website","url":"https:\/\/fotc.com\/pl\/","name":"FOTC","description":"Partner Google Cloud","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fotc.com\/pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Person","@id":"https:\/\/fotc.com\/pl\/#\/schema\/person\/1ca9f7720d5a8f0687904566e1da0b4f","name":"Micha\u0142 Krzak","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/secure.gravatar.com\/avatar\/2e37dddec23b250c0a434fc7a70b742276d7c949d65e09ecbd9751a049ef8e24?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/2e37dddec23b250c0a434fc7a70b742276d7c949d65e09ecbd9751a049ef8e24?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2e37dddec23b250c0a434fc7a70b742276d7c949d65e09ecbd9751a049ef8e24?s=96&d=mm&r=g","caption":"Micha\u0142 Krzak"},"description":"Copywriter, dziennikarz, content marketer. Od 2005 roku tworzy artyku\u0142y , teksty blogowe i raporty dla bran\u017cy nowoczesnych technologii, druku 3D oraz logistyki.","url":"https:\/\/fotc.com\/pl\/blog\/author\/michal-krzak\/"}]}},"_links":{"self":[{"href":"https:\/\/fotc.com\/pl\/wp-json\/wp\/v2\/posts\/114174","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fotc.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fotc.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fotc.com\/pl\/wp-json\/wp\/v2\/users\/26"}],"replies":[{"embeddable":true,"href":"https:\/\/fotc.com\/pl\/wp-json\/wp\/v2\/comments?post=114174"}],"version-history":[{"count":0,"href":"https:\/\/fotc.com\/pl\/wp-json\/wp\/v2\/posts\/114174\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fotc.com\/pl\/wp-json\/wp\/v2\/media\/114191"}],"wp:attachment":[{"href":"https:\/\/fotc.com\/pl\/wp-json\/wp\/v2\/media?parent=114174"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fotc.com\/pl\/wp-json\/wp\/v2\/categories?post=114174"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fotc.com\/pl\/wp-json\/wp\/v2\/tags?post=114174"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}