DevOps en los negocios

En 4Geeks siempre queremos entregar productos que sean exitosos, usando la tecnología apropiada para cada proyecto. Desde hace algunos años la cultura DevOps ha estado incrementándose exponencialmente y hemos acordado adoptarla y comenzar a utilizarla tanto internamente como con nuestros clientes. El resultado de este enfoque ha sido muy significativo, comenzamos a entregar más rápido y de mejor manera, productos como 4Geeks Payments el cual está usando distintas herramientas de automatización que nos permiten mantener nuestros sistemas siempre activos y realizar despliegues más de una vez por día, algo realmente increíble.

Las DevOps procuran reducir las brechas entre el desarrollo y las operaciones. Donde el desarrollo se concentra en gestión de código y creación, cuya finalidad es ser remitido a operaciones, donde nos aseguramos que el código es estable y corre en nuestra infraestructura. Es alinear cada departamento con la idea del negocio, obtener resultados reales. Lo cual conlleva procesos de planificación, liberación, creación y supervisión, teniendo un ciclo infinito de procesos automáticos los cuales abordaremos posteriormente en este blog.

Las DevOps construyen un puente donde el desarrollo y las operaciones pueden trabajar juntas y comunicarse, rompiendo silos. No todo es escribir códigos geniales y probarlos una y otra vez, debemos enfocarnos en la entrega, que es donde DevOps se destaca. Hace unos pocos días estaba viendo un webinar Gitlab con Víctor Hernández, Architect Solution en Gitlab y mencionó un buen ejemplo de porqué debemos Despachar al mercado correctamente. En 2012 Knight Capital Group creó una nueva funcionalidad para reemplazar algún código heredado y en desuso, el código anterior solía utilizar una bandera para activar o desactivar la función, por lo que siempre estaba desactivada.

El código actualizado reutilizó la funcionalidad de la bandera (allí es donde todas las cosas malas comienzan). Resultó que un ingeniero olvidó desplegar en un servidor, entonces básicamente cuando el código fue desplegado en los otros servidores habilitando la famosa bandera, él también habilitó la funcionalidad del código anterior en el servidor no actualizado. Esta pequeña acción no solo le costó a la compañía más de USD 400 millones, sino que también se fueron a la quiebra, los detalles los pueden ven en 45 minutes in hell.

Hay miles de maneras de fallar al despachar código y Marvin Li lo sabe cuando escribió este artículo interesante sobre 9 cosas que estamos haciendo mal al desplegar. Según el autor son 9, pero les mostraré y describiré las tres que considero principales:

  1. Mala comunicación: Esto aplica para cada aspecto de nuestra vida. Realmente impulsamos a nuestros equipos a comunicarse eficientemente. Cada ingeniero realiza cambios, pero ¿qué tal si no notificamos a nuestro equipo, que un guión debe ser ejecutado después del despliegue? Quizás el guión afecta en alguna manera el trabajo de otro miembro del equipo. La comunicación siempre es la primera clave del éxito.
  2. Ausencia de automatización de infraestructura: Es normal que los ingenieros o desarrolladores tengan que construir servidores desde cero, lidiando con bibliotecas, actualizaciones, redes, y todos los asuntos de servidores que se puedan imaginar, esto representa una dificultad para tener productos estables, si tenemos 10 servidores, podemos olvidar mantenerlos en exactamente el mismo estado, siempre hay diferencias y siempre hay actualizaciones de sistema que pueden comprometer nuestra aplicación. Usando Google, Amazon or any other PaaS provider podemos evitar las cosas que mencioné y enfocarnos en desplegar el código y hacer nuestra infraestructura escalable sin sufrimiento.
  3. Esperar demasiado para integrar: Pareciera que no es importante el desplegar frecuentemente, pero lo es. Si tendemos a realizar despliegues cada dos semanas (por ejemplo) podríamos acumular más códigos que estén afectando nuestro sistema actual. En 4Geeks Payments mantenemos nuestra rama maestra siempre con los últimos cambios y lo más importante, desplegamos casi cada día.

