{"id":229230,"date":"2022-11-06T18:31:00","date_gmt":"2022-11-06T15:31:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229230"},"modified":"2022-11-09T06:03:58","modified_gmt":"2022-11-09T03:03:58","slug":"project-guardrails-entornos-de-aprovisionamiento","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/project-guardrails-entornos-de-aprovisionamiento\/","title":{"rendered":"Project Guardrails: entornos de aprovisionamiento"},"content":{"rendered":"\n<p>Esta serie de art\u00edculos breves se compone de algunas cosas que aprend\u00ed en los \u00faltimos a\u00f1os al ejecutar proyectos basados \u200b\u200ben el \u00e1rea en la que estamos (asumiendo que est\u00e1s leyendo esto viniendo de la misma parte de la industria que yo \ud83d\ude42) trabajar.<\/p>\n<p>Si simplemente te est\u00e1s topando con esto, la serie cubre algunos factores que son <a href=\"https:\/\/tommcfarlin.com\/tag\/open-source-project-management\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">importantes para un proyecto<\/a> :<\/p>\n<ol>\n<li>No debe haber un &quot; <a href=\"https:\/\/wordpress.mediadoma.com\/es\/project-guardrails-diseno-por-comite\/\" title=\"dise\u00f1o por comit\u00e9\">dise\u00f1o por comit\u00e9\u00bb.<\/a> \u00ab<\/li>\n<li>Nadie m\u00e1s que el equipo central de desarrollo deber\u00eda poder proporcionar el desarrollo, la puesta en escena y la producci\u00f3n.<\/li>\n<li>Nadie deber\u00eda poder escribir en producci\u00f3n excepto el equipo de desarrollo (e incluso entonces, deber\u00eda haber un proceso de implementaci\u00f3n).<\/li>\n<\/ol>\n<p>Realmente no me gusta hacer reglas estrictas y r\u00e1pidas como esta, porque las cosas cambian con el tiempo, ya sea por necesidad o por m\u00e1s experiencia. Por eso me gustan las &quot;directrices&quot;.<\/p>\n<p>Pero en el momento de escribir este art\u00edculo, estas son las cosas que veo que se est\u00e1n desarrollando.<\/p>\n<h2>Entornos de aprovisionamiento<\/h2>\n<p>En los \u00faltimos a\u00f1os, hemos progresado mucho en la rapidez con la que podemos aprovisionar nuestros sistemas para que todos se reflejen entre s\u00ed (o en general). Esto incluye nuestras cajas de desarrollo, c\u00f3mo nuestras m\u00e1quinas locales reflejan la puesta en escena y c\u00f3mo la puesta en escena refleja la producci\u00f3n.<\/p>\n<p>Aprovisionando un nuevo entorno, m\u00e1s o menos. Rueda con eso.<\/p>\n<p>Eso es si &quot;funciona en mi m\u00e1quina&quot; en realidad deber\u00eda ser cierto. No es una excusa para no poder reproducir un error.<\/p>\n<p>Y cuando es cierto, es probable que sea cierto en las m\u00e1quinas de otros, en la puesta en escena y en la producci\u00f3n. Y esto es bonito, \u00bfverdad? Quiero decir, activamos nuestras cajas, implementamos nuestros scripts o hacemos lo que hacemos y luego tenemos la configuraci\u00f3n que necesitamos.<\/p>\n<p>Entonces, \u00bfqu\u00e9 significa aprovisionar entornos? Depende del entorno al que te refieras.<\/p>\n<h3>\u00bfC\u00f3mo es esto realmente?<\/h3>\n<p>Si est\u00e1 trabajando en WordPress, que supongo que es si est\u00e1 leyendo esto, entonces se supone que est\u00e1 ejecutando un servidor web, una base de datos y PHP como m\u00ednimo.<\/p>\n<p>Un entorno de desarrollo puede tener el siguiente aspecto:<\/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 es el m\u00e1s com\u00fan,<\/li>\n<li>Al menos PHP 5.2.4 (se recomienda PHP 7.1),<\/li>\n<li>O algo comparable.<\/li>\n<\/ul>\n<p>Tambi\u00e9n puede 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> o algo como <a href=\"https:\/\/github.com\/Varying-Vagrant-Vagrants\/VVV\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">VVV<\/a>. Todo depende de la naturaleza de su trabajo.<\/p>\n<p>Adem\u00e1s, dependiendo de la naturaleza de su negocio, puede tener un IDE asignado junto con varios archivos de configuraci\u00f3n para <a href=\"https:\/\/tommcfarlin.com\/following-the-wordpress-coding-standards\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">hacer cumplir ciertas reglas<\/a>.<\/p>\n<h3>\u00bfY el Resto de los Ambientes?<\/h3>\n<p>Como siempre:<\/p>\n<ul>\n<li>el desarrollo se refiere a la configuraci\u00f3n en su m\u00e1quina local,<\/li>\n<li>puesta en escena se refiere al \u00e1rea en la que usted y las partes interesadas pueden probar,<\/li>\n<li>y producci\u00f3n es donde reside la aplicaci\u00f3n.<\/li>\n<\/ul>\n<p>Pero esto tambi\u00e9n se ve diferente dependiendo de d\u00f3nde trabaje, c\u00f3mo est\u00e9 organizado su trabajo, etc. No se trata tanto de c\u00f3mo se usa, sino de c\u00f3mo se usa.<\/p>\n<h4>Puesta en escena<\/h4>\n<p>Por lo general, esto se aprovisionar\u00e1 en un servidor (o grupo de servidores seg\u00fan el tama\u00f1o del proyecto) en el que puede implementar su c\u00f3digo m\u00e1s reciente para realizar pruebas. Puede incluir funcionalidad parcial, datos de prueba y solo un subconjunto de informaci\u00f3n de la producci\u00f3n (si opta por extraer esa informaci\u00f3n, es decir, la base de datos, del entorno de producci\u00f3n).<\/p>\n<p>Esto le brinda a usted y a las dem\u00e1s partes interesadas la capacidad de revisar lo que sucede y c\u00f3mo funcionar\u00e1 en la producci\u00f3n sin tener que preocuparse por destruir nada sensible.<\/p>\n<p>El c\u00f3digo generalmente se implementa desde una rama, generalmente maestra, desde su repositorio de Git (si eso es lo que est\u00e1 usando). Y herramientas 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. tambi\u00e9n se utilizan para evaluar la calidad del c\u00f3digo, ejecutar cualquier prueba automatizada y finalmente implementar el c\u00f3digo.<\/p>\n<p>Al final, cada entorno se aprovisionar\u00e1 de manera que se pueda duplicar r\u00e1pidamente en las m\u00e1quinas locales, los servidores de ensayo y los servidores de producci\u00f3n. Adem\u00e1s, deber\u00eda ser f\u00e1cil empujar y extraer datos entre ellos para facilitar el trabajo con los datos.<\/p>\n<h4>Producci\u00f3n<\/h4>\n<p>Finalmente, la producci\u00f3n tiene que ver con el proyecto de funcionamiento real; Esto significa que el servidor, la aplicaci\u00f3n y la base de datos se ejecutan conjuntamente y los usuarios los utilizan.<\/p>\n<p>Esto tambi\u00e9n significa que el c\u00f3digo est\u00e1 en un lugar estable. Es probable que existan mecanismos de registro que notificar\u00e1n al equipo de desarrollo sobre cualquier problema. No se debe realizar ning\u00fan cambio de c\u00f3digo en este entorno sin que pase primero el control de calidad o la prueba.<\/p>\n<h3>\u00bfY los procesos en marcha?<\/h3>\n<p>Bien, supongamos que est\u00e1 trabajando con una configuraci\u00f3n tradicional, a falta de un t\u00e9rmino mejor, donde todas sus implementaciones se realizan a trav\u00e9s de S\/FTP en un entorno de producci\u00f3n (o incluso de ensayo). De esta manera, los usuarios pueden bajar archivos, hacer los cambios y volver a subirlos.<\/p>\n<p>Eso no es bueno.<\/p>\n<p>Esto significa que cualquier persona con las credenciales puede iniciar sesi\u00f3n, realizar los cambios y omitir el control de fuente, la integraci\u00f3n continua, las herramientas de control de calidad, etc., y realizar los cambios que desee.<\/p>\n<p>Socava todos los procesos puestos en marcha. Esto no solo evita el procedimiento est\u00e1ndar (que existe por una raz\u00f3n, por supuesto), sino que termina descifrando el c\u00f3digo que un desarrollador o equipo de desarrolladores tiene en sus m\u00e1quinas principalmente porque lo que est\u00e1 en producci\u00f3n ya no est\u00e1 sincronizado con el repositorio de c\u00f3digo.<\/p>\n<p>Adem\u00e1s, este c\u00f3digo podr\u00eda extenderse a trav\u00e9s de sucursales que a\u00fan no se han fusionado o implementado. Esto nos deja con una variedad de situaciones en las que los desarrolladores y los clientes han roto alguna parte del proceso de construcci\u00f3n y, por lo tanto, todo el proyecto.<\/p>\n<p>Cuando llega el momento de verificar la producci\u00f3n, no est\u00e1 sincronizado con el desarrollo y la puesta en escena, y nadie sabe por qu\u00e9. Cuando llega el momento de implementar, los cambios se sobrescriben y los responsables han perdido lo que pensaban que iban a ver.<\/p>\n<h3>\u00bfQu\u00e9 debe hacer un equipo?<\/h3>\n<p>No s\u00e9 si hay una respuesta correcta a esto, pero cuanto m\u00e1s tiempo trabajo en esta industria, m\u00e1s creo que la empresa, o empresas, responsables de crear la soluci\u00f3n para el cliente deben tener control sobre el proceso desde el final. para terminar.<\/p>\n<ul>\n<li>Los dise\u00f1adores son responsables de administrar sus \u00e1reas de creaci\u00f3n de conceptos, simulacros, creaci\u00f3n de plantillas de demostraci\u00f3n y solicitud de comentarios.<\/li>\n<li>Los gerentes de proyecto son responsables de comunicarse con los departamentos,<\/li>\n<li>Los desarrolladores son responsables de implementar la soluci\u00f3n y vincular el trabajo de los dise\u00f1adores con el back-end funcional,<\/li>\n<li>El cliente es responsable de revisar los cambios, proporcionar comentarios y proporcionar cualquier otra informaci\u00f3n necesaria para completar la tarea.<\/li>\n<\/ul>\n<p>Esto significa que cuando se trata de configurar el dominio, el alojamiento, los entornos, el control de versiones, el proceso de compilaci\u00f3n y la integraci\u00f3n continua, y todo lo dem\u00e1s que he olvidado mencionar, recae directamente en el equipo de desarrollo.<\/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: entornos de aprovisionamiento\" ><\/a><\/p>\n<p>Permanezca en las trincheras, mant\u00e9ngase en el objetivo (pero tenga en cuenta a quienes lo rodean).<\/p>\n<p>En pocas palabras, estas no son responsabilidades del cliente ni deber\u00edan serlo. Los l\u00edmites de la responsabilidad deben establecerse, mantenerse y respetarse en todos los equipos, no solo en los desarrolladores y los clientes o los clientes y los dise\u00f1adores o los dise\u00f1adores y los desarrolladores, etc.<\/p>\n<h2>\u00bfQue sigue?<\/h2>\n<p>En la pr\u00f3xima publicaci\u00f3n, hablar\u00e9 sobre las responsabilidades que tienen los desarrolladores (y otras partes interesadas) en el mantenimiento de entornos para el c\u00f3digo.<\/p>\n<p>Es decir, qui\u00e9n debe ser responsable de qu\u00e9 y qui\u00e9n tiene acceso para leer y escribir qu\u00e9 datos y c\u00f3mo puede afectar en \u00faltima instancia al resultado del proyecto.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00bfQu\u00e9 significa aprovisionar entornos? Realmente depende del entorno del que est\u00e9 hablando, as\u00ed que echemos un vistazo a cada uno.<\/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":[716,747],"tags":[1172],"class_list":["post-229230","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desarrollador","category-fuente-abierta","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/229230","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/comments?post=229230"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/229230\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/166424"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=229230"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=229230"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=229230"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}