Razones buenas y simples para tener múltiples entornos.


71

A lo largo de mi carrera, trabajé en compañías que tenían una colección de diferentes entornos para diferentes propósitos. Siempre tuvimos más o menos nuestro entorno de escritorio, un entorno de prueba, un entorno de control de calidad, un entorno de preparación y un entorno de producción. Esto fue para ambos servidores / aplicaciones y cualquier fuente de datos que estuviéramos usando.

Cuando comencé en mi empresa actual, descubrí que el 90% de las aplicaciones se desarrollaron en un entorno de escritorio contra fuentes de datos de producción o se desarrollaron directamente en el servidor de producción, según la plataforma. Esto no fue particularmente sorprendente, ya que fui contratado en parte para hacer cambios para mejorar la forma en que funcionaba el equipo de desarrollo, lo que quedó claro en mi proceso de entrevista. Lentamente, comenzamos a cambiar la filosofía y muy pronto, la mayoría de las aplicaciones podrían ejecutarse en un entorno de escritorio, prueba o producción. No mucho tiempo después de esa puesta en escena también.

Ahora, la mayoría de nuestros desarrolladores ven el beneficio de esta metodología y la defienden con vigilancia. Sin embargo, tenemos una serie de aplicaciones heredadas que nunca se migraron. También tenemos varios programadores heredados que piensan en esto como una pérdida de tiempo. Desafortunadamente, obtuvimos el servicio de labios pero nunca la aceptación total de la gerencia. Obtuvimos lo que pensamos que era un compromiso de invertir sustancialmente en esto hace aproximadamente un año, pero nada se materializó a pesar de la considerable planificación que pusimos en ello. Ahora estamos descubriendo que necesitamos más y más entornos. Necesitamos ayuda de los equipos de administración del servidor / red para la configuración y la participación de las partes interesadas del negocio para apoyar el ciclo de lanzamiento. Ahora estamos en un lugar donde un proyecto puede funcionar lo que los desarrolladores razonables considerarían "normalmente"

Me encantaría presentar un argumento completo, pero la gerencia realmente no tiene tiempo e interés en escucharme hasta que haya un problema crítico. Realmente no puedo articular los beneficios simplemente porque siempre me pareció una segunda naturaleza. Me preguntaba si hay razones buenas, simples e irrefutables para la separación de entornos que harían que los gerentes carezcan de experiencia en desarrollo para respaldar esta idea. . ¿Hay buenos recursos / literatura sobre el tema?


1
Gran pregunta, me interesa escuchar lo que otros tienen que decir. No tengo una buena respuesta para usted porque los gerentes quieren números duros, y todos los beneficios de tener múltiples entornos son difíciles de medir en números duros.
maple_shaft

44
¿Cómo todavía no ha habido un problema crítico? Si las aplicaciones se están desarrollando en entornos de producción, debería ser común (y es común en entornos de desarrollo normales) que los errores básicos desactiven las funciones, provoquen condiciones de error e incluso bloqueen toda la aplicación. ¿Es la aplicación tan crítica para la misión que estos problemas no son fallas críticas?
JGWeissman

2
No es un caso de que no resulte en problemas críticos. Es un caso de ellos que no entienden cómo es la causa de los problemas críticos. Supongo que no lo dije lo suficientemente bien.
smp7d

1
¡Ojalá tuviera una fortuna para comenzar una recompensa!
Kris

77
Para cualquiera a quien le importe ... han pasado dos años desde que hice esta pregunta y ahora tenemos una clara separación de entornos. Sucedió debido a la repetición. Continuamente dijimos que lo necesitábamos y perdimos algunos empleados que estaban en contra y ganamos a otros. Lentamente, la marea cambió. Desearía que hubiera una fórmula para obtenerlo, pero supongo que la cultura simplemente tuvo que adoptarlo naturalmente.
smp7d

Respuestas:


86

La respuesta: dinero

No me importa cuál es la razón real. El dinero DEBE estar en la raíz de todo su razonamiento, especialmente cuando se trata de la administración.

Si ambos estuvimos sentados en una habitación durante 2 horas, podríamos encontrar docenas de razones por las cuales es mejor tener múltiples entornos.

