Modernización de aplicaciones

Experiencias en la modernización de soluciones

Creada por Alejandro Escanero Blanco / Twitter: @aescanero Documentación y demo en https://github.com/aescanero/dockerevents/opensouthcode2018 Presentación en Disasterproject

Introducción

¿Que es una aplicación Legacy (Sistema Heredado)?

Es un marrón que lleva ahí mucho tiempo y nadie sabe nada

No hay documentación

No hay codigo fuente

Existe codigo fuente pero no compila

Existe, compila, pero no lo entiende nadie

Documentar

Cruzar los dedos

Rezar

Mad Max


Problema: El tiempo es dinero

Fuente: Sistema Heredado

Las nuevas necesidades del servicio

Comercial: Ese producto tan bueno que está en infraestructura del cliente

Gerente: Vamos a poderlo en otro cliente

El modelo antiguo:

El nuevo:

Sistemas vs Desarrollo

Sistemas y Desarrollo contra el mundo

Problema (Por si no os habeis dado cuenta): El tiempo es dinero

Primer paso: Evaluación del proyecto

Analizar infraestructura:

Como funciona la aplicación:

La Base de datos y su modelo:

Servidores físicos

Aplicación cliente servidor o multicapa

Base de datos (Oracle) con lógica de negocio en la misma

La realidad (linea roja) es una larga lista de capas intermedias: ComoEs

¿Hasta donde queremos llegar?

El modelo de negocio

On Premise o Cloud

Infraestructura cliente

Precios y costes fijos

Infraestructura de cliente

Control de los datos

Peor soporte de aplicación

Implantación más simple y lenta

Elasticidad

Precios por servicio

Infraestructura de terceros

Desconfianza en la seguridad

Mejor soporte de aplicación

Implantación más compleja y rápida

Fuente: Beneficios de Cloud vs On Premise Fuente: What are public, private, and hybrid clouds?

Otros requisitos

Tiempo

Coste

Licencias

Para ayer

Gratis

What?

Segundo paso: Ciclo de vida de una modernización

ComoEs




Analizar la situación actual y buscar mejoras. Practicamente es una labor de preventa.

Diseñar mejoras que cumplan los requisitos. Es una labor evangelista.

Implantar. Incluye las pruebas, es una labor de comunicación.

Operar. Labor de recolectar las opiniones.

Una labor de mejora continua tambien es de comunicación continua

Todos los clientes soportan virtualización

No se puede perder el tiempo en nuevos servidores físicos

El primer paso es ¿Podemos migrar a virtual el entorno?

Incluso entornos muy antiguos pueden ser virtualizados (RHEL o Debian + 10 años)

El primer paso es ¿Podemos migrar a virtual el entorno?

El segundo es migrar y hacer paquetes (OVF)

Fuente: Open Virtualization Format

Las redes de los clientes son un misterio

¿Y si necesitas montar un cluster pero no tienes balanceador o Fence?

Una solución OpenSource muy extendida es Pfsense, que dispone de capacidades de cortafuegos, balanceador con HaProxy y múltiples herramientas

Configurar un cluster con PfSense es facil y rápido y no requiere de dependencias.

Autodespliegue

Podemos programar despliegues o actualizaciones de la aplicación

Pero en un entorno de muchas máquinas nos interesa un gestor de configuraciones

Ansible es perfectamente válido para lanzar actualizaciones, tests y terminar

Simplifica el trabajo de volver atras

Fuente: Ansible

Separar la aplicación de las máquinas virtuales

Con las MV no llega para llegar al cliente, debemos empaquetar las aplicaciones

Los contenedores nos aislan la aplicación del SO

Para mejorar el despliegue del punto anterior

Ventajas de orquestar contenedores

Reinicio de contenedores caidos

Escalado horizontal

Descubrimiento (DNS) y balanceo de carga

Secretos y configuración

Almacenamiento persistente

Múltiples soluciones de red

Todas las grandes cloud lo soportan

Se puede federar

Monitorización y avisos

Zabbix es un sistema de monitorización de fácil despliegue

Es una tendencia que supera actualmente a Nagios

Integrarlo en un cliente es un proceso complejo

Se integra facilmente con Graphana (mejores informes)

Fuente: Zabbix

¿Y despues?