Mostrando las entradas con la etiqueta Devops. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Devops. Mostrar todas las entradas

viernes, 3 de febrero de 2017

93. DevOps (2)

Ya hemos platicado acerca de DevOps, que son una serie de mejores practicas que nos permiten en este mundo vertiginoso que es la tecnología, poder tener desarrollos que cumplan en tiempo y forma con las necesidades planteadas por el cliente.

Una idea debe explotarse lo mas rápidamente posible, por que esta puede perder su vigencia, hay que aprovechar la novedad, la notoriedad para que una idea crezca, sin embargo, si una aplicación es de mala calidad, aunque la idea sea buena, la aplicación puede perderse y olvidarse, hoy en día los usuarios no dan segundas oportunidades.

En un desarrollo no empresarial, el amor es a primera vista, o me gusta me enamora y me atrapa para que regrese continuamente a la aplicación, o simplemente la desecho y nunca me vuelvo a acordar de ella.

Un error debe ser corregido de la misma forma, ágil, ya no puedo darme el lujo de dejar una aplicación fuera de línea por periodos de tiempo muy altos.

Estamos en un mundo que realmente es 24*7*365.

Es aquí en donde es necesario una técnica para desarrollar software de una manera rápida y muy eficiente.

 Si se desea aplicar DevOps es muy importante no perder de vista 7 reglas que se deben convertir en un mantra para todos aquellos que quieran aplicar realmente DevOps.

  1. Infraestructura como código
  2. Integración continua
  3. Pruebas automatizadas
  4. Monitoreo de rendimiento de la aplicación
  5. Liberaciones continuas
  6. Administración de liberaciones
  7. Administración de la configuración
¿Pero que significa cada paso?

Infraestructura como código: elimina uno de los problemas mas grandes que existen en el desarrollo de aplicaciones, el que en equipos diferentes (desarrollo siempre es diferente a producción), las aplicaciones se comporten de manera diferente. Además de que los ambientes de desarrollo por lo regular tienen instalados software que se emplea para diversas actividades, software que normalmente no esta instalado en el ambiente productivo.

El desarrollo en la nube elimina en gran medida este problema ya que se pueden tener equipos con mejores características.

Integración continua: Se acabo la época del programador héroe, en el que un solo programador hacia todo, hoy estamos en una época de grupos distribuidos geográficamente, en la que se busca a los mejores para efectuar tareas que antes hacia el equipo de un solo hombre, pese a que el arquitecto es el gran orquestador de las actividades del desarrollo, las aplicaciones que fueron desarrolladas por personas o equipos diferentes en diferentes partes del mundo, deben operar correctamente entre si. Es aquí en donde entra la integración continua, cada componente debe tomar la parte del rompecabezas que le corresponde, para así generar un todo, los errores de integración deben ser detectados al momento, para evitar que por un error en las piezas, se incrementen los tiempos o se baje la calidad.

Pruebas automatizadas: Grandes softwares, requieren grandes cantidades de pruebas, pero el tiempo para hacerlas es cada día menor, hay pruebas de regresión para ver si las liberaciones no han funcionalidad en el pasado, el rendimiento es importante, es necesario saber como será el desempeño de la aplicación en la vida real, de nada me sirve probar con un solo usuario y que cuando meta un segundo la aplicación deje de funcionar.

La cantidad de pruebas que puede tener una aplicación a lo largo de su vida puede superar algunos miles, y el permitir que se hagan con factor humano, trabajando bajo presión y con tendencia al cansancio, genera productos de baja calidad. Las pruebas automatizadas deben ser validadas para que aporten valor.

Un buen set de pruebas automatizadas reduce el tiempo de pruebas de días a incluso minutos.

Monitoreo del rendimiento de la aplicación: Hoy en día estamos ante aplicaciones que se encuentran activas 24x7x365, es necesario saber que pasa en ellas, pero sin ser intrusivos,
se debe brindar el soporte para poder contestar a las siguientes preguntas ¿Qué pasa en una aplicación? ¿Cuándo se degrada el servicio? ¿Sufro algún ataque? ¿Mis recursos son suficientes? ¿Cuántos usuarios tengo? ¿El crecimiento es el esperado?