Aquí está el problema: si las razones no se basan en el dinero, entonces ninguna de ellas importa .

Los programadores no son contratados para ser inteligentes. No son contratados para ser creativos. Son contratados para aumentar los ingresos , ya sea ganando dinero o ahorrando dinero. Si no está haciendo ninguna de esas cosas, será mejor que reúna su currículum.

Al mirarlo desde ese punto de vista, la respuesta es simple:

Tener un solo entorno aumenta nuestro tiempo de inactividad y da como resultado la pérdida de ingresos. Los entornos múltiples nos permiten proteger nuestras ganancias al brindar a nuestros usuarios un front-end que es tan confiable y confiable como nuestra empresa.

Repítelo todos los días.


Hay algunos comentarios excelentes a continuación que agregan un valor real a esta respuesta, por lo que los mencionaré:

  • Karl Bielefeldt tuvo un gran punto cuando mencionó que el análisis de costo / beneficio es un factor importante. Un economista podría referirse a él como el costo de oportunidad de buscar múltiples entornos. Si bien puede ser sorprendente escuchar, ¡hay escenarios en los que múltiples entornos pueden no ser la respuesta! Si el sitio web de su empresa es una adición muy pequeña, el tiempo de inactividad inesperado puede ser la forma más rentable de hacer negocios. Esto no suena como la posición en la que se encuentra, pero vale la pena mencionarlo.

  • BlairHippo tenía un buen punto en que debería sentirse libre de hacer que parezca una catástrofe (¡y si pierde sus datos, lo es!). La responsabilidad es una gran herramienta para persuadir a los gerentes, pero aún por la misma razón: las demandas son caras. Evitarlos ahorra dinero.


Como anexo, este artículo me pareció bastante bueno. No responde directamente a su pregunta, pero le permite reconocer cómo los programadores son vistos por la administración, lo que a su vez conduce a esta respuesta. Buena lectura.


12
+1 Por dinero es el único idioma que entiende la administración. Gran cita por cierto. Es sucinta y perfecta.
maple_shaft

77
Gran respuesta. Solo quería agregar que el beneficio debe exceder el costo. Después de cierto umbral, agregar más entornos de prueba costará más de lo que ahorra.
Karl Bielefeldt

44
+1 para el artículo "No te llames programador"
nwahmaet

3
Gran respuesta. También agregaría: siéntase libre de catastrofizar un poco. Siempre que publiques un código poco probado en los datos de producción, siempre existe la posibilidad de destruir accidentalmente dichos datos. El dinero puede ser el idioma que hablan todos los gerentes, pero la responsabilidad es al menos un dialecto popular.
BlairHippo

Hay muchas respuestas correctas a esta pregunta, pero esta es la mejor del grupo.
smp7d

18

Punto único de fallo

Al no tener un entorno de desarrollo o preparación, tiene un punto único de falla para esas aplicaciones heredadas. La gerencia lo escuchará si describe las aplicaciones heredadas en esos términos.

Debe poder lanzar su mensaje en bytes de sonido que tenga sentido para ellos. Quite el " Hablador del programador " de la discusión y reemplácelo con " Habla del gerente ". También imagina que tienes un viaje en ascensor de 30 segundos para obtener tu punto de vista.

Tuve una situación en la que mi jefe era un infante de marina. Seguí diciéndole que necesitaba herramientas de software y capacitación en informática para que mis marines fueran más productivos. No lo entendió. Finalmente fui a su oficina un día y le dije que las cosas estaban mal.

Dije algo al respecto ... "Si estuviera peleando en una guerra estaría usando palos, rocas y ramas de árboles. Lo que necesito son granadas, bazucas y ametralladoras". Recibió el mensaje.


Jaja, gracias por la buena respuesta. Estoy de acuerdo en que ser directo y agresivo es la solución para obtener lo que quieres. Nunca he tenido un marine como gerente, pero estoy ansioso por usar bazucas y ametralladoras en una discusión.
Filip

9

¿Es realmente crítico?

Puedo entender el deseo de usar entornos separados. La pregunta no obvia es:

¿Es realmente crítico migrar un sistema heredado ?

