Implementación de software
Implementación de programas es todas las actividades que hacen disponible un sistema de software para su uso.
El proceso de implementación general consta de varias actividades interrelacionadas con posibles transiciones entre ellas. Estas actividades pueden ocurrir en el lado del productor o en el lado del consumidor o ambas. Debido a que cada sistema de software es único, los procesos o procedimientos precisos dentro de cada actividad difícilmente se pueden definir. Por lo tanto, " despliegue " debe interpretarse como un proceso general que debe personalizarse de acuerdo con requisitos o características específicas.
Historia
Cuando las computadoras eran extremadamente grandes, caras y voluminosas (mainframes y minicomputadoras), el software a menudo estaba inclinado junto con el hardware por los fabricantes. Si el software comercial fuera necesario instalar en una computadora existente, esto podría requerir una visita costosa y que consumen mucho tiempo de un arquitecto de sistemas o un consultor. Para la instalación compleja en las instalaciones locales de software empresarial hoy en día, este a veces puede ser el caso.
Sin embargo, con el desarrollo del software de mercado masivo para la nueva era de las microcomputadoras en la década de 1980, surgieron nuevas formas de distribución de software: primero cartuchos, luego casetes compactos, luego disquetes, luego (en la década de 1990 y más tarde) medios ópticos , Internet y Flash Drives. Esto significaba que la implementación de software podría dejarse al cliente. Sin embargo, también se reconoció cada vez más con el tiempo que la configuración del software por parte del cliente era importante y que esto idealmente debería tener una interfaz fácil de usar (en lugar de, por ejemplo, requerir que el cliente edite entradas de registro en Windows).
En implementaciones de software previas a Internet, las implementaciones (y su primo estrechamente relacionado, los nuevos lanzamientos de software) fueron necesariamente asuntos costosos, poco frecuentes y voluminosos. Por lo tanto, es discutible que la propagación de Internet hizo posible el desarrollo de software ágil de extremo a extremo. De hecho, el advenimiento de la computación en la nube y el software como servicio significaba que el software podría implementarse en una gran cantidad de clientes en minutos, a través de Internet. Esto también significaba que, por lo general, el proveedor de software ahora determinaba los horarios de implementación, no por los clientes. Dicha flexibilidad condujo al aumento de la entrega continua como una opción viable, especialmente para aplicaciones web menos riesgosas.
Otras opciones para el despliegue de software incluyen el despliegue azul–verde y el despliegue de la liberación canaria.
Actividades de implementación
- Liberación
- La actividad de liberación se deriva del proceso de desarrollo concluido y a veces se clasifica como parte del proceso de desarrollo en lugar del proceso de despliegue. Incluye todas las operaciones para preparar un sistema de montaje y transferencia al sistema informático (s) en el que se ejecutará en producción. Por lo tanto, a veces se trata de determinar los recursos necesarios para que el sistema funcione con el desempeño y la planificación tolerables y/o documentar las actividades posteriores del proceso de despliegue.
- Instalación y activación
- Para sistemas simples, la instalación implica establecer alguna forma de un comando, atajo, script o servicio para ejecutar el software (manual o automáticamente). Para sistemas complejos puede implicar la configuración del sistema – posiblemente haciendo preguntas de usuario final sobre su uso previsto, o directamente preguntándoles cómo les gustaría que se configurara – y/o haciendo todos los subsistemas requeridos listos para usar. La activación es la actividad de comenzar el componente ejecutable del software por primera vez (no confundirse con el uso común del término) activación relativa a una licencia de software, que es una función de los sistemas de gestión de derechos digitales.)
- En implementaciones de software más grandes en servidores, la copia principal del software a utilizar por los usuarios - "producción" - se puede instalar en un servidor de producción en un entorno de producción. Otras versiones del software desplegado pueden instalarse en un entorno de prueba, entorno de desarrollo y recuperación en casos de desastre.
- En complejos entornos de entrega continua y/o software como sistema de servicio, las versiones configuradas del sistema pueden incluso existir simultáneamente en el entorno de producción para diferentes clientes internos o externos (esto se conoce como un arquitectura multi-tenant), o incluso ser lanzado gradualmente en paralelo a diferentes grupos de clientes, con la posibilidad de cancelar uno o más de los despliegues paralelos. Por ejemplo, se sabe que Twitter utiliza este último enfoque para la prueba A/B de nuevas características y cambios de interfaz de usuario. Un grupo "en vivo escondido" también se puede crear dentro de un entorno de producción, que consiste en servidores que aún no están conectados al balanceador de carga de producción, para los propósitos de despliegue azul-verde.
- Desactivación
- La desactivación es la inversa de la activación y se refiere a cerrar cualquier componente ya ejecutado de un sistema. A menudo se requiere desactivación para realizar otras actividades de despliegue, por ejemplo, un sistema de software puede necesitar ser desactivado antes de que se pueda realizar una actualización. La práctica de eliminar los sistemas usados infrecuentemente o obsoletos del servicio suele denominarse retiro de aplicaciones o desmantelamiento de aplicaciones.
- Desinstalación
- La desinstalación es el inverso de la instalación. Es la eliminación de un sistema que ya no es necesario. También puede implicar cierta reconfiguración de otros sistemas de software para eliminar las dependencias del sistema desinstalado.
- Actualización
- El proceso de actualización reemplaza una versión anterior de todo o parte de un sistema de software con una versión más reciente. Consiste comúnmente en desactivación seguida de instalación. En algunos sistemas, como en Linux cuando se utiliza el gestor de paquetes del sistema, la versión antigua de una aplicación de software se desinstala normalmente como parte automática del proceso. (Esto es porque los administradores de paquetes Linux no suelen apoyar la instalación de múltiples versiones de una aplicación de software al mismo tiempo, a menos que el paquete de software haya sido diseñado específicamente para funcionar en torno a esta limitación.)
- Actualización incorporada
- Los mecanismos para instalar actualizaciones se integran en algunos sistemas de software (o, en el caso de algunos sistemas operativos como Linux, Android e iOS, en el propio sistema operativo). La automatización de estos procesos de actualización va desde completamente automático a iniciado y controlado por el usuario. Norton Internet Security es un ejemplo de un sistema con un método semiautomático para recuperar e instalar actualizaciones tanto a las definiciones antivirus como a otros componentes del sistema. Otros productos de software proporcionan mecanismos de consulta para determinar cuándo están disponibles las actualizaciones.
- Seguimiento de versiones
- Los sistemas de seguimiento de versiones ayudan al usuario a encontrar e instalar actualizaciones a los sistemas de software. Por ejemplo: El Catálogo de Software almacena la versión y otra información para cada paquete de software instalado en un sistema local. Un clic de un botón lanza una ventana del navegador a la página web de actualización para la aplicación, incluyendo la automatización del nombre de usuario y contraseña para sitios que requieren un login. En Linux, Android e iOS este proceso es aún más fácil porque se requiere un proceso estandarizado para el seguimiento de versiones (para paquetes de software instalados de forma oficialmente compatible) en el sistema operativo, por lo que no se requieren pasos de inicio de sesión, descarga y ejecución separados, por lo que el proceso puede ser configurado para ser totalmente automatizado. Algunos software de terceros también admite el seguimiento y actualización de versiones automatizadas para ciertos paquetes de software de Windows.
Roles de implementación
La complejidad y variabilidad de los productos de software han fomentado el surgimiento de roles especializados para coordinar y diseñar el proceso de implementación. Para los sistemas de escritorio, los usuarios finales frecuentemente también se convierten en los "implementadores de software" cuando instalan un paquete de software en su máquina. La implementación de software empresarial implica muchas más funciones, y esas funciones suelen cambiar a medida que la aplicación avanza desde los entornos de prueba (preproducción) a los de producción. Los roles típicos involucrados en las implementaciones de software para aplicaciones empresariales pueden incluir:
- en entornos preproducción:
- desarrolladores de aplicaciones: ver proceso de desarrollo de software
- ingenieros de construcción y liberación: ver ingeniería de lanzamiento
- gestores de liberación: ver Administración de lanzamiento
- coordinadores del despliegue: ver DevOps
- en entornos de producción:
- administrador del sistema
- administrador de bases de datos
- coordinadores de liberación: ver DevOps
- gestores de proyectos de operaciones: ver ITIL