Definición del modelo de operaciones de desarrollo
Las operaciones de desarrollo constituyen una combinación de filosofías culturales, prácticas y herramientas que incrementan la capacidad de una organización de proporcionar aplicaciones y servicios a gran velocidad: desarrollar y mejorar productos con mayor rapidez que las organizaciones que utilizan procesos tradicionales de desarrollo de software y administración de la infraestructura. Esta velocidad permite a las organizaciones servir mejor a sus clientes y competir de forma más eficaz en el mercado.
En qué consisten las operaciones de desarrollo
Bajo un modelo de DevOps, los equipos de desarrollo y operaciones ya no están “aislados”. A veces, los dos equipos se fusionan en uno solo, donde los ingenieros trabajan en todo el ciclo de vida de la aplicación, desde el desarrollo y las pruebas hasta la implementación y las operaciones, y desarrollan una variedad de habilidades no limitadas a una única función.
En algunos modelos de DevOps, los equipos de control de calidad y de seguridad también se integran más con el desarrollo y las operaciones e intervienen durante todo el ciclo de vida de la aplicación. Cuando la seguridad es la prioridad de todos los miembros del equipo de operaciones de desarrollo, a veces se conoce como operaciones de seguridad de desarrollo.
Los equipos utilizan prácticas para automatizar los procesos que anteriormente habían sido manuales y lentos. Utilizan una pila de tecnología y herramientas que los ayudan a operar y mejorar aplicaciones de forma rápida y confiable. Además, estas herramientas también ayudan a los ingenieros a realizar de forma independiente tareas que normalmente hubieran requerido la ayuda de otros equipos (por ejemplo, implementar código o aprovisionar infraestructura), incrementando así todavía más la velocidad del equipo.
Beneficios de las operaciones de desarrollo
Velocidad
Entrega rápida
Fiabilidad
Escalado
Colaboración mejorada
Seguridad
Por qué son importantes las operaciones de desarrollo
El software y la Internet han transformado el mundo y sus industrias, desde las compras hasta el entretenimiento y la banca. El software ya no se limita a respaldar un negocio, sino que se convierte en componente integral de cada aspecto de este. Las compañías interactúan con sus clientes a través de software proporcionado como aplicaciones o servicios en línea en todo tipo de dispositivos. También utilizan software para incrementar la eficacia operativa al transformar cada sección de la cadena de valor, como la logística, la comunicación y las operaciones. Al igual que las compañías de productos físicos transformaron el modo en que diseñaban, fabricaban y entregaban productos gracias a la automatización industrial que se produjo en el siglo XX, las compañías de hoy en día deben transformar el modo en que crean y entregan software.
Cómo adoptar un modelo de operaciones de desarrollo
Filosofía cultural de las operaciones de desarrollo
Adoptar un enfoque de DevOps requiere un cambio de cultura y mentalidad. Básicamente, DevOps consiste en eliminar las barreras entre dos equipos que anteriormente estaban aislados, el de desarrollo y el de operaciones. En algunas organizaciones, es posible que no existan equipos de desarrollo y operaciones distintos y que los ingenieros se encarguen de todo. Con DevOps, los dos equipos colaboran para optimizar la productividad de los desarrolladores y la confiabilidad de las operaciones. Se esfuerzan por comunicarse con frecuencia, incrementar la eficacia y mejorar la calidad de los servicios que proporcionan a los clientes. Se hacen totalmente responsables de sus servicios, a menudo más allá de lo que tradicionalmente abarcarían sus funciones o puestos de trabajo, al pensar en las necesidades de los clientes y cómo pueden ayudar a satisfacerlas. Los equipos de control de calidad y seguridad también podrían integrarse estrechamente en estos equipos. Independientemente de su estructura organizativa, las organizaciones que utilizan un modelo de operaciones de desarrollo disponen de equipos que visualizan todo el ciclo de vida de desarrollo y de la infraestructura como parte de sus responsabilidades.
Explicación de las prácticas de operaciones de desarrollo
Existen unas cuantas prácticas fundamentales que ayudan a las organizaciones a innovar con mayor rapidez mediante la automatización y la simplificación de los procesos de desarrollo de software y administración de la infraestructura. La mayoría de estas prácticas se llevan a cabo con las herramientas adecuadas.
Una práctica fundamental consiste en realizar actualizaciones muy frecuentes, pero pequeñas. De ese modo, las organizaciones innovan con mayor rapidez para sus clientes. Por lo general, estas actualizaciones son más incrementales que las actualizaciones ocasionales realizadas de acuerdo con las prácticas de publicación tradicionales. Las actualizaciones frecuentes pero pequeñas reducen el riesgo de cada implementación. Ayudan a los equipos a solucionar los errores con mayor rapidez, ya que les permiten identificar la última implementación que ha provocado el error. Aunque la cadencia y el tamaño de las actualizaciones varían, las organizaciones con un modelo de operaciones de desarrollo implementan actualizaciones con mucha más frecuencia que las organizaciones que utilizan prácticas de desarrollo de software tradicionales.
Las organizaciones también pueden utilizar una arquitectura de microservicios para dar mayor flexibilidad a sus aplicaciones y permitir una innovación más rápida. La arquitectura de microservicios desacopla sistemas complejos de gran tamaño en proyectos sencillos e independientes. Las aplicaciones se dividen en muchos componentes individuales (servicios) y cada servicio abarca un solo propósito o función y se opera independientemente de los demás servicios y de la aplicación general. Esta arquitectura reduce los gastos de coordinación necesarios para actualizar las aplicaciones. Cuando cada servicio se asigna a equipos pequeños y ágiles que se hacen responsables del mismo, las organizaciones pueden avanzar con rapidez.
Sin embargo, la combinación de unos microservicios y una mayor frecuencia de publicación se traduce en una mayor cantidad de implementaciones, lo que puede suponer varios retos operativos. Para ello, las prácticas de DevOps como la integración y la entrega continuas se encargan de resolver estos problemas y permitir que las organizaciones realicen entregas rápidas, seguras y fiables. Las prácticas de automatización de la infraestructura, como la infraestructura como código y la administración de la configuración, ayudan a mantener la elasticidad de los recursos informáticos y la capacidad de respuesta ante cambios frecuentes. Además, el uso de la monitorización y los registros ayuda a los ingenieros a supervisar el desempeño de las aplicaciones y la infraestructura a fin de poder reaccionar con rapidez ante los problemas.
En combinación, estas prácticas ayudan a las organizaciones a proporcionar actualizaciones más fiables y con mayor rapidez a sus clientes. A continuación se proporciona una vista general de las prácticas de operaciones de desarrollo importantes.
Prácticas de DevOps
Integración continua
La integración continua es una práctica de desarrollo de software mediante la cual los desarrolladores combinan los cambios en el código en un repositorio central de forma periódica, tras lo cual se ejecutan versiones y pruebas automáticas. Los objetivos clave de la integración continua consisten en encontrar y arreglar errores con mayor rapidez, mejorar la calidad del software y reducir el tiempo que se tarda en validar y publicar nuevas actualizaciones de software.
Entrega continua
La entrega continua es una práctica de desarrollo de software mediante la cual se compilan, prueban y preparan automáticamente los cambios en el código y se entregan a la fase de producción. Amplía la integración continua al implementar todos los cambios en el código en un entorno de pruebas o de producción después de la fase de creación. Cuando se la entrega continua se implementa de manera adecuada, los desarrolladores dispondrán siempre de un artefacto listo para su implementación que se ha sometido a un proceso de pruebas estandarizado.
Más información sobre la entrega continua y AWS CodePipeline
Microservicios
La arquitectura de microservicios es un enfoque de diseño que sirve para crear una sola aplicación como conjunto de servicios pequeños. Cada servicio se ejecuta en su propio proceso y se comunica con otros servicios mediante una interfaz bien definida utilizando un mecanismo ligero, normalmente una interfaz de programación de aplicaciones basada en HTTP (API). Los microservicios se crean en torno a las capacidades empresariales. Cada servicio abarca un único propósito. Puede utilizar distintos marcos o lenguajes de programación para escribir microservicios e implementarlos independientemente, como servicio único, o como grupo de servicios.
Más información sobre Amazon Container Service (Amazon ECS)
Más información sobre AWS Lambda
Infraestructura como código
La infraestructura como código es una práctica mediante la que se aprovisiona y administra infraestructura con técnicas de desarrollo de código y de software, como el control de versiones y la integración continua. El modelo orientado a la API de la nube permite a los desarrolladores y administradores de sistemas interactuar con la infraestructura mediante programación y a escala, en lugar de configurar y ajustar recursos manualmente. Así, los ingenieros pueden interactuar con la infraestructura con herramientas basadas en código y tratar la infraestructura de un modo parecido a como tratan el código de la aplicación. Como están definidos por el código, la infraestructura y los servidores se pueden implementar con rapidez con patrones estandarizados, actualizar con las últimas revisiones y versiones o duplicar de forma repetible.
Aprenda a administrar la infraestructura como código con AWS CloudFormation
Administración de la configuración
Los desarrolladores y administradores de sistemas utilizan código para automatizar la configuración del sistema operativo y el host, las tareas operativas y más. El uso de código hace que los cambios a la configuración sean repetibles y estandarizados. Evita que los desarrolladores y administradores de sistemas tengan que configurar manualmente sistemas operativos, aplicaciones del sistema o software del servidor.
Aprenda a configurar y administrar los sistemas locales y Amazon EC2 con Amazon EC2 Systems Manager
Aprenda a utilizar la administración de la configuración con AWS OpsWorks
Política como código
Con la infraestructura y su configuración codificadas en la nube, las organizaciones pueden monitorear y garantizar la conformidad de forma dinámica y a escala. La infraestructura descrita por el código se puede supervisar, validar y reconfigurar de forma automática. De este modo, las organizaciones pueden controlar los cambios en los recursos con mayor facilidad y garantizar que se siguen las medidas de seguridad de forma distribuida (p. ej. seguridad de la información o conformidad con PCI-DSS o HIPAA). Así, los equipos de la organización pueden avanzar a mayor velocidad, ya que los recursos no conformes se identifican de forma automática para su investigación o incluso se los dota de conformidad automáticamente.
Monitorización y registro
Las organizaciones monitorean métricas y registros para ver cómo el desempeño de las aplicaciones y la infraestructura afecta a la experiencia que el usuario final tiene de su producto. Cuando recopilan, categorizan y analizan los datos y registros generados por las aplicaciones y la infraestructura, las organizaciones pueden entender cómo los cambios y actualizaciones afectan a los usuarios, esto les aporta información sobre la causa raíz de los problemas o cambios inesperados. El monitoreo activa se vuelve cada vez más importante, ya que los servicios deben estar disponibles las 24 horas del día, los 7 días de la semana, a medida que la frecuencia de actualizaciones de las aplicaciones e infraestructura incrementa. La creación de alertas y el análisis en tiempo real de los datos también ayuda a las organizaciones a monitorizar sus servicios de forma proactiva.
Aprenda a utilizar Amazon CloudWatch para monitorear las métricas y registros de su infraestructura
Aprenda a utilizar AWS CloudTrail para grabar y registrar llamadas a la API de AWS
Comunicación y colaboración
El incremento en la comunicación y la colaboración en una organización es uno de los aspectos culturales clave de DevOps. El uso de las herramientas de DevOps y la automatización del proceso de entrega de software establece la colaboración al reunir físicamente los flujos de trabajo y las responsabilidades de los equipos de desarrollo y operaciones. Además, estos equipos establecen normas culturales sólidas que giran en torno a compartir información y facilitar la comunicación mediante el uso de aplicaciones de chat, sistemas de seguimiento de proyectos o problemas y wikis. De este modo, se acelera la comunicación entre los equipos de desarrollo y operaciones e incluso con otros equipos, como marketing y ventas, lo que permite que todos los departamentos de la organización se alineen mejor con los objetivos y proyectos.