Creo que la mayoría de las personas con mentalidad técnica tienden a centrarse en la cuestión académica de qué manera es mejor y qué está bien en la academia. En los negocios, aunque lo mejor no siempre gana. No estoy diciendo que esto sea negativo o que comience una guerra de llamas. Estoy afirmando lo obvio, o lo que debería ser obvio para aquellos de nosotros que hemos estado en el negocio del software durante algunos años.

Todas las decisiones comerciales generalmente se toman en función del costo / beneficio percibido. Entonces, la pregunta que probablemente hace el negocio es:

¿Vale la pena el costo del sistema adicional y la inversión en desarrollo en una aplicación heredada en lugar de poner esa misma inversión en otro proyecto / producto?

Tengo y sigo haciendo análisis de costo-beneficio regulares para hacer determinaciones no solo en la migración / reescritura de software, sino en las decisiones cotidianas en las que generalmente participa un cliente potencial. He pasado la reescritura / migración de software antiguo porque tenía una vida limitada y por lo tanto valor.

Ambientes separados

Las razones comerciales para separar ambientes.

  • Menos riesgo en lanzamientos y correcciones de errores. Demuéstralo con números. ¿Cuántas veces ha fallado el producto y ha costado ingresos a los clientes debido a una mala versión / error?
  • Menos riesgo en el desarrollo. Volar accidentalmente el dev db es diferente de volar accidentalmente el db de producción
  • La capacidad de separar claramente los roles y el acceso, es decir. mejor seguridad. limitar la cantidad de dedos en el pastel de producción es algo bueno
  • La capacidad de separar entornos, y las prácticas y procedimientos que acompañan a este estilo de desarrollo permiten una futura construcción en Cloud Systems.
  • La separación del entorno debería forzar eficiencias en la replicación de entornos que pueden ser útiles tanto en escalas programadas como dinámicas.

+1 Por señalar que es importante tener en cuenta el costo.
sleske 01 de

Me encantan las razones de su negocio para separar ambientes. Especialmente el primero 3. La mejor respuesta. Gracias.
John Assymptoth

8

Parece que ya tiene todos los argumentos "correctos" en su lugar. En cambio, está experimentando un "arenque rojo", si lo desea. O "persiguiendo la zanahoria"

la gerencia realmente no tiene tiempo e interés en escucharme hasta que haya un problema crítico

Eso es lo que considero el verdadero problema. En mi experiencia, si una empresa tiene prácticas de desarrollo por debajo de la media tan pobres como usted describe. No se trata simplemente de "no sabíamos nada mejor". Más bien, es una compilación de deuda técnica causada por un equipo de alta gerencia que no sabe (¿le importa?) Acerca de los problemas que presenta.

En tales casos, una buena charla no cambiará repentinamente las cosas en su dirección. Tal vez sea un trauma severo (falla del producto visible para el cliente y directamente vinculada a prácticas inadecuadas), pero estoy seguro de que los expertos en tecnología son cuerdos antes de que haya intentado hablar.

Mi sugerencia es absorberlo y tomar las cosas como son o buscar una nueva posición.


7

¿Cuántos grupos de personas planean trabajar en la aplicación a la vez? Usualmente, he visto un entorno para cada grupo de personas. Estos son los desarrolladores (obtienen un entorno DEV y un entorno de integración DEV; algunos dirían que no es 100% necesario, diría que varía según el proyecto), dos entornos de prueba (un grupo de probadores que realizan pruebas muy detalladas, el otro para probadores de control de calidad de alto nivel: generalmente son usuarios comerciales reales, no probadores capacitados). También suele haber un entorno de pruebas de rendimiento aislado (para que pueda probar grandes volúmenes de datos, simular grandes volúmenes de usuarios, etc. g).

¿Por qué todos estos entornos? Por lo tanto, diferentes grupos pueden probar diferentes características sin pisar los dedos de los demás. Si los desarrolladores y los probadores trabajan en el mismo entorno, es una pesadilla: un probador puede abrir un defecto en una característica que un desarrollador está cambiando activamente cada minuto. Si hay dos niveles de prueba, pueden enfocarse en diferentes actividades y no preocuparse por estropear los datos del otro. Tener un entorno de rendimiento aislado le permite ejecutar pruebas que pueden bloquear la máquina, pero si está aislada, ningún otro probador se verá afectado.

