{"id":229618,"date":"2022-11-06T18:47:00","date_gmt":"2022-11-06T15:47:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229618"},"modified":"2022-11-09T08:43:43","modified_gmt":"2022-11-09T05:43:43","slug":"protecao-do-projeto-ambientes-de-provisionamento","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/protecao-do-projeto-ambientes-de-provisionamento\/","title":{"rendered":"Prote\u00e7\u00e3o do projeto: ambientes de provisionamento"},"content":{"rendered":"\n<p>Esta s\u00e9rie de breves artigos \u00e9 composta por algumas coisas que aprendi ao longo dos \u00faltimos anos executando projetos baseados na \u00e1rea em que n\u00f3s (assumindo que voc\u00ea est\u00e1 lendo isso vindo da mesma parte da ind\u00fastria que eu \ud83d\ude42) trabalhar.<\/p>\n<p>Se voc\u00ea est\u00e1 apenas se deparando com isso, a s\u00e9rie aborda alguns fatores que s\u00e3o <a href=\"https:\/\/tommcfarlin.com\/tag\/open-source-project-management\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">importantes para um projeto<\/a> :<\/p>\n<ol>\n<li>N\u00e3o deve haver &#8221; <a href=\"https:\/\/wordpress.mediadoma.com\/pt-pt\/guarda-corpos-do-projeto-projeto-pelo-comite\/\" title=\"projeto por comit\u00ea.\">projeto por comit\u00ea.<\/a> &#8220;<\/li>\n<li>Ningu\u00e9m mais que a equipe de desenvolvimento principal deve ser capaz de fornecer desenvolvimento, prepara\u00e7\u00e3o e produ\u00e7\u00e3o.<\/li>\n<li>Ningu\u00e9m deve ser capaz de escrever para produ\u00e7\u00e3o, exceto a equipe de desenvolvimento (e mesmo assim, deve haver um processo de implanta\u00e7\u00e3o).<\/li>\n<\/ol>\n<p>Eu realmente n\u00e3o gosto de fazer regras duras e r\u00e1pidas como essa, porque as coisas mudam com o tempo, seja por necessidade ou por mais experi\u00eancia. \u00c9 por isso que eu gosto de &#8220;diretrizes&quot;.<\/p>\n<p>Mas no momento em que escrevo, essas s\u00e3o as coisas que vejo acontecendo.<\/p>\n<h2>Ambientes de provisionamento<\/h2>\n<p>Nos \u00faltimos anos, progredimos muito na rapidez com que podemos provisionar nossos sistemas para que todos se espelhem (ou geralmente sim). Isso inclui nossas caixas de desenvolvimento, como nossas m\u00e1quinas locais espelham a prepara\u00e7\u00e3o e como a prepara\u00e7\u00e3o espelha a produ\u00e7\u00e3o.<\/p>\n<p>Provisionando um novo ambiente, mais ou menos. Role com isso.<\/p>\n<p>Isto \u00e9, se &#8220;funcionar na minha m\u00e1quina&#8221; deve ser verdade. N\u00e3o \u00e9 uma desculpa para n\u00e3o ser capaz de reproduzir um bug.<\/p>\n<p>E quando \u00e9 verdade, \u00e9 prov\u00e1vel que seja verdade nas m\u00e1quinas de outros, na encena\u00e7\u00e3o e na produ\u00e7\u00e3o. E isso \u00e9 legal, certo? Quer dizer, n\u00f3s montamos nossas caixas, implantamos nossos scripts, ou fazemos o que fazemos e ent\u00e3o temos a configura\u00e7\u00e3o de que precisamos.<\/p>\n<p>Ent\u00e3o, o que significa provisionar ambientes? Depende de qual ambiente voc\u00ea est\u00e1 se referindo.<\/p>\n<h3>O que isso realmente parece?<\/h3>\n<p>Se voc\u00ea estiver trabalhando no WordPress, o que eu suponho que esteja se estiver lendo isso, sup\u00f5e que voc\u00ea esteja executando um servidor web, um banco de dados e PHP no m\u00ednimo.<\/p>\n<p>Um ambiente de desenvolvimento pode ter a seguinte apar\u00eancia:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.apache.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Apache<\/a> de <a href=\"https:\/\/www.nginx.com\/resources\/wiki\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Nginx<\/a> ,<\/li>\n<li>MySQL que \u00e9 o mais comum,<\/li>\n<li>Pelo menos PHP 5.2.4 (com PHP 7.1 recomendado),<\/li>\n<li>Ou algo compar\u00e1vel.<\/li>\n<\/ul>\n<p>Voc\u00ea tamb\u00e9m pode estar usando algo como <a href=\"https:\/\/tommcfarlin.com\/laravel-valet-for-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Laravel Valet<\/a> ou algo como <a href=\"https:\/\/github.com\/Varying-Vagrant-Vagrants\/VVV\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">VVV<\/a>. Tudo depende da natureza do seu trabalho.<\/p>\n<p>Al\u00e9m disso, dependendo da natureza do seu neg\u00f3cio, voc\u00ea pode ter um IDE atribu\u00eddo a voc\u00ea junto com v\u00e1rios arquivos de configura\u00e7\u00e3o para <a href=\"https:\/\/tommcfarlin.com\/following-the-wordpress-coding-standards\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">impor determinadas regras<\/a>.<\/p>\n<h3>E o Resto dos Ambientes?<\/h3>\n<p>Como sempre:<\/p>\n<ul>\n<li>desenvolvimento refere-se \u00e0 configura\u00e7\u00e3o em sua m\u00e1quina local,<\/li>\n<li>encena\u00e7\u00e3o refere-se \u00e0 \u00e1rea na qual voc\u00ea e as partes interessadas podem testar,<\/li>\n<li>e a produ\u00e7\u00e3o \u00e9 onde o aplicativo reside.<\/li>\n<\/ul>\n<p>Mas isso tamb\u00e9m parece diferente dependendo de onde voc\u00ea trabalha, como seu trabalho est\u00e1 organizado e assim por diante. N\u00e3o \u00e9 tanto sobre como \u00e9 usado \u2013 \u00e9 sobre como \u00e9 usado.<\/p>\n<h4>Encena\u00e7\u00e3o<\/h4>\n<p>Isso geralmente ser\u00e1 provisionado em um servidor (ou grupo de servidores, dependendo do tamanho do projeto) no qual voc\u00ea pode implantar seu c\u00f3digo mais recente para teste. Ele pode incluir funcionalidade parcial, dados de teste e apenas um subconjunto de informa\u00e7\u00f5es da produ\u00e7\u00e3o (se voc\u00ea optar por extrair essas informa\u00e7\u00f5es, ou seja, o banco de dados, do ambiente de produ\u00e7\u00e3o).<\/p>\n<p>Isso d\u00e1 a voc\u00ea e \u00e0s outras partes interessadas a capacidade de revisar o que est\u00e1 acontecendo e como funcionar\u00e1 na produ\u00e7\u00e3o sem realmente ter que se preocupar em destruir qualquer coisa sens\u00edvel.<\/p>\n<p>O c\u00f3digo geralmente \u00e9 implantado de uma ramifica\u00e7\u00e3o, geralmente mestre, do seu reposit\u00f3rio Git (se \u00e9 isso que voc\u00ea est\u00e1 usando). E ferramentas como <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. tamb\u00e9m s\u00e3o usadas para avaliar a qualidade do c\u00f3digo, executar qualquer teste automatizado e, finalmente, implantar o c\u00f3digo.<\/p>\n<p>No final, cada ambiente ser\u00e1 provisionado de forma que possa ser rapidamente espelhado em m\u00e1quinas locais, servidores de teste e servidores de produ\u00e7\u00e3o. Al\u00e9m disso, deve ser f\u00e1cil enviar e extrair dados entre eles para facilitar o trabalho com os dados.<\/p>\n<h4>Produ\u00e7\u00e3o<\/h4>\n<p>Finalmente, a produ\u00e7\u00e3o tem tudo a ver com o projeto em funcionamento real; Isso significa que o servidor, o aplicativo e o banco de dados s\u00e3o executados em conjunto e est\u00e3o sendo usados \u200b\u200bpelos usu\u00e1rios.<\/p>\n<p>Isso tamb\u00e9m significa que o c\u00f3digo est\u00e1 em um local est\u00e1vel. Provavelmente existem mecanismos de registro em vigor que notificar\u00e3o a equipe de desenvolvimento sobre quaisquer problemas. Nenhuma altera\u00e7\u00e3o de c\u00f3digo deve ocorrer neste ambiente sem que ele passe pelo controle de qualidade ou teste primeiro.<\/p>\n<h3>E os processos em vigor?<\/h3>\n<p>Ok, digamos que voc\u00ea esteja trabalhando com uma configura\u00e7\u00e3o tradicional, por falta de um termo melhor, em que todas as suas implanta\u00e7\u00f5es sejam feitas via S\/FTP em um ambiente de produ\u00e7\u00e3o (ou mesmo de teste). Dessa forma, os usu\u00e1rios podem baixar arquivos, fazer as altera\u00e7\u00f5es e envi\u00e1-los de volta.<\/p>\n<p>Isso n\u00e3o \u00e9 bom.<\/p>\n<p>Isso significa que qualquer pessoa com as credenciais pode fazer login, fazer as altera\u00e7\u00f5es e ignorar o controle de origem, integra\u00e7\u00e3o cont\u00ednua, ferramentas de garantia de qualidade e assim por diante, realizar as altera\u00e7\u00f5es que desejar.<\/p>\n<p>Isso prejudica todos os processos implementados. Isso n\u00e3o apenas ignora o procedimento padr\u00e3o (que est\u00e1 em vigor por um motivo, \u00e9 claro), mas acaba quebrando o c\u00f3digo que um desenvolvedor ou equipe de desenvolvedores tem em suas m\u00e1quinas principalmente porque o que est\u00e1 em produ\u00e7\u00e3o n\u00e3o est\u00e1 mais em sincronia com o reposit\u00f3rio do c\u00f3digo.<\/p>\n<p>Al\u00e9m disso, esse c\u00f3digo pode ser distribu\u00eddo em ramifica\u00e7\u00f5es que ainda n\u00e3o foram mescladas ou implantadas. Isso nos deixa com uma variedade de situa\u00e7\u00f5es em que desenvolvedores e clientes quebraram alguma parte do processo de constru\u00e7\u00e3o e, portanto, todo o projeto.<\/p>\n<p>Quando chega a hora de verificar a produ\u00e7\u00e3o, ela est\u00e1 fora de sincronia com o desenvolvimento e a prepara\u00e7\u00e3o, e ningu\u00e9m sabe por qu\u00ea. Quando chega a hora de implantar, as altera\u00e7\u00f5es s\u00e3o substitu\u00eddas e os respons\u00e1veis \u200b\u200bperdem o que pensavam que veriam.<\/p>\n<h3>O que uma equipe deve fazer?<\/h3>\n<p>N\u00e3o sei se h\u00e1 uma resposta certa para isso, mas quanto mais tempo eu trabalho neste setor, mais acredito que a empresa \u2013 ou empresas \u2013 respons\u00e1veis \u200b\u200bpor construir a solu\u00e7\u00e3o para o cliente devem ter controle sobre o processo desde o in\u00edcio. para-fim.<\/p>\n<ul>\n<li>Os designers s\u00e3o respons\u00e1veis \u200b\u200bpor gerenciar suas \u00e1reas de cria\u00e7\u00e3o de conceitos, mocks, cria\u00e7\u00e3o de modelos de demonstra\u00e7\u00e3o e solicita\u00e7\u00e3o de feedback,<\/li>\n<li>Os gerentes de projeto s\u00e3o respons\u00e1veis \u200b\u200bpela comunica\u00e7\u00e3o com os departamentos,<\/li>\n<li>Os desenvolvedores s\u00e3o respons\u00e1veis \u200b\u200bpor implementar a solu\u00e7\u00e3o e unir o trabalho dos designers com o back-end funcional,<\/li>\n<li>O cliente \u00e9 respons\u00e1vel por revisar as altera\u00e7\u00f5es, fornecer feedback e fornecer qualquer outra informa\u00e7\u00e3o necess\u00e1ria para concluir a tarefa.<\/li>\n<\/ul>\n<p>Isso significa que quando se trata de configurar o dom\u00ednio, a hospedagem, os ambientes, o controle de vers\u00e3o, o processo de compila\u00e7\u00e3o e a integra\u00e7\u00e3o cont\u00ednua, e tudo mais que deixei de mencionar, cabe diretamente \u00e0 equipe de desenvolvimento.<\/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=\"Prote\u00e7\u00e3o do projeto: ambientes de provisionamento\" ><\/a><\/p>\n<p>Fique nas trincheiras, fique no alvo (mas esteja atento \u00e0s pessoas ao seu redor).<\/p>\n<p>Simplificando, essas n\u00e3o s\u00e3o responsabilidades do cliente nem deveriam ser. Os limites de responsabilidade devem ser definidos, mantidos e respeitados em todas as equipes \u2013 n\u00e3o apenas desenvolvedores e clientes ou clientes e designers ou designers e desenvolvedores e assim por diante.<\/p>\n<h2>Qual \u00e9 o pr\u00f3ximo?<\/h2>\n<p>No pr\u00f3ximo post, falarei sobre as responsabilidades que os desenvolvedores (e outras partes interessadas) t\u00eam na manuten\u00e7\u00e3o de ambientes para o c\u00f3digo.<\/p>\n<p>Ou seja, quem deve ser respons\u00e1vel pelo qu\u00ea e quem tem acesso para ler e escrever quais dados e como isso pode impactar no resultado final do projeto.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>O que significa provisionar ambientes? Realmente depende de qual ambiente voc\u00ea est\u00e1 falando, ent\u00e3o vamos ver cada um.<\/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":[753,722],"tags":[1170],"class_list":["post-229618","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo-aberto","category-desenvolvedor","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/229618","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=229618"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/229618\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/166424"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=229618"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=229618"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=229618"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}