{"id":228924,"date":"2022-11-06T18:48:00","date_gmt":"2022-11-06T15:48:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228924"},"modified":"2022-11-09T04:49:20","modified_gmt":"2022-11-09T01:49:20","slug":"project-guardrails-provisioning-environments","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/project-guardrails-provisioning-environments\/","title":{"rendered":"Project Guardrails: Provisioning Environments"},"content":{"rendered":"\n<p>Den h\u00e4r serien med korta artiklar best\u00e5r av n\u00e5gra saker jag har l\u00e4rt mig under de senaste \u00e5ren av att driva projekt baserade i det omr\u00e5de d\u00e4r vi (f\u00f6rutsatt att du l\u00e4ser det h\u00e4r kommer fr\u00e5n samma del av branschen som jag g\u00f6r \ud83d\ude42) arbete.<\/p>\n<p>Om du bara snubblar \u00f6ver detta, t\u00e4cker serien n\u00e5gra faktorer som \u00e4r <a href=\"https:\/\/tommcfarlin.com\/tag\/open-source-project-management\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">viktiga f\u00f6r ett projekt<\/a> :<\/p>\n<ol>\n<li>Det b\u00f6r inte finnas n\u00e5gon &quot; <a href=\"https:\/\/wordpress.mediadoma.com\/sv\/project-guardrails-design-by-committee\/\" title=\"design av kommitt\u00e9\">design av kommitt\u00e9&#8221;.<\/a> &quot;<\/li>\n<li>Ingen annan som k\u00e4rnutvecklingsteamet ska kunna tillhandah\u00e5lla utveckling, iscens\u00e4ttning och produktion.<\/li>\n<li>Ingen ska kunna skriva till produktionen f\u00f6rutom utvecklingsteamet (och \u00e4ven d\u00e5 borde det finnas en distributionsprocess).<\/li>\n<\/ol>\n<p>Jag gillar inte riktigt att g\u00f6ra h\u00e5rda och snabba regler som denna, n\u00e4mligen f\u00f6r att saker och ting f\u00f6r\u00e4ndras med tiden antingen av n\u00f6dv\u00e4ndighet eller av mer erfarenhet. Det \u00e4r d\u00e4rf\u00f6r jag gillar &quot;riktlinjer&quot;.<\/p>\n<p>Men n\u00e4r detta skrivs \u00e4r det de h\u00e4r sakerna jag ser utspela sig.<\/p>\n<h2>Provisionsmilj\u00f6er<\/h2>\n<p>Under de senaste \u00e5ren har vi gjort stora framsteg n\u00e4r det g\u00e4ller hur snabbt vi kan tillhandah\u00e5lla v\u00e5ra system s\u00e5 att de alla speglar varandra (eller i allm\u00e4nhet s\u00e5). Detta inkluderar v\u00e5ra utvecklingsboxar, hur v\u00e5ra lokala maskiner speglar iscens\u00e4ttning och hur iscens\u00e4ttning speglar produktionen.<\/p>\n<p>Att tillhandah\u00e5lla en ny milj\u00f6, mer eller mindre. Spela med.<\/p>\n<p>Det \u00e4r om det &quot;fungerar p\u00e5 min maskin&quot; borde faktiskt vara sant. Inte en urs\u00e4kt f\u00f6r att inte kunna reproducera en bugg.<\/p>\n<p>Och n\u00e4r det \u00e4r sant, \u00e4r det sannolikt sant p\u00e5 andras maskiner, p\u00e5 iscens\u00e4ttning och produktion. Och det h\u00e4r \u00e4r trevligt, eller hur? Jag menar, vi snurrar upp v\u00e5ra l\u00e5dor, distribuerar v\u00e5ra skript eller g\u00f6r vad vi g\u00f6r och sedan har vi den inst\u00e4llning vi beh\u00f6ver.<\/p>\n<p>S\u00e5 vad inneb\u00e4r det att ta hand om provisioneringsmilj\u00f6er? Det beror p\u00e5 vilken milj\u00f6 du syftar p\u00e5.<\/p>\n<h3>Hur ser det h\u00e4r ut egentligen?<\/h3>\n<p>Om du arbetar i WordPress, vilket jag antar att du \u00e4r om du l\u00e4ser detta, s\u00e5 f\u00f6ruts\u00e4tter det att du k\u00f6r en webbserver, en databas och \u00e5tminstone PHP.<\/p>\n<p>En utvecklingsmilj\u00f6 kan se ut s\u00e5 h\u00e4r:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.apache.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Apache<\/a> of <a href=\"https:\/\/www.nginx.com\/resources\/wiki\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Nginx<\/a> ,<\/li>\n<li>MySQL som \u00e4r det vanligaste,<\/li>\n<li>Minst PHP 5.2.4 (med PHP 7.1 rekommenderad),<\/li>\n<li>Eller n\u00e5got j\u00e4mf\u00f6rbart.<\/li>\n<\/ul>\n<p>Du kanske ocks\u00e5 anv\u00e4nder n\u00e5got som <a href=\"https:\/\/tommcfarlin.com\/laravel-valet-for-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Laravel Valet<\/a> eller n\u00e5got som <a href=\"https:\/\/github.com\/Varying-Vagrant-Vagrants\/VVV\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">VVV<\/a>. Allt beror p\u00e5 arten av ditt arbete.<\/p>\n<p>Beroende p\u00e5 din verksamhets karakt\u00e4r kan du dessutom ha en IDE som \u00e4r tilldelad dig tillsammans med olika konfigurationsfiler f\u00f6r att <a href=\"https:\/\/tommcfarlin.com\/following-the-wordpress-coding-standards\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">uppr\u00e4tth\u00e5lla vissa regler<\/a>.<\/p>\n<h3>Och resten av milj\u00f6erna?<\/h3>\n<p>Som vanligt:<\/p>\n<ul>\n<li>utveckling avser installationen p\u00e5 din lokala dator,<\/li>\n<li>iscens\u00e4ttning avser det omr\u00e5de d\u00e4r du och intressenterna kan testa,<\/li>\n<li>och produktionen \u00e4r d\u00e4r applikationen finns.<\/li>\n<\/ul>\n<p>Men det h\u00e4r ser ocks\u00e5 olika ut beroende p\u00e5 var du arbetar, hur ditt arbete \u00e4r organiserat osv. Det handlar inte s\u00e5 mycket om hur det anv\u00e4nds \u2013 det handlar om att det anv\u00e4nds.<\/p>\n<h4>Iscens\u00e4ttning<\/h4>\n<p>Detta kommer vanligtvis att tillhandah\u00e5llas p\u00e5 en server (eller grupp av servrar beroende p\u00e5 projektets storlek) till vilken du kan distribuera din senaste kod f\u00f6r testning. Den kan inkludera partiell funktionalitet, testdata och endast en delm\u00e4ngd av information fr\u00e5n produktionen (om du v\u00e4ljer att h\u00e4mta den informationen, n\u00e4mligen databasen, fr\u00e5n produktionsmilj\u00f6n).<\/p>\n<p>Detta ger dig och de andra intressenterna m\u00f6jligheten att se \u00f6ver vad som h\u00e4nder och hur det kommer att fungera i produktionen utan att egentligen beh\u00f6va oroa dig f\u00f6r att f\u00f6rst\u00f6ra n\u00e5got k\u00e4nsligt.<\/p>\n<p>Koden distribueras vanligtvis fr\u00e5n en gren, vanligtvis master, fr\u00e5n ditt Git-f\u00f6rr\u00e5d (om det \u00e4r det du anv\u00e4nder). Och verktyg som <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>, etc. anv\u00e4nds ocks\u00e5 f\u00f6r att b\u00e5de utv\u00e4rdera kodkvaliteten, k\u00f6ra eventuella automatiserade tester och sedan slutligen distribuera koden.<\/p>\n<p>I slut\u00e4ndan kommer varje milj\u00f6 att tillhandah\u00e5llas p\u00e5 ett s\u00e4tt s\u00e5 att de snabbt kan speglas \u00f6ver lokala maskiner, mellanlagringsservrarna och produktionsservrarna. Vidare b\u00f6r det vara l\u00e4tt att skjuta och dra data mellan dem f\u00f6r att g\u00f6ra det enkelt att arbeta med datan.<\/p>\n<h4>Produktion<\/h4>\n<p>Slutligen handlar produktionen om det faktiska fungerande projektet; Detta inneb\u00e4r att servern, applikationen och databasen k\u00f6rs tillsammans med varandra och anv\u00e4nds av anv\u00e4ndare.<\/p>\n<p>Detta betyder ocks\u00e5 att koden \u00e4r p\u00e5 en stabil plats. Det finns sannolikt loggningsmekanismer p\u00e5 plats som kommer att meddela utvecklingsteamet om eventuella problem. Ingen \u00e4ndring av koden b\u00f6r ske i den h\u00e4r milj\u00f6n utan att den har klarat QA eller iscens\u00e4ttning f\u00f6rst.<\/p>\n<h3>Och processerna p\u00e5 plats?<\/h3>\n<p>Okej, s\u00e5 l\u00e5t oss s\u00e4ga att du arbetar med en traditionell installation, i brist p\u00e5 en b\u00e4ttre term, d\u00e4r alla dina distributioner g\u00f6rs via S\/FTP till en produktionsmilj\u00f6 (eller till och med iscens\u00e4ttning). P\u00e5 s\u00e5 s\u00e4tt kan anv\u00e4ndare dra ner filer, g\u00f6ra \u00e4ndringarna och trycka upp dem igen.<\/p>\n<p>Det \u00e4r inte bra.<\/p>\n<p>Detta inneb\u00e4r att alla med referenserna kan logga in, g\u00f6ra \u00e4ndringarna och kringg\u00e5 k\u00e4llkontroll, kontinuerlig integration, kvalitetss\u00e4kringsverktyg och s\u00e5 vidare, utf\u00f6ra vilka \u00e4ndringar de vill.<\/p>\n<p>Det undergr\u00e4ver hela de processer som inf\u00f6rts. Detta g\u00e5r inte bara f\u00f6rbi standardproceduren (som \u00e4r p\u00e5 plats av en anledning, f\u00f6rst\u00e5s), utan det slutar med att den bryter koden som en utvecklare eller ett team av utvecklare har p\u00e5 sina maskiner, fr\u00e4mst f\u00f6r att det som \u00e4r i produktion inte l\u00e4ngre \u00e4r synkroniserat med kodens arkiv.<\/p>\n<p>Dessutom kan denna kod spridas \u00f6ver grenar som \u00e4nnu inte ska sl\u00e5s samman eller distribueras. Detta l\u00e4mnar oss med en m\u00e4ngd olika situationer d\u00e4r utvecklare och kunder har brutit n\u00e5gon del av byggprocessen och d\u00e4rmed hela projektet.<\/p>\n<p>N\u00e4r det \u00e4r dags att kontrollera produktionen \u00e4r den inte synkroniserad med utveckling och iscens\u00e4ttning, och ingen vet varf\u00f6r. N\u00e4r det \u00e4r dags att implementera skrivs \u00e4ndringarna \u00f6ver och de ansvariga har f\u00f6rlorat det de trodde att de skulle se.<\/p>\n<h3>Vad ska ett team g\u00f6ra?<\/h3>\n<p>Jag vet inte om det finns ett r\u00e4tt svar p\u00e5 detta, men ju l\u00e4ngre jag jobbar i den h\u00e4r branschen, desto mer tror jag att f\u00f6retaget \u2013 eller f\u00f6retagen \u2013 som ansvarar f\u00f6r att bygga l\u00f6sningen \u00e5t kunden b\u00f6r ha kontroll \u00f6ver processen fr\u00e5n slutet. att sluta.<\/p>\n<ul>\n<li>Designers ansvarar f\u00f6r att hantera sina omr\u00e5den f\u00f6r att skapa koncept, h\u00e5na, skapa demomallar och be om feedback,<\/li>\n<li>Projektledare ansvarar f\u00f6r att kommunicera med avdelningar,<\/li>\n<li>Utvecklare ansvarar f\u00f6r att implementera l\u00f6sningen och knyta samman designernas arbete med den funktionella back-end,<\/li>\n<li>Kunden ansvarar f\u00f6r att granska \u00e4ndringar, ge feedback och tillhandah\u00e5lla all annan information som beh\u00f6vs f\u00f6r att slutf\u00f6ra uppgiften.<\/li>\n<\/ul>\n<p>Detta betyder att n\u00e4r det kommer till att s\u00e4tta upp dom\u00e4nen s\u00e5 faller hosting, milj\u00f6er, versionskontroll, byggprocessen och kontinuerlig integration och allt annat som jag har f\u00f6rsummat att n\u00e4mna helt och h\u00e5llet p\u00e5 utvecklingsteamet.<\/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=\"Project Guardrails: Provisioning Environments\" ><\/a><\/p>\n<p>Stanna i skyttegravarna, h\u00e5ll dig p\u00e5 m\u00e5let (men var uppm\u00e4rksam p\u00e5 dem runt omkring dig).<\/p>\n<p>Enkelt uttryckt \u00e4r detta inte kundens ansvar och borde inte vara det. Ansvarsgr\u00e4nser b\u00f6r s\u00e4ttas, underh\u00e5llas och respekteras i alla team \u2013 inte bara utvecklare och kunder eller kunder och designers eller designers och utvecklare och s\u00e5 vidare.<\/p>\n<h2>Vad kommer h\u00e4rn\u00e4st?<\/h2>\n<p>I n\u00e4sta inl\u00e4gg kommer jag att prata om det ansvar som utvecklare (och andra intressenter) har f\u00f6r att underh\u00e5lla milj\u00f6er f\u00f6r koden.<\/p>\n<p>Det vill s\u00e4ga vem som ska ansvara f\u00f6r vad och vem som har tillg\u00e5ng att l\u00e4sa och skriva vilken data och hur det i slut\u00e4ndan kan p\u00e5verka resultatet av projektet.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vad inneb\u00e4r det att ta hand om provisioneringsmilj\u00f6er? Det beror verkligen p\u00e5 vilken milj\u00f6 du pratar om s\u00e5 l\u00e5t oss titta p\u00e5 var och en.<\/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":[755,724],"tags":[1173],"class_list":["post-228924","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oeppen-kaella","category-utvecklaren","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/228924","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=228924"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/228924\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/166424"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=228924"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=228924"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=228924"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}