Cuando demasiadas personas intentan hacer muchas cosas diferentes en el mismo entorno, terminas desperdiciando mucho tiempo mientras un grupo espera a que termine la prueba de otro grupo para que puedan ejecutar la suya. Y eso desperdicia tiempo, y el tiempo desperdiciado puede conducir a desperdicio de dinero, lo que Stargazer712 señaló que podría ser el argumento más fuerte.

Otra razón (no tan común) son los datos: si su aplicación tiene datos personales confidenciales o datos de tarjetas de crédito, generalmente no puede ponerlos en entornos de prueba, y generalmente hay requisitos de enmascaramiento para todo excepto los entornos de control de calidad y producción.


¿Alguien puede explicar el voto negativo?
FrustratedWithFormsDesigner

@maple_shaft: LOL! Hubiera preferido tener una explicación, para poder ajustar mi respuesta.
FrustratedWithFormsDesigner

1
¿Qué voto negativo? No veo un
voto negativo

@YannisRizos: No era uno ... pero nunca se explicó.
FrustratedWithFormsDesigner

5

Parece que ha invertido un gran esfuerzo para lograr un cambio cultural en su lugar de trabajo. Este es un gran logro ya que el cambio es difícil en el mejor de los casos, pero el cambio cultural no se trata simplemente de cambiar las mentes de las personas, sino de cambiar los hábitos, romper los prejuicios y, en última instancia, abrir las mentes potencialmente cerradas a mayores posibilidades. Entonces, la pregunta que debe hacerse en este momento es "¿Qué me perdí?". La respuesta fácil es que es posible que no se haya comprometido completamente con la administración.

Obtener la aceptación de la administración es fácil, pero aún más difícil es obtener la aceptación. Independientemente de los argumentos sobre el dinero, etc., la realidad es que debe poder influir en la visión de prioridad de la gerencia. Su gerente tendrá un presupuesto y querrá demostrar que ese presupuesto se ha aplicado con sensatez y de acuerdo con los valores y prioridades de la empresa. Algunas de esas prioridades serán fiscales, pero otras serán para atender otras necesidades. En algunos casos, esto puede significar engrasar las palmas de otros gerentes para obtener la promoción que su jefe siempre ha querido. Sin embargo, en la mayoría de los casos, se tratará de encontrar formas de ganar más negocios o mejorar las relaciones con socios y clientes. Si no puede presentar su caso en estos términos, solo podrá llegar tan lejos antes de encontrarse en un punto muerto.

Mi sugerencia es tratar de presentar un caso sobre la productividad y cómo esto afecta el presupuesto, como lo han sugerido otros, pero también presentar el caso en términos de las prioridades de su empresa y cómo su productividad podría impactar directamente en las relaciones de la empresa con otras empresas.


"Cambiando hábitos, rompiendo prejuicios y, en última instancia, acerca de abrir mentes potencialmente cerradas a mayores posibilidades" - en retrospectiva, esta fue la clave y no puedo señalar ninguna razón por la que finalmente sucedió
smp7d

4

Aquí hay uno: comprobabilidad.

Tener un entorno de prueba le da la libertad de realizar pruebas en una base de datos que sería desaconsejable realizar en un entorno de producción.


4

¿Desea cambiar la forma en que su organización desarrolla su software? Olvídate de las "razones" para "hacer las cosas de manera diferente". Los humanos no cambian el comportamiento debido a argumentos racionales. Cambian debido a las influencias psicológicas en sus hábitos.

Entonces, ¿a dónde voy con esto?

