¿Qué es la implementación de software?
- 3 minutos
Según Wikipedia, la "implementación de software" se compone de todas las actividades que hacen que un sistema de software esté disponible para su uso. El proceso de implementación general consta de varias actividades relacionadas entre sí, con posibles transiciones entre ellas. Cada sistema de software es único, por lo que la "implementación" debe interpretarse como un proceso general que tiene que personalizarse de acuerdo con características o requisitos específicos.
Algunas personas usan los términos "implementación" e "instalación" indistintamente, pero la instalación del software es solo una parte del proceso de implementación. La implementación implica muchas más cosas. Entre las actividades de implementación se incluyen las siguientes:
- "Bastidor y apilamiento" de un servidor.
- Implementar un fragmento de software actualizado en ese servidor.
- Uso de elementos como scripts e infraestructura como código.
- Incluso caminando por una oficina con una unidad USB, instalando manualmente software en equipos.
La implementación manual de software requiere mucho trabajo y no escala bien. La automatización hace que sea más rentable y más fácil garantizar la coherencia cuando se implementa software nuevo o cuando se actualiza el software de una organización.
Nuestro enfoque, como parte de esta ruta de aprendizaje, se centra en cómo implementar mejor el software para mejorar la confiabilidad. Este módulo aborda no solo la implementación de software, sino también la implementación de la infraestructura en la nube. Cuando hablemos de implementar un servicio o una solución, podemos hacer referencia a la implementación de software, de infraestructura en la nube, de configuración y de todos los elementos necesarios para que un sistema de software esté disponible para su uso de forma confiable.
Escenario: la implementación de epopeya
La palabra epopeya significa "grandioso, monumental o vasto". Pero en el contexto de esta discusión, no es algo bueno. El término "epopeya" se usó en este ámbito por primera vez en el libro de Jez Humble titulado Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation porque representa una empresa masiva (y muy disruptiva). Este es un ejemplo de lo que suele suceder:
- Una organización desarrolla una aplicación relacionada con las ventas. Esta aplicación se actualiza exactamente dos veces al año.
- Durante estas actualizaciones, se implementan todas las nuevas características, correcciones de errores (grandes y pequeñas) y actualizaciones de dependencia.
- La primera implementación del año está programada para que se produzca durante el fin de semana del Día del Trabajo, mientras que la segunda tiene lugar el fin de semana después del Día de Acción de Gracias.
- Cada actualización requiere la colaboración de todos los empleados. El equipo de aplicaciones, el equipo de soporte técnico, el equipo de infraestructuras, la administración… Todo el mundo participa en la implementación.
- Los servicios se desconectan temporalmente mientras la implementación está en curso.
- El tiempo ha demostrado que el proceso de implementación siempre conlleva problemas, ingeniería a petición, solución de problemas y cambios en la administración de la configuración.
- Rara vez sale bien y, cuando se completa, todo parece agrupado de una manera que no es reproducible.
Esta no es una situación de implementación ideal. El método de implementación de epopeya es una tarea manual intensa que presenta diversos problemas:
- Es complejo.
- Es estresante.
- Es arriesgado.
- Es lento.
- No es reproducible debido a todos los pasos complejos.
- A menudo, se necesitan varios expertos independientes para completar la implementación.
Dado que este proceso es largo y arduo, debe programarse en momentos en los que se interrumpa lo mínimo posible la productividad de los usuarios, lo que suele ser a horas poco convenientes para el equipo de implementación, como fines de semana y días festivos.
Es posible que los miembros del equipo se sientan apresurados a completar la operación de mammoth dentro del período de tiempo, lo que les provoca errores de configuración. Además, los tiempos largos entre implementaciones pueden hacer que se olvide exactamente de cómo funcionan las cosas.
El dilema de la implementación
La implementación de software es una tarea compleja y, cuando se "ahorran" varios cambios importantes, correcciones y adiciones de características para implementar todo en un solo golpe, aumenta la complejidad y, por tanto, aumenta la probabilidad de que algo pase mal. Además, cuando se produce un error, esta complejidad dificulta la tarea de detectar la causa del problema.
La complejidad también puede crear problemas para los usuarios finales, ya que es posible que tengan que tratar con el aprendizaje de muchas características y cambios nuevos a la vez, sin mencionar los errores introducidos por la complejidad de la implementación épica.
Debería haber una mejor manera, y hay. La buena noticia es que la estrategia tradicional de implementación de epopeya no es la única opción. En la unidad siguiente aprenderemos una mejor manera de continuar con este proceso.