Como Marvin Lin listó en su artículo, hay otras posibles cosas malas que estamos haciendo para fallar en nuestro proceso de despacho de producto, podríamos no alcanzar nuestras metas debido a esos asuntos. Mi tarea de hoy es encontrar una manera de resolver esas brechas, proporcionando valor real a nuestro producto.

Antes de continuar a continuación algunos términos importantes que abordaremos:
  1. Continuos Integration (CI): Desarrolladores y testers validan el nuevo código, asegurándose que lo anterior no se rompa.
  2. Continuos Delivery (CD): Aquí es donde desplegamos y despachamos el código. La meta aquí es obtener un expedito tiempo-al-mercado.
  3. DevSecOps: Creación de guiones de seguridad donde validamos todas las posibles brechas.
  4. Monitoring: Usando diferentes herramientas para chequear constantemente la salud del sistema.
  5. Microservices: Estructura de aplicación donde dividimos la aplicación en pequeñas piezas tales como, soporte (API), fachada y capa de seguridad.
  6. Container: Éstos son parecidos a una MV en donde tenemos todos los requerimientos de sistema, haciéndola compartible y fácil de desplegar. Docker es uno de los contenedores más conocidos.

Beneficios de negocio


- Llegar más rápido al mercado

Como lo mencioné anteriormente en 4Geeks desplegamos más de una vez al día en nuestros proyectos internos y los de nuestros clientes, esto es real porque nuestra cultura DevOps es fuerte y totalmente automátizada. La RDI de liberar primero puede ser millones de dólares en ingresos. Mientras más despache sus clientes estarán más contentos, ellos tendrán funcionalidades y mejoras con mayor frecuencia, dándole a mercadeo la posibilidad de anunciar más y más cosas buenas a su plataforma que mejora la RDI.

- Comunicación y Colaboración

Personalmente persuado a nuestros equipos a mejorar la comunicación cada día, esta es una importante clave para todo proyecto. Si todos están en la misma página el producto contendrá exactamente lo que es requerido. La meta para nosotros es romper los silos TI, donde los equipos estén auto-organizados y cada equipo trabaje de forma colaborativa. No queremos tener un relato de pesadilla.

- Hasta la vista... errores

Los informes de errores disminuirán considerablemente a medida que mayor tiempo tengan implementando una cultura DevOps. Tener pruebas de automatización dentro de un buen proceso de continuo de Integración evitará que se envíen nuevos errores al entorno de producción. a producción. ¿Qué pasó con los viejos errores? Una buena cultura de DevOps proporciona herramientas de monitoreo para buscar y atacar errores rápidamente  una respuesta más rápida, esto más una buena estructura de entrega puede ayudarnos a atacar errores rápidamente.

- Una infraestructura más inteligente

Podemos reducir los costos cuando la plataforma correcta eligiendo la plataforma adecuada para nuestro proyecto, pero si también tenemos la mejor  infraestructura, podemos ahorrar miles de dólares. Automáticamente podemos agregar más potencia a nuestra aplicación cuando sea necesario, por ejemplo durante la temporada alta, pero también disminuirla cuando no estamos usando ninguna que requiera un esfuerzo adicional. Todo esto es posible si tenemos la configuración correcta. Infraestructura a escala.

- Aumentar la productividad

Siempre queremos que nuestros equipos estén haciendo cosas que impacten nuestros sistemas proporcionándole valor,  de manera que todo el equipo pueda enfocarse en innovar y despachar nuevos productos. Podemos hacer de nuestro equipo, un team más inteligente, probablemente no necesitaremos agregar más personas solo para corregir informes con errores debido a que ellos son insostenibles. El mismo equipo con las mismas personas pueden administrar 1 servidor o 100, la diferencia real se encuentra en adoptar un proceso automatizado realmente productivo.

- Mejorar la calidad y el rendimiento de los productos