Si bien ocasionalmente puede cambiar con éxito el comportamiento de una organización a través de la argumentación, existen otras tácticas que funcionan mejor. Éstos incluyen:

  • Soporte de base: encuentre otro desarrollador "heredado" que esté dispuesto a darle una oportunidad. Asóciese con él y cambie la forma en que funcionan las cosas. No anuncies el cambio. Solo haz el cambio. Si alguien alguna vez te pregunta al respecto, solo di "Oh sí, así es como lo hacemos ahora".

  • Asumir la responsabilidad. Voluntario para manejar implementaciones para las personas heredadas. Actúa como si lo amaras. Pueden estar felices de renunciar a esa responsabilidad. Luego ejecútalo como quieras.

  • Culpe a las personas adecuadas por sus errores. La próxima vez que se introduzca un error de aplicación heredado en producción debido a su mecanismo de implementación de la edad de piedra, indíquelo. Hazlo sutilmente ... No en un correo electrónico. La próxima vez que se encuentre en una reunión con un gerente, mencione casualmente el ejemplo de una razón por la cual la implementación fue problemática. "Sí, ¿recuerdas cómo estábamos luchando el viernes pasado debido al error de Foo que Bob registró en la producción? ¡Sí, eso fue un gran esfuerzo desperdiciado!"

  • Haz que sea fácil hacerlo de la mejor manera. Mira el iphone, por ejemplo. Hay UN botón en él. (Bueno, dos) Es MUY fácil de encender. Haga que la implementación en entornos múltiples sea una locura estúpida fácil. ¡Hazlo tan fácil que todos los gerentes puedan hacerlo!


Humans don't change behavior because of rational arguments. They change because of psychological influences on their habits. Qué deprimentemente cierto es eso. Ya se trate de software o del "mercado libre", la creencia de que las personas toman decisiones racionales en su mejor interés es una falacia.
maple_shaft

4

Es más un problema cuando comienzas a tratar con sistemas interconectados o heredados, sistemas de los que depende el negocio para que funcionen y sean precisos. Es importante porque debe haber segregación entre las etapas, es la razón por la que no DEV en PROD porque tiene el potencial de causar daños por valor de millones de dólares en tiempo perdido .

Siempre hacemos DEV -> QA -> PROD (ocasionalmente esos pasos se dividen en partes más pequeñas) con hardware idéntico detrás de ellos. Los datos de producción actuales siempre se envían de PROD a QA a DEV.

DEV: está destinado a ser el entorno limitado de desarrollo, donde las cosas se prueban, iteran y superan en cualquier dato en este entorno, nunca se debe confiar y los desarrolladores lo rechazan regularmente simplemente buscando formas de resolver un problema.

QA: Una vez que sus desarrolladores estén satisfechos con las pruebas unitarias, es hora de que el grupo de prueba los vea. Ejecutan casos de prueba, pruebas de rendimiento y encuentran errores. Esos errores / mejoras se envían a DEV y el ciclo continúa hasta que todos estén contentos.

PROD: una vez que llegue a esta etapa, debe asegurarse de que el código funcione junto con los datos actuales y que su grupo de control de calidad / usuarios empresariales estén contentos con la implementación. Si hiciste todo correctamente, simplemente deberías poder actualizar el código y terminarlo.

De la misma forma que nunca lanzaría un producto no probado a los clientes, nunca debería lanzar código no probado a un entorno de producción.

Si la empresa no está dispuesta a invertir el tiempo para hacerlo correctamente, pagará el costo en mantenimiento de emergencia y los errores 10 veces.

Como un pequeño ejemplo: tuvimos una empresa que decidió hacer un cambio en un informe en producción por su cuenta. Nadie sabía que había cambiado hasta que llegamos a abordar una variedad de problemas un año o dos más adelante.

Cuando señalamos la irregularidad en el informe, el rostro del CFO se puso blanco, resultó que estaban perdiendo ~ $ 250,000 por trimestre debido a que alguien hizo un cambio rápido.

Ocurre más a menudo de lo que piensas, si no puedes permitirte hacerlo correctamente, entonces no lo hagas.


Buen ejemplo Por supuesto, la rendición de cuentas es una razón importante para separar DEV y PROD. De esa manera, puede tener controles extremadamente estrictos en PROD, mientras le da a DEV la libertad que necesita.
sleske 01 de

3

La administración tiene una gran parte detrás del éxito de las compañías de software y los productos de software que requerían generar estos entornos. Déjame tomar un ejemplo de tu proyecto. Si su software se desarrolla a gran escala, entonces si no gestiona los requisitos de su proyecto, el control del proceso, las compilaciones de prueba, etc., esta es una posibilidad de falla. para que exista la gestión de proyectos.