Liberaciones continuas: Un tema escabroso sobre todo para aquellos que vienen de otras generaciones en las que los ciclos de desarrollo se encontraban completamente divididos, las liberaciones continuas permiten pasar cambios de un ambiente a otro prácticamente de manera instantánea, el subir los cambios en desarrollo actualiza la versión que se encuentra en una ambiente de integración, con una simple aprobación esta versión pasa a QA, a preproducción o incluso a producción, haciendo que los tiempos de liberación pasen de ventanas de varias horas a ventanas de minutos, en los que incluso el servicio puede continuar disponible.

Liberaciones continuas permite la solución de problemas o la integración de funcionalidades en tiempos pequeños, permitiendo que el cliente conserve su capacidad de asombro, o evitando la partida de clientes por errores en el aplicativo.

Administración de liberaciones: Una liberación pasa una versión aprobada, de una manera sencilla entre ambientes, tenido un código único, que ya fue probado y se encuentra completamente estable.

Administración de la configuración: Establece la consistencia de los productos durante el ciclo de vida, determina ¿Qué requisitos se cumplen? ¿Cuáles faltan? ¿Qué versiones de los productos se manejan? ¿Qué componentes se liberan? su función es tener un conjunto de fotografías de lo que ocurrió, ocurre y ocurrirá en un proyecto


Una ventaja de DevOps es que nos entrega métricas del proceso, por lo que se puede seguir la premisa de "Lo que no se mide no se puede mejorar" por lo que podemos tener este proceso en mejora continua.

Felices líneas.

lunes, 3 de octubre de 2016

83. Devops

Devops, se puede decir que es una ideología, que no debería ser nueva, es mas no debería ni siquiera estar en la lista de cosas que una empresa debería implementar, sin embargo cuando perdemos la perspectiva de lo que una empresa busca, cuando nos gana el egoísmo propio del ser humano, es cuando esta ideología no se cumple.

Una empresa debe buscar un solo objetivo, ir por un solo camino, hacer que todos sus engranes se muevan juntos, así debe nacer, así debe vivir, así debe transformarse, cuando esto ocurre, la empresa se mueve muy rápido, se adapta, reacciona, es capaz de sobrevivir a la adversidad.

Pero que pasa en la realidad, supongamos que fundamos una empresa pequeña, una de un solo hombre, en donde nosotros hacemos todo, conforme el tiempo pasa, necesitamos mas manos, nos dividimos, uno desarrolla, otro vende, pero necesitamos ahora calidad, así que nos volvemos a dividir, uno desarrolla otro vende otro supervisa la calidad, poco a poco nuestra empresa se hace compleja, se empiezan a crear muchos engranes, muchas islas, y es aquí en donde empieza el problema, cada isla empieza a ver por aquello que es mas importante para ella, no por aquello que es mas importante para la empresa.

Se han escrito cientos de libros acerca de que debemos tener una misión, una visión y unos objetivos, ¿Por que? pues por algo sencillo, la empresa debe ser una, debe ir en la misma dirección, debe de seguir el mismo camino.

NO, somos islas separadas, somos un todo, eso es Devops.

Pero entonces digo, ¿Por que se considera algo nuevo? si es algo que debería existir desde el momento mismo que creamos la empresa, esto es por que todo sistema complejo tiende al caos, y ante esto es a lo que nos encontramos, cuando empezamos a dividir la empresa por responsabilidades, y a cada una se le trazan objetivos individuales y específicos, generamos ese caos, por que rompemos la comunicación, hacemos que cada uno siga su camino.

Devops, se puede resumir en una sola frase "Trabajar juntos", es seguir una meta en común, estar todos involucrados todo el tiempo, dejar de vernos como áreas independientes y participar todos en todos los procesos, tener canales amplios y fuertes de comunicación.

¿Qué ganamos? ganamos que compartimos una visión, compartimos lo que se espera del proyecto, compartimos el desarrollo y la implementación del mismo, si por alguna causa no se esta generando lo que se espera, el cambio de rumbo es sencillo, por que hay muchos ojos y todos tienen una sola visión, que amplia el panorama.

Esto no es algo nuevo, es algo útil una ideología que debería existir en todo momento, pero que tendemos a olvidarla.

Felices Líneas