Debido a que reduciremos los errores, nuestros clientes no se enfrentarán a demasiados problemas en la producción lo cual los hará felices. Con algunas herramientas de monitores, podemos verificar el rendimiento de la aplicación y corregirla si es necesario. Tener una buena estructura de servidor puede hacer que cada solicitud sea más rápida y los clientes podrán usar su producto con seguridad.

"DevOps no es un objetivo, sino un proceso interminable de mejora continua ”
- Jez Humble

Ciclo de vida de las DevOps




No vamos a detallar cada paso del ciclo de vida de las DevOps, pero es altamente importante conocer el proceso y la importancia del mismo. Sus proyectos probablemente se vuelvan más grandes cada día, y es extremadamente importante que conozca cuál proceso tenemos que abordar en nuestro equipo para tener el producto extraordinario que queremos.

Comunicación sobre planificación es clave para que un proyecto sea exitoso o no. Hay muchas herramientas para comunicación y planificación allá afuera que pueden ayudarnos a alcanzar esto.

Todo equipo necesita documentar su progreso en su código, es importante para el registro, los equipos también deben realizar revisiones de códigos para chequear las formas de codificar de otros compañeros de equipo, el equipo se vuelve más experimentado.

Luego de que cada código este listo siempre hay una etapa de pruebas continuas y verificación de estabilidad, donde la idea es mantener nuestro sistema libre de errores, mediante el chequeo del código nuevo y del anterior.

Todo código debe ser verdaderamente probado para ser desplegado en producción, teniendo todo el código y cosas necesarias para comenzar a ver nuestro nuevo enfoque.

El tener la estructura apropiada es vital, no queremos desperdiciar dinero en una mala estructura, definitivamente queremos que nuestro sistema corra con lo necesario para tener un 100% en desempeño y disponibilidad. Hay muchas opciones allá afuera y podemos seleccionar la que mejor se ajuste a nosotros.

Finalmente, debemos monitorear nuestra salida, siempre hay puntos de mejora, si podemos medir nuestras oportunidades de crecimiento podemos mejorar el negocio.

Elementos claves para el éxito

- Personas/Cultura

Todo esto es sobre las personas, para colocarlas en el mismo paraguas, mejorar la comunicación y destruir barreras. DevOps no es un cargo sino una cultura, una cultura donde la organización se mejora y los equipos se alinean con el negocio. DevOps intenta comprender a las personas y mejorar la colaboración mediante un proceso, todos obtienen visibilidad y un rol en él. Romper silos. DevOps es un viaje, donde el camino es comenzar a construir un ecosistema automatizado.

- Proceso

Como les mostré en la imagen del ciclo de vida, es sumamente importante tener un proceso continuo e infinito. Todo el equipo debe estar al tanto del mismo y asegurarse que cada paso sea realizado.

- Herramientas de automatización

El conjunto de herramientas que podemos utilizar va totalmente por vuestra cuenta, hay miles de ellas allá afuera. Lo que es importante es entender nuestro negocio y nuestro producto para seleccionar la tecnología y plataforma apropiada para despachar y automatizar nuestro proceso. Si necesita ayuda para seleccionar la tecnología apropiada para ese viaje llamado DevOps, no dude en contactarme mediante sergio@4geeks.io siempre puedo ayudar a mejorar productos.

Resumen

La cultura DevOps es vital en 4Geeks y sabemos que es vital para distintos productos allá afuera (ejemplo: Netflix). Es importante para enfocarse en las personas y en cómo mejorar la comunicación entre equipos, si alcanzamos esto, nuestro negocio avanzará más rápidamente y el crecimiento será exponencial.

Siempre que necesite alguna orientación para hacer real su cultura DevOps nos será grato el acompañarle en este extraordinario viaje, no más déjenos un mensaje y de seguro le contactaremos.

Comentarios

Entradas más populares de este blog

Si Tu Negocio Está Estancado, Debes Leer Esto

Como Crecer un Producto SaaS con Bajo Presupuesto

5 Casos de Exitos de las Apps mas Utilizadas en el Mundo