Estoy un poco de acuerdo con @ Stargazer712 en que su declaración señala que el dinero es importante, pero compruebe la siguiente declaración que obtuve del libro de Marc Hamilton sobre desarrollo de software: Building Reliable Systems (Prentice Hall PTR, 1999, ISBN 0-13-081246- 3) Después de mirar todos estos factores; mi opinión sobre su pregunta es que Single Environment no le da ahorros, hará un proceso a largo plazo para completar el proyecto / software. Los entornos distribuidos ahorrarán tiempo e ingresos a medida que aprendí y vi en mi experiencia lo que sucedió con las empresas de software de inicio desde las cuales comencé mi operador.

Hay muchos artículos que demuestran que lo que importa es el éxito. Marque este paso Organizando para un desarrollo de software exitoso

Cada individuo en una organización tiene ciertas habilidades, y estas habilidades generalmente se miden con métricas de desempeño formales o informales que conducen a recompensas (compensación) como incentivos para el desempeño futuro. Las personas en una organización establecen su cultura, esos patrones de comportamiento y valores que generalmente se reconocen como adoptados.

Un gran conjunto de desarrolladores de software tendrá dificultades y, en última instancia, no cumplirán sus objetivos si tienen que pasar todo su tiempo luchando contra una estructura organizativa inapropiada.

Muchas startups de software comienzan su vida con no más de un par de desarrolladores trabajando en un garaje. No se requiere mucha estructura organizativa en este momento en la historia de una empresa, pero la estructura organizativa todavía existe. Por ejemplo, en 1977, cuando Bill Gates y Paul Allen formaron su sociedad y lo llamaron oficialmente Microsoft, la compañía tenía una estructura organizativa mínima. Menos de una docena de empleados trabajaban en la primera oficina de Microsoft en Albuquerque, Nuevo México, y todos sabían quién estaba a cargo. No se necesitaban organigramas complicados para determinar la estructura de informes de todos. Al mismo tiempo, todos los empleados conocían su papel en la empresa y lo que estaban tratando de lograr. Esto se debía a que cualquier estructura organizativa que se necesitaba podía comunicarse informalmente entre cada uno de los empleados.


1

Olvida el tiempo, el dinero, la capacidad de prueba, la calidad ... ¿qué tal la reputación ?

razones buenas, simples e irrefutables para la separación de entornos que harían que los gerentes carezcan de experiencia en desarrollo para respaldar esta idea.

Uber envió recientemente un código a github que contenía contraseñas para su entorno en vivo , permitiendo a los 'hackers' descargar todos los detalles de sus clientes. Uber dice que fue una violación, todos los demás dicen "no pongas las llaves de tus cerraduras a la vista del público. Si sus desarrolladores trabajaron completamente en un entorno de desarrollo, podrían haber liberado las claves de su entorno de desarrollo en Github, pero eso es completamente inofensivo. Que los de producción fueron lanzados muestra cuán pobre es esta idea de realizar un desarrollo en el entorno de producción.

Solo recuérdele a su gerente que ocurren errores, por lo que la forma de evitar que sea arrastrado ante el CEO que está a punto de enfrentarse a los periodistas y se ríe del público técnico es tomar medidas simples y obvias para evitar que esos errores sean catastróficos unos.


1

Parece que tiene muchos entornos diferentes y le cuesta mucho tiempo a las personas configurar un "entorno".

