La compañía para la que trabajo ahora todavía no implementa la entrega continua. Todavía implementamos el proyecto manualmente en el servidor, archivo por archivo. ¿Cuál es la mejor práctica: implementar manualmente un artefacto de proyecto para cada implementación o seguir haciendo la implementación de archivo por archivo?
deployment
server
devops
Jake Muller
fuente
fuente
Respuestas:
Ninguno.
La mejor práctica es automatizar su implementación, completa y exclusivamente. Eso significa que nadie puede poner nada en un servidor manualmente.
"Para resumir el resumen del resumen: las personas son un problema". (Douglas Adams)
La gente comete errores. Si uno de los archivos que olvida copiar es una "biblioteca" compartida que se ha modificado ampliamente, puede hacer que se caiga todo el sitio de Producción.
fuente
Los pasos manuales requieren mucho esfuerzo y son riesgosos: puede olvidar un archivo necesario. Tal vez no todos en su equipo sepan qué archivos deben copiarse. Todos estos problemas hacen que las implementaciones sean grandes, desalentadoras y raras, completamente innecesarias. La automatización aborda estos.
Incluso el paso de automatización más simple puede tener grandes beneficios, porque las implementaciones se vuelven triviales. Un script que copia los archivos o artefactos a través de (S) FTP o Rsync u otra tecnología es un gran primer paso. Más tarde, puede expandir esa secuencia de comandos para realizar automáticamente los pasos previos y posteriores a la implementación en el servidor, como reiniciar los servicios.
fuente
La mejor práctica sería implementar un proceso automatizado de algún tipo.
Tenga cuidado de verificar que no haya una razón especial para el enfoque 'archivo por archivo' que debería tener en cuenta.
fuente
Con la entrega continua (o implementación, en realidad) y moviendo cada archivo a mano, estás viendo los dos extremos. Es perfectamente comprensible que no pueda / no quiera crear una tubería completamente automatizada (todavía). Sin embargo, debe considerar automatizar partes del proceso.
Mover cada archivo a mano es bastante arriesgado, y podría mitigar ese riesgo, por ejemplo, etiquetando su repositorio de código, revisando esa etiqueta en su computadora, construyendo sus artefactos y cargándolos en su servidor. Cada uno de estos pasos se puede automatizar para que se ejecuten con unos pocos clics del mouse, y esto reducirá en gran medida el riesgo de olvidar un archivo o presionar accidentalmente para presionar algunos archivos adicionales.
Automatice lo que pueda, paso a paso. El hecho de que no pueda permitirse un canal de CD totalmente automatizado no debería desanimarlo a automatizar algunas partes.
fuente
La mejor práctica sería hacer un análisis de costo / beneficio para su implementación particular para su compañía particular.
La respuesta general es "no hacer las cosas manualmente, automatizar". Esta es generalmente la respuesta correcta para tipos generales de empresas. La uniformidad de las respuestas que está recibiendo debe ser una indicación de cuán fuertemente la comunidad considera que esto son mejores prácticas. Si su empresa considera que la automatización no es la herramienta adecuada, debería tener alguna comprensión de lo que los hace únicos. Esa singularidad debe tenerse en cuenta en su proceso de toma de decisiones. No hay "mejores prácticas" cuando el conjunto de muestras es 1.
Preguntas importantes como "cuántos archivos" y "con qué frecuencia se actualizan las cosas" y "cuáles son las consecuencias de romper cosas" y "qué tan rápido puede revertir un mal cambio" son preguntas importantes para responder. Si automatiza, muchas de estas preguntas dejan de ser importantes, pero son esenciales para asignar adecuadamente los costos y beneficios para un proceso de actualización manual.
fuente
Hay muchos tonos de gris entre la copia manual archivo por archivo y la entrega continua.
Comience por reducir la complejidad del proceso de implementación, por ejemplo, mediante el uso de un archivo zip, un paquete de estilo rpm, una infraestructura como herramienta de gestión de código (como títeres o chef) o incluso un simple script que copia los archivos para usted desde un área de preparación en el servidor ftp.
Los procesos de implementación con más pasos manuales tienen más probabilidades de tener errores (y, por lo tanto, fallar), como otros han dicho, eliminen el elemento humano.
No necesita implementar una entrega continua completa (que es costosa y requiere esfuerzo / inversión / innovación a lo largo del tiempo): comience de manera simple, haga que funcione, demuestre los beneficios y avance desde allí.
fuente
Depende de la tecnología de software (o pila) que esté utilizando (lenguaje interpretado, lenguaje compilado, aplicación de escritorio, móvil, etc.), soft. dev. políticas del departamento, si tiene las herramientas para automatizarlo, cuán crítica es su aplicación, y una cosa importante a considerar es su arquitectura de software (cómo se diseñó su aplicación). Es por eso que tienes aquí diferentes respuestas. Como regla general, el mejor enfoque será reducir lo más posible la intervención humana en las tareas de implementación, para evitar errores. Una buena práctica será probar todo en un servidor de control de calidad (considere usar un servidor virtual si el presupuesto es un problema) antes de la implementación, y tener procedimientos inversos para restaurar a la versión anterior en caso de desastre ( SIEMPRE tenga una copia de seguridad).
fuente