{"id":228960,"date":"2022-11-06T18:11:00","date_gmt":"2022-11-06T15:11:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228960"},"modified":"2022-11-09T04:58:03","modified_gmt":"2022-11-09T01:58:03","slug":"porecze-projektu-srodowiska-aprowizacji","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/porecze-projektu-srodowiska-aprowizacji\/","title":{"rendered":"Por\u0119cze projektu: \u015brodowiska aprowizacji"},"content":{"rendered":"\n<p>Ta seria kr\u00f3tkich artyku\u0142\u00f3w sk\u0142ada si\u0119 z kilku rzeczy, kt\u00f3rych nauczy\u0142em si\u0119 w ci\u0105gu ostatnich kilku lat prowadzenia projekt\u00f3w w obszarze, w kt\u00f3rym my (zak\u0142adaj\u0105c, \u017ce czytasz to z tej samej bran\u017cy, co ja \ud83d\ude42) praca.<\/p>\n<p>Je\u015bli po prostu natkniesz si\u0119 na to, seria obejmuje kilka czynnik\u00f3w, kt\u00f3re s\u0105 <a href=\"https:\/\/tommcfarlin.com\/tag\/open-source-project-management\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wa\u017cne dla projektu<\/a> :<\/p>\n<ol>\n<li>Nie powinno by\u0107 \u201e <a href=\"https:\/\/wordpress.mediadoma.com\/pl\/porecze-projektowe-projekt-przez-komisje\/\" title=\"projektu przez komisj\u0119.\">projektu przez komisj\u0119.<\/a> &#8222;<\/li>\n<li>Nikt inny ni\u017c g\u0142\u00f3wny zesp\u00f3\u0142 programist\u00f3w powinien by\u0107 w stanie zapewni\u0107 rozw\u00f3j, etapowanie i produkcj\u0119.<\/li>\n<li>Nikt nie powinien by\u0107 w stanie pisa\u0107 do produkcji, ale zesp\u00f3\u0142 programist\u00f3w (a nawet wtedy powinien nast\u0105pi\u0107 proces wdro\u017cenia).<\/li>\n<\/ol>\n<p>Naprawd\u0119 nie lubi\u0119 tworzy\u0107 twardych i szybkich zasad, takich jak ta, poniewa\u017c rzeczy zmieniaj\u0105 si\u0119 w czasie albo z konieczno\u015bci, albo z wi\u0119kszego do\u015bwiadczenia. Dlatego lubi\u0119 \u201ewytyczne&quot;.<\/p>\n<p>Ale w chwili pisania tego tekstu s\u0105 to rzeczy, kt\u00f3re widz\u0119.<\/p>\n<h2>\u015arodowiska aprowizacji<\/h2>\n<p>W ci\u0105gu ostatnich kilku lat poczynili\u015bmy znaczne post\u0119py w zakresie szybko\u015bci udost\u0119pniania naszych system\u00f3w, tak aby wszystkie odzwierciedla\u0142y si\u0119 nawzajem (lub og\u00f3lnie). Obejmuje to nasze skrzynki programistyczne, spos\u00f3b, w jaki nasze lokalne maszyny odzwierciedlaj\u0105 pomostowanie oraz jak pomostowanie odzwierciedla produkcj\u0119.<\/p>\n<p>Zapewnienie nowego \u015brodowiska, mniej wi\u0119cej. Rzu\u0107 si\u0119 z tym.<\/p>\n<p>To znaczy, je\u015bli \u201edzia\u0142a na moim komputerze&#8221; powinno by\u0107 prawd\u0105. Nie jest to wym\u00f3wka dla niemo\u017cno\u015bci odtworzenia b\u0142\u0119du.<\/p>\n<p>A kiedy to prawda, prawdopodobnie b\u0119dzie to dotyczy\u0107 maszyn innych, inscenizacji i produkcji. I to jest mi\u0142e, prawda? To znaczy, rozkr\u0119camy nasze pude\u0142ka, wdra\u017camy nasze skrypty lub robimy to, co robimy, a potem mamy konfiguracj\u0119, kt\u00f3rej potrzebujemy.<\/p>\n<p>Wi\u0119c co to znaczy korzysta\u0107 ze \u015brodowisk aprowizacji? Zale\u017cy to od \u015brodowiska, do kt\u00f3rego si\u0119 odnosisz.<\/p>\n<h3>Jak to naprawd\u0119 wygl\u0105da?<\/h3>\n<p>Je\u015bli pracujesz w WordPressie, a zak\u0142adam, \u017ce tak jest, je\u015bli to czytasz, to zak\u0142ada, \u017ce \u200b\u200bu\u017cywasz przynajmniej serwera WWW, bazy danych i PHP.<\/p>\n<p>\u015arodowisko programistyczne mo\u017ce wygl\u0105da\u0107 nast\u0119puj\u0105co:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.apache.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Apache<\/a> <a href=\"https:\/\/www.nginx.com\/resources\/wiki\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Nginx<\/a>, _<\/li>\n<li>MySQL, kt\u00f3ry jest najcz\u0119stszy,<\/li>\n<li>Przynajmniej PHP 5.2.4 (zalecane PHP 7.1),<\/li>\n<li>Albo co\u015b por\u00f3wnywalnego.<\/li>\n<\/ul>\n<p>Mo\u017cesz r\u00f3wnie\u017c u\u017cywa\u0107 czego\u015b takiego jak <a href=\"https:\/\/tommcfarlin.com\/laravel-valet-for-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Laravel Valet<\/a> lub co\u015b takiego jak <a href=\"https:\/\/github.com\/Varying-Vagrant-Vagrants\/VVV\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">VVV<\/a>. Wszystko zale\u017cy od charakteru Twojej pracy.<\/p>\n<p>Ponadto, w zale\u017cno\u015bci od charakteru Twojej firmy, mo\u017cesz mie\u0107 przypisane IDE wraz z r\u00f3\u017cnymi plikami konfiguracyjnymi w celu <a href=\"https:\/\/tommcfarlin.com\/following-the-wordpress-coding-standards\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">egzekwowania okre\u015blonych regu\u0142<\/a>.<\/p>\n<h3>A reszta \u015brodowisk?<\/h3>\n<p>Jak zwykle:<\/p>\n<ul>\n<li>rozw\u00f3j odnosi si\u0119 do instalacji na lokalnym komputerze,<\/li>\n<li>etapowanie odnosi si\u0119 do obszaru, w kt\u00f3rym Ty i interesariusze mo\u017cecie testowa\u0107,<\/li>\n<li>a produkcja jest tam, gdzie znajduje si\u0119 aplikacja.<\/li>\n<\/ul>\n<p>Ale wygl\u0105da to r\u00f3wnie\u017c inaczej w zale\u017cno\u015bci od tego, gdzie pracujesz, jak zorganizowana jest Twoja praca i tak dalej. Nie chodzi o to, jak jest u\u017cywany \u2013 chodzi o to, \u017ce jest u\u017cywany.<\/p>\n<h4>Inscenizacja<\/h4>\n<p>Zazwyczaj jest to udost\u0119pniane na serwerze (lub grupie serwer\u00f3w w zale\u017cno\u015bci od rozmiaru projektu), na kt\u00f3rym mo\u017cesz wdro\u017cy\u0107 najnowszy kod do testowania. Mo\u017ce zawiera\u0107 cz\u0119\u015bciow\u0105 funkcjonalno\u015b\u0107, dane testowe i tylko podzbi\u00f3r informacji z produkcji (je\u015bli zdecydujesz si\u0119 pobra\u0107 te informacje, a mianowicie baz\u0119 danych, ze \u015brodowiska produkcyjnego).<\/p>\n<p>Daje to Tobie i innym interesariuszom mo\u017cliwo\u015b\u0107 sprawdzenia, co si\u0119 dzieje i jak b\u0119dzie funkcjonowa\u0107 w produkcji, bez konieczno\u015bci martwienia si\u0119 o zniszczenie czegokolwiek wra\u017cliwego.<\/p>\n<p>Kod jest zwykle wdra\u017cany z brancha, zwykle master, z twojego repozytorium Git (je\u015bli tego w\u0142a\u015bnie u\u017cywasz). Narz\u0119dzia takie jak <a href=\"https:\/\/deploybot.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">DeployBot<\/a>, <a href=\"https:\/\/circleci.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">CircleCI<\/a>, <a href=\"https:\/\/travis-ci.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Travis CI<\/a>, <a href=\"https:\/\/github.com\/phpro\/grumphp\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GrumPHP<\/a>, <a href=\"http:\/\/behat.org\/en\/latest\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Behat<\/a>, itp. s\u0105 r\u00f3wnie\u017c u\u017cywane zar\u00f3wno do oceny jako\u015bci kodu, przeprowadzania automatycznych test\u00f3w, jak i ostatecznego wdra\u017cania kodu.<\/p>\n<p>W ko\u0144cu ka\u017cde \u015brodowisko b\u0119dzie udost\u0119pniane w taki spos\u00f3b, aby mo\u017cna je by\u0142o szybko dublowa\u0107 na komputerach lokalnych, serwerach pomostowych i serwerach produkcyjnych. Co wi\u0119cej, przenoszenie i przeci\u0105ganie danych mi\u0119dzy nimi powinno by\u0107 \u0142atwe, aby praca z nimi by\u0142a \u0142atwa.<\/p>\n<h4>Produkcja<\/h4>\n<p>Wreszcie produkcja dotyczy w\u0142a\u015bciwie funkcjonuj\u0105cego projektu; Oznacza to, \u017ce serwer, aplikacja i baza danych dzia\u0142aj\u0105 razem i s\u0105 u\u017cywane przez u\u017cytkownik\u00f3w.<\/p>\n<p>Oznacza to r\u00f3wnie\u017c, \u017ce kod znajduje si\u0119 w stabilnym miejscu. Prawdopodobnie istniej\u0105 mechanizmy rejestrowania, kt\u00f3re powiadomi\u0105 zesp\u00f3\u0142 programist\u00f3w o wszelkich problemach. \u017badna zmiana kodu nie powinna nast\u0119powa\u0107 w tym \u015brodowisku bez wcze\u015bniejszego przej\u015bcia kontroli jako\u015bci lub przygotowania.<\/p>\n<h3>A procesy w miejscu?<\/h3>\n<p>Ok, powiedzmy, \u017ce pracujesz z tradycyjn\u0105 konfiguracj\u0105, z braku lepszego terminu, gdzie wszystkie twoje wdro\u017cenia s\u0105 wykonywane przez S\/FTP w \u015brodowisku produkcyjnym (lub nawet postojowym). W ten spos\u00f3b u\u017cytkownicy mog\u0105 \u015bci\u0105ga\u0107 pliki, wprowadza\u0107 zmiany i przesy\u0142a\u0107 je z powrotem.<\/p>\n<p>To nie dobrze.<\/p>\n<p>Oznacza to, \u017ce ka\u017cdy, kto ma po\u015bwiadczenia, mo\u017ce si\u0119 zalogowa\u0107, wprowadza\u0107 zmiany i omija\u0107 kontrol\u0119 \u017ar\u00f3d\u0142a, ci\u0105g\u0142\u0105 integracj\u0119, narz\u0119dzia zapewniania jako\u015bci itd. i wprowadza\u0107 dowolne zmiany.<\/p>\n<p>Podwa\u017ca wszystkie wprowadzone procesy. Ta procedura nie tylko omija standardow\u0105 procedur\u0119 (kt\u00f3ra jest stosowana z jakiego\u015b powodu), ale ko\u0144czy si\u0119 \u0142amaniem kodu, kt\u00f3ry programista lub zesp\u00f3\u0142 programist\u00f3w ma na swoich komputerach, g\u0142\u00f3wnie dlatego, \u017ce to, co jest w produkcji, nie jest ju\u017c zsynchronizowane z repozytorium kodu.<\/p>\n<p>Co wi\u0119cej, ten kod mo\u017ce by\u0107 roz\u0142o\u017cony na ga\u0142\u0119zie, kt\u00f3re nie zosta\u0142y jeszcze scalone lub wdro\u017cone. To pozostawia nam r\u00f3\u017cne sytuacje, w kt\u00f3rych programi\u015bci i klienci zepsuli cz\u0119\u015b\u0107 procesu budowania, a tym samym ca\u0142y projekt.<\/p>\n<p>Kiedy przychodzi czas na sprawdzenie produkcji, nie jest ona zsynchronizowana z rozwojem i staczaniem, i nikt nie wie, dlaczego. Kiedy przychodzi czas na wdro\u017cenie, zmiany s\u0105 nadpisywane, a osoby odpowiedzialne straci\u0142y to, co my\u015bla\u0142y, \u017ce zobacz\u0105.<\/p>\n<h3>Co ma zrobi\u0107 zesp\u00f3\u0142?<\/h3>\n<p>Nie wiem, czy jest na to jedna s\u0142uszna odpowied\u017a, ale im d\u0142u\u017cej pracuj\u0119 w tej bran\u017cy, tym bardziej uwa\u017cam, \u017ce firma \u2013 lub firmy \u2013 odpowiedzialne za zbudowanie rozwi\u0105zania dla klienta powinny mie\u0107 kontrol\u0119 nad procesem od ko\u0144ca- do ko\u0144ca.<\/p>\n<ul>\n<li>Projektanci s\u0105 odpowiedzialni za zarz\u0105dzanie swoimi obszarami tworzenia koncepcji, makiet, tworzenia szablon\u00f3w demonstracyjnych i pozyskiwania informacji zwrotnych,<\/li>\n<li>Project Managerowie odpowiadaj\u0105 za komunikacj\u0119 z dzia\u0142ami,<\/li>\n<li>Deweloperzy s\u0105 odpowiedzialni za wdro\u017cenie rozwi\u0105zania i powi\u0105zanie pracy projektant\u00f3w z funkcjonalnym zapleczem,<\/li>\n<li>Klient jest odpowiedzialny za przegl\u0105danie zmian, przekazywanie informacji zwrotnych i dostarczanie wszelkich innych informacji niezb\u0119dnych do wykonania zadania.<\/li>\n<\/ul>\n<p>Oznacza to, \u017ce je\u015bli chodzi o konfiguracj\u0119 domeny, hosting, \u015brodowiska, kontrol\u0119 wersji, proces kompilacji i ci\u0105g\u0142\u0105 integracj\u0119, i wszystko inne, o czym zapomnia\u0142em wspomnie\u0107, nale\u017cy wprost do zespo\u0142u programist\u00f3w.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-166423-61e793a807c63.jpg\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-166423-61e793a807c63.jpg\" alt=\"Por\u0119cze projektu: \u015brodowiska aprowizacji\" ><\/a><\/p>\n<p>Trzymaj si\u0119 okop\u00f3w, trzymaj si\u0119 celu (ale uwa\u017caj na osoby wok\u00f3\u0142 ciebie).<\/p>\n<p>M\u00f3wi\u0105c najpro\u015bciej, nie s\u0105 to obowi\u0105zki klienta i nie powinny nimi by\u0107. Granice odpowiedzialno\u015bci powinny by\u0107 ustalane, utrzymywane i przestrzegane we wszystkich zespo\u0142ach \u2013 nie tylko programistach i klientach lub klientach i projektantach lub projektantach i programistach i tak dalej.<\/p>\n<h2>Co dalej?<\/h2>\n<p>W nast\u0119pnym po\u015bcie opowiem o odpowiedzialno\u015bci programist\u00f3w (i innych interesariuszy) za utrzymanie \u015brodowisk dla kodu.<\/p>\n<p>Oznacza to, kto powinien by\u0107 za co odpowiedzialny i kto ma dost\u0119p do odczytu i zapisu jakich danych i jak mo\u017ce to ostatecznie wp\u0142yn\u0105\u0107 na wynik projektu.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Co to znaczy korzysta\u0107 ze \u015brodowisk aprowizacji? To naprawd\u0119 zale\u017cy od \u015brodowiska, o kt\u00f3rym m\u00f3wisz, wi\u0119c sp\u00f3jrzmy na ka\u017cde z nich.<\/p>\n","protected":false},"author":1,"featured_media":166424,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[721,752],"tags":[1169],"class_list":["post-228960","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-otwarte-zrodlo","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/228960","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/comments?post=228960"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/228960\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/166424"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=228960"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=228960"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=228960"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}