¡Debe tener el menor número de "entornos" diferentes con los que pueda salirse con la suya, pero poder clonar muchas copias por todas las razones que usted y la empresa deseen (¡usar "entorno para significar la configuración del sistema)!

Óptimamente, las únicas diferencias deberían ser:

  1. Tamaño (mínimo, recomendado, mayor compatible / probado contra);
  2. La puesta en escena y la producción no tienen herramientas de desarrollo.
  3. La producción está protegida contra sobrescritura accidental de datos
  4. Puede cargar fácilmente datos de clientes de demostración, prueba o [anónimos] en servidores de desarrollo o de preparación

ENTONCES, la pregunta de cuánto y qué tipo de pruebas se deben realizar es una evaluación comercial de riesgo / costo y se decide a nivel de la empresa, porque es el negocio en su conjunto el que sufrirá si se producen fallas significativas en una gama de clientes .

Edición posterior: esto me llevó a racionalizar mis convenciones de nomenclatura con mis productos web (gracias por la pregunta). Me he decidido por cuatro "entornos", con pruebas divididas entre qa (nivel único mínimo solo para probar la funcionalidad) y etapas (misma arquitectura que la producción, para pruebas de carga / rendimiento / volumen).

La única diferencia real en el aprovisionamiento es la producción / puesta en escena. Instale una base de datos en un sistema separado, que yo controlo por los grupos en los que se encuentran los diferentes servidores. Qa / dev tiene los roles de servidor web y db. El equilibrio de carga se realiza mediante cloudflare.

También tengo una variable ENV_NO, que se pasa a los sistemas para poder elegir tener tantos ejemplos de "qa" o "puesta en escena" como yo elija.

Entonces, para configurar un segundo entorno qa que incluya mi último respaldo de live, los comandos serían:

git checkout desired-branch/commit for provisioning
ENV_NO=2 bin/provision create qa
# come back after a short lunch

git checkout desired-branch/commit
ENV_NO=2 bin/cap qa deploy
# a minute or two

ENV_NO=2 bin/cap qa db:upload db:restore
# longer than I want once there is a decade of data ("longer" coffee break to traverse a 5.3km ADSL link)

Por último, tengo un servidor adicional (opcional) llamado "solo lectura" como la última red de seguridad antes de tocar el suelo. Está aprovisionado como un sistema qa pero con la copia de seguridad y actualización de anoche desactivada (el software también se actualiza a la noche anterior).

Utiliza un enfoque de "Todos los huevos en una cesta diferente": está provisto de una ubicación diferente / registrador DNS, host DNS, proveedores de servicios de host del sistema. Esta es la última / última red de seguridad, por lo que si todo se incendió, al menos puede acceder a los datos hasta anoche. Los scripts de aprovisionamiento aíslan la diferencia entre los diferentes proveedores, por lo que el 99% es el mismo, solo el indicador de solo lectura. Cloudflare Load Balancer redirigirá el tráfico al sitio de solo lectura si todos los servidores en vivo han fallado.


0

Cuando se trata de hacer un cambio, tendrá la suerte de tener a alguien que simplemente escuche su opinión profesional e implemente los cambios sugeridos.

Según mi experiencia, cada vez que tenía que hacer un cambio importante, tenía que justificarlo en términos de ahorro que la empresa haría. Por ejemplo, introducir ReSharper en la tubería de desarrollo fue bastante fácil, ya que pude decir algo en las líneas:

ReSharper cuesta alrededor de £ 50 por desarrollador. El costo promedio del desarrollador por año es de £ 40k. ReSharper debería aumentar la productividad de los desarrolladores en al menos un 20% dado que se utiliza a su máximo potencial. Digamos que el desarrollador pasa el 75% de su tiempo escribiendo código en IDE. 75% de 40k es £ 30k. £ 30k es ahora el costo de la productividad del desarrollador. Un porcentaje adicional de productividad (1%) por año cuesta £ 300. Para obtener una productividad adicional del 20%, la empresa tendría que gastar £ 6k.

Si tuviera que poner esto en perspectiva para el negocio, puede decir que puede contratar a otra persona y obtener una productividad adicional del 20% por £ 6k, o puede obtener el mismo resultado al gastar £ 50 en una licencia ReSharper. Una vez que las cifras estén al frente del negocio, la decisión será fácil de tomar.

Ahora, en lo que respecta a sus preguntas sobre tener múltiples entornos, todo lo que tiene que hacer es encontrar una manera de calcular cuánto le cuesta a la empresa cada año tener estos entornos.

Puede solicitar a sus colegas desarrolladores que realicen un seguimiento de las horas dedicadas cada semana a la configuración de aplicaciones para el desarrollo, la implementación, etc. Por ejemplo, diez horas de tiempo para desarrolladores senior pueden costar a la empresa 500 libras esterlinas. Son 10 horas que se pueden dedicar al desarrollo, o algo mucho más importante. Reúne las cifras durante un período de tiempo y proporciona a las empresas un costo anual.

Personalmente odio este tipo de política, pero es común y tenemos que vivir con ella.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.