によって Juan Civeira 7年前.
656
もっと見る
Juan Civeira
DIRECCION DE OPERACIONES (EMBA-ES2017F-2)
Lean operations en el mundo IT
La razón principal por la que he escogido éste tema es porque me apasiona el mundo de las operaciones y la tecnología. Además, tengo la suerte de haberme dedicado a ello la mayor parte de mi carrera profesional en distintas posiciones.
Lo que llamaremos "Lean IT" es una mezcla entre el "Lean manufactoring" y "Lean services" ya que combina la parte de creación y desarrollo no sólo de software sino también de servicios, así cómo el soporte y operación de los sistemas que proporcionan los citados servicios IT.
Otro elemento fundamental y a la vez retador, es la cada vez mayor dependencia de los sistemas informáticos y la escalabilidad de los servicios, sirva cómo ejemplo, plataformas cómo Netflix o Uber cuyo crecimiento de usuarios es a dos dígitos.
Todo esto hace necesario una mejor gestión de los recursos y de los procesos, eliminando desperdicios y maximizando la experiencia de los usuarios y del servicio.
En el mundo IT y del desarrollo software, lo mejor no siempre es lo bueno y es una máxima que deberíamos aplicarnos.
La tecnología es un medio que debe cubrir las necesidades del negocio para aportar valor. Muchas veces los gestores de IT y los usuarios confunden el Time To Market (TTM) con el Time To Perfection (TTP), es decir, se buscan soluciones mucho más complicadas y rebuscadas que lo que realmente es necesario para el negocio y que nos darán esa ventaja competitiva al ser los primeros en aplicar dicha mejora.
Dado que la tecnología ofrece infinitas posibilidades, es muy importante conocer qué es lo que necesitamos y darle respuesta con la mejor solución en el menor tiempo posible y con el mayor aprovechamiento de los recursos disponibles.
Otro elemento fundamental en una buena gestión de las operaciones IT es el control de costes y presupuestos.
Es muy importante hacer un análisis adecuado de los recursos disponibles y de la tecnología y sistemas actuales (state of the art) ya que gastar más en IT no está directamente relacionado con un mayor retorno de la inversión.
Los modelos de desarrollo ágil se centran en maximizar la entrega de valor al usuario, aplicando ciclos cortos de desarrollo en los cuales se priorizan las entregas o releases y después se analiza y se introducen nuevos cambios para mejorar el producto.
Es un proceso iterativo en el que todos los miembros del equipo participan del proceso de creación y análisis y en el que los cambios o evoluciones son mucho más fáciles de gestionar y por tanto, la flexibilidad y capacidad de adaptación es mucho mayor que en los modelos clásicos.
Tienen muchas similitudes con el lean manufacturing, ya que cómo hemos explicado, utiliza las premisas de reducción de desperdicio, calidad, entregas rápidas, optimización, implicacion, transferencia del conocimiento etc...
El modelo waterfall o de desarrollo en cascada es el método "tradicional" que se ha seguido tanto para el desarrollo de software cómo para el diseño de sistemas.
Es una metodología que exige una definición exhaustiva y acertada de los requerimientos y del planning, dado que luego se van a ejecutar en la fase de implementación. Es un sistema rígido, en el que cualquier cambio a lo largo de la vida del proyecto es complicado de implantar y requiere un gran esfuerzo.
Ésta forma de trabajar es adecuada en grandes proyectos a medio - largo plazo cómo por ejemplo, la construcción de un puente pero que se ha quedado atrás en el desarrollo de software y sistemas en favor de las metodologías ágiles.
La mejora continua es fundamental en las metodologías ágiles y en la gestión de las operaciones IT.
Es necesario estar siempre dispuesto a mejorar los procesos y a utilizar las tecnologías necesarias para dar el mejor servicio posible.
Uno de los objetivos fundamentales que deben tener los equipos de operaciones IT es conseguir trabajar de forma proactiva en lugar de reactiva.
Si aplicamos los conceptos que hemos ido explicando cómo la automatización, la monitorización, la mejora continua en los procesos, el desarrollo conjunto y el análisis de necesidades y costes conseguiremos mejorar las operaciones y el servicio a nuestros clientes.
Otro pilar básico es la monitorización tanto de la plataforma (hardware) cómo de la aplicación (software).
Para ello es necesario tener una buena base de conocimiento que nos permita configurar los puntos de control y los umbrales de los parámetros para poder reaccionar a tiempo en caso de problemas, reduciendo así tanto el daño cómo el tiempo necesario para solucionarlo.
La monitorización es un proceso vivo, que debe evolucionar con el sistema y por lo tanto, debemos ir añadiendo y quitando alarmas y modificando los umbrales.
Además, podemos mezclar acciones y cuándo detectamos una alarma, aplicamos de forma automática el workaround, de manera que podemos solucionar problemas antes incluso de que ocurran.
Otro punto importante es la visibilidad que podemos transmitir a nuestros usuarios sobre el estado actual de los sistemas y las acciones que estamos llevando a cabo, para ello se preparan dashboards y sistemas de notificación ad hoc.
Es fundamental automatizar lo máximo posible, de forma que reducimos esfuerzos y eliminamos error humano.
Tampoco hay que caer en la tentación de automatizar todo porque sí, ya que el esfuerzo y coste dedicado puede no compensar. Para ello es importante conocer y analizar los procesos y ser capaz de dividirlos en tareas que luego se puedan acometer de forma automática.
Ejemplos que actualmente utilizamos son la construcción y despliegue de software, el testing funcional y de carga, el aprovisionamiento de máquinas, la ejecución de tareas batch y de workarounds.
Para ello existen multitud de distribuciones tanto opensource como de pago. Una de las más populares hoy en día es Jenkins.
Durante la presentación hemos hecho un repaso a los problemas y retos que se enfrentan los equipos y las organizaciones de productos y servicios IT. También hemos visto la necesidad que tienen las empresas de un correcto servicios y de una entrega de valor en tiempo y forma, ya que cada día más los modelos de negocio dependen de la tecnología.
Las operaciones IT son una mezcla entre las empresas de manufactura y las de servicios, añadiendo además que el entorno en el que se mueven es VUCA (volátil, incierto, complejo y ambiguo). Por ello, se hace evidente las ventajas que suponen aplicar Lean en las operaciones IT y los beneficios que conllevan en optimización de recursos y costes.
Para la implantación de Lean en las empresas no sólo es necesario nuevas tecnologías sino un cambio cultural y nuevos perfiles profesionales.
Existen varias metodologías que se pueden aplicar y que adjunto en los subtopics con enlaces a sus páginas oficiales y descripciones. Cómo recomendación final y basada en mi experiencia, cada empresa es un mundo y la aplicación dogmática de una metodología no asegura su éxito, en mi opinión, es bueno conocer varias y ser capaz de aplicar los conceptos de cada una de ellas que mejor apliquen a nuestro entorno.
Fruto de los problemas mencionados antes, surge la metodología Devops, que es un proceso para el desarrollo de software que se basa en la comunicación y colaboración entre los product managers, los desarrolladores y los sysadmin.
El tercer factor necesario para implantar y aprovechar todas las ventajas del Devops es el uso de las nuevas tecnologías.
Puede resultar curioso recordar que un equipo de IT debe estar al día de las últimas tecnologías y ser capaz de utilizar la mejor herramienta para cada necesidad pero el trabajo del día a día y los sistemas heredados o "legacy" nos llevan muchas veces a seguir haciendo "lo que se ha hecho siempre".
Es importante cuestionarse siempre si el cómo hacemos las cosas es la mejor forma posible y tener la mente abierta a las múltiples herramientas y avances disponibles que existen.
Conceptos cómo el "Open Source" es decir, código libre que puede ser modificado por los propios usuarios, son muy importantes para impulsar el desarrollo y promover avances en todos los campos.
Implantar la metodología no sólo exige instaurar una serie de procesos nuevos sino todo un cambio cultural en la forma de trabajar y de relacionarse entre los equipos (incluido el usuario)
En el artículo adjunto se detallan los elementos principales que hay que tratar a la hora de promover un cambio cultural cómo es Devops: confianza, aceptar el fallo cómo manera de mejora, buscar los cuellos de botella en los flujos, eliminar tareas innecesarias o improductivas, transparencia, autonomía y control.
De ésta forma, surge un nuevo perfil profesional que une el mundo del desarrollo y el de las operaciones.
Se rompe el trabajar en nichos y se buscan personas con conocimientos transversales, que sean capaces de escribir código pero a la vez teniendo en cuenta aspectos cómo el rendimiento, la escalabilidad y la seguridad.
De ésta forma se mejora la calidad del software y se reducen los tiempos de entrega y las caídas de servicio y necesidad de correctivos.
Cómo hemos comentado anteriormente, uno de los mayores problemas sino el que más, es la dificultad de darle a los usuarios lo que necesitan, cuándo muchas veces, ni ellos mismos saben lo que es.
La tecnología avanza a una velocidad enorme y lo que hoy es normal, mañana está anticuado y no sirve, lo que el usuario está acostumbrado a utilizar, al día siguiente es substituido por otro sistema más avanzado y que requiere su curva de aprendizaje.
En éste contexto, los profesionales de IT son vistos en muchos casos cómo personas con el conocimiento "infinito" y que deben ser capaces de dar solución a cualquier problema porque son "expertos", cuándo muchas veces, ellos mismos tienen problemas para estar al día de los últimos avances.
Toda ésta velocidad y necesidad de cambios, hace que se difícil la operación de los sistemas así cómo la correcta definición e implementación de los nuevos programas y servicios que sustituirán a los anteriores.
El video es un corto de 7 minutos que representa de forma muy real cómo se toman hoy las decisiones en muchas compañías y el porqué grandes proyectos de implantación fallan con el consiguiente desperdicio de recursos. Se recomienda ver el video entero pero con unos minutos basta para entender la situación si nunca se ha visto uno en ella.
El otro gran rol de los sistemas IT es el desarrollador de software, que es la persona que recoge las necesidades del negocio y las codifica en un programa informático que dé solución a las mismas.
Cómo vimos en el video del ciclo de vida del software, el desarrollador genera una release que será entregada al sysadmin para su puesta en producción.
Al contrario que los sysadmin, los desarrolladores trabajan por ciclos en los que deben entregar el resultado al final de cada uno de ellos, por lo que la presión existe pero de una forma distinta. Su principal objetivo es entregar funcionalidad. Esto no siempre significa que lo que funciona en un entorno de desarrollo lo haga necesariamente en la producción real, por lo que se producen conflictos con los equipos de sysadmin que dan soporte a las aplicaciones.
En la imagen quiero resaltar el problema que a veces surge cuando un software no funciona en producción y que al desarrollador "le funcionaba en su portátil"
Cómo decíamos al principio, unos requerimientos mal definidos e implementados por un equipo que no va a ser el mismo que mantenga el software, provocan muchas ineficiencias en los procesos, pérdidas de recursos y tiempos y una mala experiencia de usuario/cliente
Dentro de las operaciones IT, existen dos grandes roles que históricamente han estado separados.
El sysadmin o administrador de sistemas es la persona o equipo encargado de implementar, configurar, mantener, monitorizar y asegurar el correcto funcionamiento de un sistema informático, así cómo de la seguridad, la salvaguarda de información y la administración de recursos.
El principal objetivo de un sysadmin es asegurar el servicio (uptime) y el correcto rendimiento de los sistemas.
Con la imagen quiero reflejar la dificultad que conlleva el trabajo, ya que si las cosas van bien, normalmente nadie se acuerda de ti pero en cambio, cuándo fallan todo el mundo lo ve y la presión es evidente. La imagen me parece muy buena porque además también refleja cierto victimismo que suele existir entre los sysadmins.
Hay muchas definiciones académicas sobre lo que son las operaciones IT pero a mi la que más me gusta es la de Gartner, que consiste en las personas y procesos asociados con la gestión de servicios de IT para ofrecer el conjunto de servicios necesarios con la calidad adecuada y a coste competitivo para los clientes.
No sólo se trata de mantener y operar las infraestructuras y sistemas que sustentan las operaciones del negocio y/o de los usuarios finales, sino de buscar maneras de mejorar todos los procesos actuales y de incluir las mejoras tecnológicas dentro de los mismos, de manera que se optimicen los recursos y se reduzcan las pérdidas.
No hay que olvidar el factor humano, ya que al tratar con tecnología, no todo el mundo tiene el mismo nivel y es tan importante ser capaz de que los sistemas funcionen cómo que los usuarios se sientan cómodos con ellos y con el servicio.
El otro pilar fundamental es la gestión de la infraestructura, que engloba las comunicaciones, las operaciones de soporte o Help Desk y las operaciones y mantenimiento de los servidores y la microinformática (PCs, portátiles, móviles etc...)
Todo esto requiere de una organización importante que incluye aspectos cómo:
En muchos casos, los sistemas informáticos deben trabajar 24x7 lo que complica aún más la gestión y hace más necesario la implantación de buenas prácticas y metodologías que ayuden a optimizar los recursos.
Con éste video quiero ilustrar el proceso que va desde el desarrollo de software a su despliegue y puesta en producción. Hoy en día, la generación de software funciona cómo una fábrica (de hecho, el término que se usa es factoría de software). El proceso que va desde la creación de un producto o servicio hasta que se lleva a producción es muy similar al que podríamos aplicar con la creación de un coche o de una lavadora.
En ambos ejemplos, las operaciones juegan un papel fundamental tanto en la etapa de creación cómo de operación y mantenimiento.