{"id":33504,"date":"2019-10-31T21:52:58","date_gmt":"2019-10-31T18:52:58","guid":{"rendered":"https:\/\/prohoster.info\/blog\/rukovodstvo-dlya-chajnikov-sozdanie-tsepochek-devops-s-pomoshhyu-instrumentov-s-otkrytym-ishodnym-kodom\/"},"modified":"2019-10-31T21:52:58","modified_gmt":"2019-10-31T18:52:58","slug":"rukovodstvo-dlya-chajnikov-sozdanie-tsepochek-devops-s-pomoshhyu-instrumentov-s-otkrytym-ishodnym-kodom","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/rukovodstvo-dlya-chajnikov-sozdanie-tsepochek-devops-s-pomoshhyu-instrumentov-s-otkrytym-ishodnym-kodom","title":{"rendered":"Poradnik dla pocz\u0105tkuj\u0105cych: tworzenie \u0142a\u0144cuch\u00f3w DevOps za pomoc\u0105 narz\u0119dzi open source","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Poradnik dla pocz\u0105tkuj\u0105cych: tworzenie \u0142a\u0144cuch\u00f3w DevOps za pomoc\u0105 narz\u0119dzi open source\" src=\"\/wp-content\/uploads\/2019\/05\/2f9db2f057c4bcb3f2e57a484dd30c8c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<em>Stw\u00f3rz sw\u00f3j pierwszy \u0142a\u0144cuch DevOps w pi\u0119ciu krokach dla nowicjuszy.<\/em><\/p>\n<p><\/p>\n<p>DevOps sta\u0142 si\u0119 remedium na zbyt wolne, rozproszone i inne problematyczne procesy rozwoju. Wymaga jednak podstawowej znajomo\u015bci DevOps. Om\u00f3wimy tu poj\u0119cia takie jak \u0142a\u0144cuch DevOps i jak go stworzy\u0107 w pi\u0119ciu krokach. To nie jest pe\u0142ny przewodnik, a jedynie \u201eszkic\u201d, kt\u00f3ry mo\u017cna rozwija\u0107. Zaczniemy od historii.<\/p>\n<p><\/p>\n<h3 id=\"moe-znakomstvo-s-devops\">Moje pierwsze kroki z DevOps<\/h3>\n<p><\/p>\n<p>Kiedy\u015b pracowa\u0142em z chmurami w Citi Group i opracowywa\u0142em aplikacj\u0119 webow\u0105 IaaS, aby zarz\u0105dza\u0107 chmur\u0105 infrastruktury Citi, ale zawsze ciekawi\u0142o mnie, jak optymalizowa\u0107 \u0142a\u0144cuch rozwoju i poprawia\u0107 kultur\u0119 w\u015br\u00f3d programist\u00f3w. Greg Lavender, nasz dyrektor technologiczny ds. architektury chmurowej i infrastruktury, poleci\u0142 mi ksi\u0105\u017ck\u0119 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.amazon.com\/dp\/B078Y98RG8\/\">Projekt \u201ePhoenix\u201d<\/a><\/noindex>. Doskonale wyja\u015bnia zasady DevOps, a czyta si\u0119 jak powie\u015b\u0107.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>W tabeli na odwrocie pokazano, jak cz\u0119sto firmy wprowadzaj\u0105 nowe wersje:<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/bf\/1e\/2_\/bf1e2_l0g8wnb5nojb1n5ruwlsi.png\"><img decoding=\"async\" alt=\"Poradnik dla pocz\u0105tkuj\u0105cych: tworzenie \u0142a\u0144cuch\u00f3w DevOps za pomoc\u0105 narz\u0119dzi open source\" src=\"\/wp-content\/uploads\/2019\/05\/a723283e54f7614b6b92eab78509985d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p>Jak Amazon, Google i Netflix s\u0105 w stanie tak cz\u0119sto aktualizowa\u0107? Odpowied\u017a jest prosta: zrozumieli, jak stworzy\u0107 niemal idealny \u0142a\u0144cuch DevOps.<\/p>\n<p><\/p>\n<p>W Citi wszystko wygl\u0105da\u0142o zupe\u0142nie inaczej, dop\u00f3ki nie przeszli\u015bmy na DevOps. Moja zesp\u00f3\u0142 mia\u0142 r\u00f3\u017cne \u015brodowiska, ale wdro\u017cenie na serwerze deweloperskim odbywa\u0142o si\u0119 r\u0119cznie. Wszyscy deweloperzy mieli dost\u0119p tylko do jednego serwera deweloperskiego opartego na IBM WebSphere Application Server Community Edition. Przy r\u00f3wnoczesnej pr\u00f3bie wdro\u017cenia serwer 'upada\u0142', a my musieli\u015bmy za ka\u017cdym razem 'bolesne' negocjowa\u0107 ze sob\u0105. Mieli\u015bmy te\u017c niewystarczaj\u0105ce pokrycie kodu testami, pracoch\u0142onny r\u0119czny proces wdro\u017cenia oraz \u017cadnej mo\u017cliwo\u015bci \u015bledzenia wdro\u017ce\u0144 kodu zwi\u0105zanych z jakim\u015b zadaniem lub wymaganiem klienta.<\/p>\n<p><\/p>\n<p>By\u0142o jasne, \u017ce musimy szybko co\u015b zrobi\u0107, wi\u0119c znalaz\u0142em koleg\u0119 o podobnych pogl\u0105dach. Postanowili\u015bmy razem stworzy\u0107 pierwsz\u0105 p\u0119tl\u0119 DevOps \u2014 on skonfigurowa\u0142 maszyn\u0119 wirtualn\u0105 oraz serwer aplikacji Tomcat, a ja zaj\u0105\u0142em si\u0119 Jenkins, integracj\u0105 z Atlassian Jira i BitBucket oraz pokrywaniem kodu testami. Projekt odni\u00f3s\u0142 sukces: ca\u0142kowicie zautomatyzowali\u015bmy proces tworzenia, osi\u0105gn\u0119li\u015bmy prawie 100% ci\u0105g\u0142o\u015bci pracy serwera deweloperskiego, mogli\u015bmy \u015bledzi\u0107 i poprawia\u0107 pokrycie kodu testami, a ga\u0142\u0105\u017a Git by\u0142a powi\u0105zana z wdro\u017ceniem i zadaniem w Jira. Co wi\u0119cej, prawie wszystkie narz\u0119dzia, kt\u00f3rymi budowali\u015bmy p\u0119tl\u0119 DevOps, by\u0142y otwartym oprogramowaniem.<\/p>\n<p><\/p>\n<p>W rzeczywisto\u015bci \u0142a\u0144cuch by\u0142 uproszczony, poniewa\u017c nawet nie stosowali\u015bmy zaawansowanych konfiguracji za pomoc\u0105 Jenkins czy Ansible. Ale nam si\u0119 uda\u0142o. Mo\u017ce to wynik zasady <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Pareto_principle\">Pareto<\/a><\/noindex> (znanej jako zasada 80\/20).<\/p>\n<p><\/p>\n<h3 id=\"kratkoe-opisanie-cepochki-devops-i-cicd\">Kr\u00f3tkie streszczenie p\u0119tli DevOps oraz CI\/CD<\/h3>\n<p><\/p>\n<p>DevOps ma r\u00f3\u017cne definicje. Podobnie jak Agile, obejmuje r\u00f3\u017cne dyscypliny. Jednak wi\u0119kszo\u015b\u0107 zgadza si\u0119 z nast\u0119puj\u0105c\u0105 definicj\u0105: DevOps to metoda, lub cykl \u017cycia, rozwoju oprogramowania, kt\u00f3rego g\u0142\u00f3wn\u0105 zasad\u0105 jest stworzenie kultury, w kt\u00f3rej programi\u015bci i inni pracownicy \u201es\u0105 na tej samej fali\u201d, prace r\u0119czne s\u0105 zautomatyzowane, ka\u017cdy koncentruje si\u0119 na tym, co robi najlepiej, wzrasta cz\u0119stotliwo\u015b\u0107 dostaw, zwi\u0119ksza si\u0119 wydajno\u015b\u0107 pracy i elastyczno\u015b\u0107.<\/p>\n<p><\/p>\n<p>Chocia\u017c samych narz\u0119dzi nie wystarcza do stworzenia \u015brodowiska DevOps, s\u0105 one niezb\u0119dne. Najwa\u017cniejszym z nich jest ci\u0105g\u0142a integracja i ci\u0105g\u0142e dostarczanie (CI\/CD). W procesie dla ka\u017cdego \u015brodowiska istniej\u0105 r\u00f3\u017cne etapy (na przyk\u0142ad, DEV (rozw\u00f3j), INT (integracja), TST (testowanie), QA (kontrola jako\u015bci), UAT (testowanie akceptacyjne przez u\u017cytkownik\u00f3w), STG (przygotowanie), PROD (u\u017cytkowanie)), zadania r\u0119czne s\u0105 zautomatyzowane, programi\u015bci mog\u0105 pisa\u0107 jako\u015bciowy kod, dostarcza\u0107 go i \u0142atwo si\u0119 przystosowywa\u0107.<\/p>\n<p><\/p>\n<p>Ten artyku\u0142 opisuje, jak w pi\u0119ciu krokach stworzy\u0107 \u0142a\u0144cuch DevOps, jak pokazano na poni\u017cszym obrazku, przy u\u017cyciu narz\u0119dzi open-source.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/da\/zq\/qo\/dazqqoyxn3vv-o6p9crpsm9m_eu.jpeg\"><img decoding=\"async\" alt=\"Poradnik dla pocz\u0105tkuj\u0105cych: tworzenie \u0142a\u0144cuch\u00f3w DevOps za pomoc\u0105 narz\u0119dzi open source\" src=\"\/wp-content\/uploads\/2019\/05\/da2a6d8ed039f0b8e1ea8e1ba562696d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p>Przejd\u017amy do rzeczy.<\/p>\n<p><\/p>\n<h3 id=\"shag-1-platforma-cicd\">Krok 1: Platforma CI\/CD<\/h3>\n<p><\/p>\n<p>Na pocz\u0105tek potrzebujesz narz\u0119dzia CI\/CD. Jenkins to otwarte narz\u0119dzie CI\/CD napisane w Javie, licencjonowane na podstawie MIT, kt\u00f3re zapocz\u0105tkowa\u0142o popularno\u015b\u0107 ruchu DevOps i sta\u0142o si\u0119 de facto standardem dla CI\/CD.<\/p>\n<p><\/p>\n<p>Czym jest Jenkins? Wyobra\u017a sobie, \u017ce masz magiczny pilot do r\u00f3\u017cnych us\u0142ug i narz\u0119dzi. Samo narz\u0119dzie CI\/CD, takie jak Jenkins, jest bezu\u017cyteczne, ale w po\u0142\u0105czeniu z r\u00f3\u017cnymi narz\u0119dziami i us\u0142ugami staje si\u0119 wszechmocne.<\/p>\n<p><\/p>\n<p>Poza Jenkins istnieje wiele innych otwartych narz\u0119dzi, wybierz dowolne. <\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/fb\/ov\/dd\/fbovdd2kb_e8jkj1atm1ycuw3so.png\"><img decoding=\"async\" alt=\"Poradnik dla pocz\u0105tkuj\u0105cych: tworzenie \u0142a\u0144cuch\u00f3w DevOps za pomoc\u0105 narz\u0119dzi open source\" src=\"\/wp-content\/uploads\/2019\/05\/2bbe6af719b90da0eb0d367aae66d779.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p>Oto jak wygl\u0105da proces DevOps z narz\u0119dziem CI\/CD<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/es\/-3\/dj\/es-3djmmligdmtcuvicigopzt8e.jpeg\"><img decoding=\"async\" alt=\"Poradnik dla pocz\u0105tkuj\u0105cych: tworzenie \u0142a\u0144cuch\u00f3w DevOps za pomoc\u0105 narz\u0119dzi open source\" src=\"\/wp-content\/uploads\/2019\/05\/2410013c9e6030596a59f3ed7ae3a7e7.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p>Masz na localhost narz\u0119dzie CI\/CD, ale na razie nie ma nic do zrobienia. Przejd\u017amy do nast\u0119pnego kroku.<\/p>\n<p><\/p>\n<h3 id=\"shag-2-upravlenie-versiyami\">Krok 2: zarz\u0105dzanie wersjami<\/h3>\n<p><\/p>\n<p>Najlepszy (i chyba najprostszy) spos\u00f3b na sprawdzenie mo\u017cliwo\u015bci narz\u0119dzia CI\/CD to zintegrowanie go z narz\u0119dziem do zarz\u0105dzania wersjami (source control management, SCM). Dlaczego zarz\u0105dzanie wersjami jest potrzebne? Za\u0142\u00f3\u017cmy, \u017ce tworzysz aplikacj\u0119. Programujesz j\u0105 w Java, Pythonie, C++, Go, Ruby, JavaScript lub w innym j\u0119zyku, kt\u00f3rych jest mn\u00f3stwo. To, co piszesz, nazywa si\u0119 kodem \u017ar\u00f3d\u0142owym. Na pocz\u0105tku, zw\u0142aszcza je\u015bli pracujesz sam, mo\u017cesz przechowywa\u0107 wszystko w lokalnym katalogu. Jednak gdy projekt ro\u015bnie i do\u0142\u0105cza do niego wi\u0119cej os\u00f3b, potrzebujesz sposobu na dzielenie si\u0119 zmianami w kodzie, unikaj\u0105c jednocze\u015bnie konflikt\u00f3w przy scalaniu. Musisz tak\u017ce mie\u0107 mo\u017cliwo\u015b\u0107 przywracania wcze\u015bniejszych wersji bez korzystania z kopii zapasowych i metody kopiuj-wklej dla plik\u00f3w z kodem.<\/p>\n<p><\/p>\n<p>I tutaj nie mo\u017cna si\u0119 obej\u015b\u0107 bez SCM. SCM przechowuje kod w repozytoriach, zarz\u0105dza jego wersjami i koordynuje go w\u015br\u00f3d programist\u00f3w.<\/p>\n<p><\/p>\n<p>Jest wiele narz\u0119dzi SCM, ale standardem de facto sta\u0142 si\u0119 zas\u0142u\u017cenie Git. Polecam korzysta\u0107 z niego, ale s\u0105 tak\u017ce inne opcje.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Poradnik dla pocz\u0105tkuj\u0105cych: tworzenie \u0142a\u0144cuch\u00f3w DevOps za pomoc\u0105 narz\u0119dzi open source\" src=\"\/wp-content\/uploads\/2019\/05\/37555a476c27f7066e5648b9e9e4d90b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tak wygl\u0105da pipeline DevOps po dodaniu SCM.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/am\/4o\/39\/am4o39ooera5tweytt3uyh80wlu.jpeg\"><img decoding=\"async\" alt=\"Poradnik dla pocz\u0105tkuj\u0105cych: tworzenie \u0142a\u0144cuch\u00f3w DevOps za pomoc\u0105 narz\u0119dzi open source\" src=\"\/wp-content\/uploads\/2019\/05\/040819b00dc608a9131856dd6a7d4a19.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p>Narz\u0119dzie CI\/CD mo\u017ce automatyzowa\u0107 przesy\u0142anie i pobieranie kodu \u017ar\u00f3d\u0142owego oraz wsp\u00f3\u0142prac\u0119 w zespole. Nie\u017ale, prawda? Ale jak teraz przekszta\u0142ci\u0107 to w dzia\u0142aj\u0105c\u0105 aplikacj\u0119, ukochan\u0105 przez miliardy u\u017cytkownik\u00f3w?<\/p>\n<p><\/p>\n<h3 id=\"shag-3-instrument-avtomatizacii-sborki\">Krok 3: narz\u0119dzie do automatyzacji budowy<\/h3>\n<p><\/p>\n<p>Wszystko przebiega zgodnie z planem. Mo\u017cesz przesy\u0142a\u0107 kod i wprowadza\u0107 zmiany w systemie kontroli wersji, a tak\u017ce zaprosi\u0107 znajomych do wsp\u00f3\u0142pracy. Ale na razie nie masz aplikacji. Aby to by\u0142o aplikacj\u0105 webow\u0105, musi zosta\u0107 skompilowana i umieszczona w paczce do dostarczenia lub uruchomiona jako plik wykonywalny. (J\u0119zyki interpretowane, takie jak JavaScript czy PHP, nie wymagaj\u0105 kompilacji.)<\/p>\n<p><\/p>\n<p>U\u017cyj narz\u0119dzia do automatyzacji budowy. Niezale\u017cnie od tego, jakie narz\u0119dzie wybierzesz, b\u0119dzie ono zbiera\u0107 kod w odpowiednim formacie i automatyzowa\u0107 czyszczenie, kompilacj\u0119, testowanie oraz dostarczanie. Narz\u0119dzia budowy r\u00f3\u017cni\u0105 si\u0119 w zale\u017cno\u015bci od j\u0119zyka, ale zazwyczaj korzysta si\u0119 z kilku popularnych opcji o otwartym kodzie \u017ar\u00f3d\u0142owym.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Poradnik dla pocz\u0105tkuj\u0105cych: tworzenie \u0142a\u0144cuch\u00f3w DevOps za pomoc\u0105 narz\u0119dzi open source\" src=\"\/wp-content\/uploads\/2019\/05\/cc6e958a82ac0676429da6c48e66910f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u015awietnie! Teraz dodajmy pliki konfiguracyjne narz\u0119dzia do automatyzacji budowy do systemu kontroli wersji, aby narz\u0119dzie CI\/CD mog\u0142o je skompilowa\u0107.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/gl\/t1\/ii\/glt1ii73wdg2roq5fus-fzd0ury.jpeg\"><img decoding=\"async\" alt=\"Poradnik dla pocz\u0105tkuj\u0105cych: tworzenie \u0142a\u0144cuch\u00f3w DevOps za pomoc\u0105 narz\u0119dzi open source\" src=\"\/wp-content\/uploads\/2019\/05\/bba539d128425e7e3ddacdc6028d3604.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p>Wygl\u0105da na to, \u017ce wszystko w porz\u0105dku. Ale dok\u0105d teraz to wszystko wdro\u017cy\u0107?<\/p>\n<p><\/p>\n<h3 id=\"shag-4-server-veb-prilozheniy\">Krok 4: serwer aplikacji webowej<\/h3>\n<p><\/p>\n<p>Macie spakowany plik, kt\u00f3ry mo\u017cna uruchomi\u0107 lub wdro\u017cy\u0107. Aby aplikacja naprawd\u0119 przynosi\u0142a korzy\u015bci, musi mie\u0107 jaki\u015b serwis lub interfejs, ale musicie to gdzie\u015b umie\u015bci\u0107.<\/p>\n<p><\/p>\n<p>Aplikacj\u0119 webow\u0105 mo\u017cna umie\u015bci\u0107 na serwerze aplikacji webowej. Serwer aplikacji zapewnia \u015brodowisko, w kt\u00f3rym mo\u017cna wykona\u0107 logik\u0119 programow\u0105 z pakietu, zrenderowa\u0107 interfejs i otworzy\u0107 us\u0142ugi webowe przez socket. Potrzebujecie serwera HTTP i kilku innych \u015brodowisk (na przyk\u0142ad maszyny wirtualnej), aby zainstalowa\u0107 serwer aplikacji. Na razie za\u0142\u00f3\u017cmy, \u017ce ogarniacie to wszystko w trakcie (cho\u0107 o kontenerach opowiem p\u00f3\u017aniej).<\/p>\n<p><\/p>\n<p>Jest kilka otwartych serwer\u00f3w aplikacji webowych.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/v7\/-q\/tq\/v7-qtqzlpp5nvxlqz1oshw4mw1i.png\"><img decoding=\"async\" alt=\"Poradnik dla pocz\u0105tkuj\u0105cych: tworzenie \u0142a\u0144cuch\u00f3w DevOps za pomoc\u0105 narz\u0119dzi open source\" src=\"\/wp-content\/uploads\/2019\/05\/7802afe041a9d56c20ddbe2885b5cf37.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p>Ju\u017c prawie uda\u0142o si\u0119 wam stworzy\u0107 dzia\u0142aj\u0105cy zestaw DevOps. \u015awietna robota!<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/lf\/wm\/rx\/lfwmrx3grlcbwb5s_olj33npn7o.jpeg\"><img decoding=\"async\" alt=\"Poradnik dla pocz\u0105tkuj\u0105cych: tworzenie \u0142a\u0144cuch\u00f3w DevOps za pomoc\u0105 narz\u0119dzi open source\" src=\"\/wp-content\/uploads\/2019\/05\/3d1e524b63fecebf4973cc34a40c160d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p>W zasadzie tutaj mo\u017cna si\u0119 zatrzyma\u0107, dalej poradzicie sobie sami, ale warto jeszcze wspomnie\u0107 o jako\u015bci kodu.<\/p>\n<p><\/p>\n<h3 id=\"shag-5-testovoe-pokrytie\">Krok 5: Pokrycie testowe<\/h3>\n<p><\/p>\n<p>Testowanie zajmuje du\u017co czasu i wysi\u0142ku, ale lepiej od razu znale\u017a\u0107 b\u0142\u0119dy i poprawi\u0107 kod, aby zadowoli\u0107 ko\u0144cowych u\u017cytkownik\u00f3w. W tym celu dost\u0119pnych jest wiele otwartych narz\u0119dzi, kt\u00f3re nie tylko przetestuj\u0105 kod, ale tak\u017ce podpowiedz\u0105, jak go ulepszy\u0107. Wi\u0119kszo\u015b\u0107 narz\u0119dzi CI\/CD mo\u017ce \u0142\u0105czy\u0107 si\u0119 z tymi narz\u0119dziami i automatyzowa\u0107 proces.<\/p>\n<p><\/p>\n<p>Testowanie dzieli si\u0119 na dwie cz\u0119\u015bci: frameworki testowe do pisania i uruchamiania test\u00f3w oraz narz\u0119dzia z podpowiedziami dla poprawy jako\u015bci kodu.<\/p>\n<p><\/p>\n<h3 id=\"freymvorki-testirovaniya\">Frameworki testowe<\/h3>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/cu\/4l\/pn\/cu4lpnpdqa7yd9f5zwsxrrlbylg.png\"><img decoding=\"async\" alt=\"Poradnik dla pocz\u0105tkuj\u0105cych: tworzenie \u0142a\u0144cuch\u00f3w DevOps za pomoc\u0105 narz\u0119dzi open source\" src=\"\/wp-content\/uploads\/2019\/05\/c17426a30a4f140be87489d2c8b0d0b9.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p>Narz\u0119dzia z podpowiedziami jako\u015bci<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/ab\/g_\/oh\/abg_ohfxhtbprzhcicxos3jx4yg.png\"><img decoding=\"async\" alt=\"Poradnik dla pocz\u0105tkuj\u0105cych: tworzenie \u0142a\u0144cuch\u00f3w DevOps za pomoc\u0105 narz\u0119dzi open source\" src=\"\/wp-content\/uploads\/2019\/05\/bc65784b8bf5ccaaeef96a0c6ee4422e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p>Wi\u0119kszo\u015b\u0107 tych narz\u0119dzi i framework\u00f3w zosta\u0142a napisana dla Javy, Pythona i JavaScriptu, poniewa\u017c C++ i C# s\u0105 proprietarne (chocia\u017c GCC ma otwarty kod \u017ar\u00f3d\u0142owy).<\/p>\n<p><\/p>\n<p>Zastosowali\u015bmy narz\u0119dzia do pokrycia testowego, wi\u0119c teraz nasz proces DevOps powinien wygl\u0105da\u0107 tak, jak na ilustracji na pocz\u0105tku przewodnika.<\/p>\n<p><\/p>\n<h2 id=\"dopolnitelnye-shagi\">Dodatkowe kroki<\/h2>\n<p><\/p>\n<h3 id=\"konteynery\">Kontenery<\/h3>\n<p><\/p>\n<p>Jak ju\u017c wspomnia\u0142em, serwer aplikacji mo\u017cna umie\u015bci\u0107 na wirtualnej maszynie lub serwerze, ale kontenery s\u0105 bardziej popularne.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.com\/resources\/what-are-linux-containers\">Czym s\u0105 kontenery?<\/a><\/noindex>? \u0412\u043a\u0440\u0430\u0442\u0446\u0435, \u0432 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u0435\u0441\u0442\u0430, \u0447\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443 \u043e\u0431\u044b\u0447\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0431\u0435\u0437 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d \u043d\u0435 \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c, \u043d\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0432\u043c\u0435\u0449\u0430\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0431\u0435\u0437 \u043b\u0438\u0448\u043d\u0438\u0445 \u0437\u0430\u0442\u0440\u0430\u0442.<\/p>\n<p><\/p>\n<p>Do kontener\u00f3w zazwyczaj u\u017cywa si\u0119 Dockera i Kubernetes, chocia\u017c s\u0105 te\u017c inne opcje.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/6n\/wc\/rc\/6nwcrcuhk9swwjxdddudr1cqpzc.png\"><img decoding=\"async\" alt=\"Poradnik dla pocz\u0105tkuj\u0105cych: tworzenie \u0142a\u0144cuch\u00f3w DevOps za pomoc\u0105 narz\u0119dzi open source\" src=\"\/wp-content\/uploads\/2019\/05\/8749b7044102ff7f23f2c970d6939246.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p>Przeczytaj artyku\u0142y o Docker i Kubernetes na <noindex><a rel=\"nofollow\" href=\"http:\/\/opensource.com\/\">Opensource.com<\/a><\/noindex>:<\/p>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.com\/resources\/what-docker\">Czym jest Docker?<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.com\/business\/15\/1\/introduction-docker\">Wprowadzenie do Dockera<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.com\/resources\/what-is-kubernetes\">Czym jest Kubernetes?<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.com\/article\/17\/11\/kubernetes-lightning-talk\">Kubernetes od podstaw<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"instrumenty-avtomatizacii-promezhutochnogo-po\">Narz\u0119dzia automatyzacji oprogramowania po\u015bredniego<\/h3>\n<p><\/p>\n<p>Nasz cykl DevOps koncentruje si\u0119 na wsp\u00f3\u0142tworzeniu i dostarczaniu aplikacji, ale za pomoc\u0105 narz\u0119dzi DevOps mo\u017cna robi\u0107 wiele innych ciekawych rzeczy. Na przyk\u0142ad u\u017cywa\u0107 narz\u0119dzi do infrastruktury jako kodu (IaC), kt\u00f3re s\u0105 r\u00f3wnie\u017c nazywane narz\u0119dziami automatyzacji oprogramowania po\u015bredniego. Narz\u0119dzia te pomagaj\u0105 automatyzowa\u0107 instalacj\u0119, zarz\u0105dzanie i inne zadania dotycz\u0105ce oprogramowania po\u015bredniego. Na przyk\u0142ad narz\u0119dzie automatyzacji mo\u017ce zaj\u0105\u0107 aplikacje (serwer aplikacji webowej, baz\u0119 danych, narz\u0119dzia monitoruj\u0105ce) z odpowiednimi konfiguracjami i wdro\u017cy\u0107 je na serwerze aplikacyjnym.<\/p>\n<p><\/p>\n<p>Oto kilka przyk\u0142ad\u00f3w otwartych narz\u0119dzi automatyzacji oprogramowania po\u015bredniego:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Poradnik dla pocz\u0105tkuj\u0105cych: tworzenie \u0142a\u0144cuch\u00f3w DevOps za pomoc\u0105 narz\u0119dzi open source\" src=\"\/wp-content\/uploads\/2019\/05\/23bb3259f336a3f0ebf11ab4aa5471ea.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Szczeg\u00f3\u0142y w artyku\u0142ach na <noindex><a rel=\"nofollow\" href=\"http:\/\/opensource.com\/\">Opensource.com<\/a><\/noindex>:<\/p>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.com\/article\/19\/2\/quickstart-guide-ansible\">Przewodnik po rozpocz\u0119ciu pracy z Ansible<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.com\/article\/19\/1\/automating-deployment-strategies-ansible\">Strategie automatyzacji wdro\u017ce\u0144 z Ansible<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.com\/article\/18\/12\/configuration-management-tools\">5 najlepszych narz\u0119dzi do zarz\u0105dzania konfiguracj\u0105<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"i-chto-teper\">I co teraz?<\/h3>\n<p><\/p>\n<p>To tylko wierzcho\u0142ek g\u00f3ry lodowej. \u0141a\u0144cuch DevOps ma znacznie wi\u0119cej do zaoferowania. Zacznij od narz\u0119dzia CI\/CD i zobacz, co jeszcze mo\u017cna zautomatyzowa\u0107, aby u\u0142atwi\u0107 sobie prac\u0119. Nie zapomnij o <noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.com\/alternatives\/slack\">otwartych narz\u0119dziach komunikacji<\/a><\/noindex> dla efektywnej wsp\u00f3\u0142pracy.<\/p>\n<p><\/p>\n<p>Oto kilka dobrych artyku\u0142\u00f3w o DevOps dla pocz\u0105tkuj\u0105cych:<\/p>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.com\/resources\/devops\">Co to jest DevOps<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.com\/article\/19\/2\/master-devops-engineer\">5 umiej\u0119tno\u015bci programisty DevOps<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.com\/article\/18\/11\/how-non-engineer-got-devops\">DevOps dla ka\u017cdego<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.com\/article\/19\/1\/getting-started-predictive-analytics-devops\">Wprowadzenie do analityki predykcyjnej w DevOps<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<p>Mo\u017cna r\u00f3wnie\u017c zintegrowa\u0107 DevOps z otwartymi narz\u0119dziami dla agile:<\/p>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.com\/article\/18\/10\/what-agile\">Co to jest agile?<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.com\/article\/19\/2\/steps-agile-developer\">4 kroki do opanowania agile<\/a><\/noindex><\/li>\n<\/ul>\n<p>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/451508\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0432\u043e\u0439 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 DevOps \u0437\u0430 \u043f\u044f\u0442\u044c \u0448\u0430\u0433\u043e\u0432 \u0434\u043b\u044f \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432. DevOps \u0441\u0442\u0430\u043b \u043f\u0430\u043d\u0430\u0446\u0435\u0435\u0439 \u0434\u043b\u044f \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0445, \u0440\u0430\u0437\u043e\u0431\u0449\u0435\u043d\u043d\u044b\u0445 \u0438 \u043f\u0440\u043e\u0447\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u041d\u043e \u043d\u0443\u0436\u043d\u044b \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0437\u043d\u0430\u043d\u0438\u044f \u0432 DevOps. \u0417\u0434\u0435\u0441\u044c \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u0442\u0430\u043a\u0438\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u044f, \u043a\u0430\u043a \u0446\u0435\u043f\u043e\u0447\u043a\u0430 DevOps \u0438 \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0435\u0435 \u0437\u0430 \u043f\u044f\u0442\u044c \u0448\u0430\u0433\u043e\u0432. \u042d\u0442\u043e \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u201c\u0440\u044b\u0431\u0430\u201d, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c. \u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u0438\u0441\u0442\u043e\u0440\u0438\u0438. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":25204,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-33504","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\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\/pl\/blog\/administrirovanie\/rukovodstvo-dlya-chajnikov-sozdanie-tsepochek-devops-s-pomoshhyu-instrumentov-s-otkrytym-ishodnym-kodom\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\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\udd47\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u0447\u0430\u0439\u043d\u0438\u043a\u043e\u0432: \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0446\u0435\u043f\u043e\u0447\u0435\u043a DevOps \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/rukovodstvo-dlya-chajnikov-sozdanie-tsepochek-devops-s-pomoshhyu-instrumentov-s-otkrytym-ishodnym-kodom\" \/>\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-31T18:52:58+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:52:58+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\udd47Przewodnik dla pocz\u0105tkuj\u0105cych: tworzenie \u0142a\u0144cuch\u00f3w DevOps za pomoc\u0105 narz\u0119dzi z otwartym \u017ar\u00f3d\u0142em | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/rukovodstvo-dlya-chajnikov-sozdanie-tsepochek-devops-s-pomoshhyu-instrumentov-s-otkrytym-ishodnym-kodom","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","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\udd47\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u0447\u0430\u0439\u043d\u0438\u043a\u043e\u0432: \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0446\u0435\u043f\u043e\u0447\u0435\u043a DevOps \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c | ProHoster","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/rukovodstvo-dlya-chajnikov-sozdanie-tsepochek-devops-s-pomoshhyu-instrumentov-s-otkrytym-ishodnym-kodom","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-31T18:52:58+00:00","article:modified_time":"2019-10-31T18:52:58+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"33504","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 15:33:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:39:23","updated":"2026-01-21 15:33:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/33504","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=33504"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/33504\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/25204"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=33504"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=33504"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=33504"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}