Cualquier organización que diseñe un sistema producirá un diseño que copia la estructura de comunicación de dicha organización – Melvin Conway, 1968

DevOps es un término que se ha hecho muy popular últimamente, incluso podemos verlo en varias ofertas laborales y no era de esperarse menos. DevOps es ahora mismo una tendencia en varias empresas, por tal motivo creé una nueva categoría para este tema y durante el resto del año hablaré mucho acerca de DevOps.

¿Qué es DevOps?

  • Es una metodología para la creación de software
  • Es la integración entre desarrollo, QA y Operación de Tecnología.

El DevOps nos permite frabricar software más rápido, con mayor calidad y con menos coste y una altísima frecuencia de release. Así es tiene los tres huevitos: Rápido, Calidad y Barato. Un momento ¿No y que tenemos que elegir dos de las tres?

Esta metodología está basada en el desarrollo de código que usa nuevas herramientas para acercar más los desarrolladores y los de operaciones. Entre estas herramientas tenemos la automatización, contenedores como Docker, servicios de streaming, big data, entre otras. Todas estas herramientas podemos encontrarlas en las aplicaciones en la Nube tales como Amazon Web Service, Google Cloud Platform, Microsoft Azure, etc. Por algo estas empresas que ofrecen estas aplicaciones son las más cotizadas del mercado, incluso el dueño de Amazon es la persona más rica del mundo actualmente.

Es difícil no seguir esta metodología sin manejar estas aplicaciones para acelerar los procesos de desarrollo. Los procesos como organizar, probar y desplegar se realizan automáticos con estas herramientas. Esto se combina además con la comunicación en el equipo, donde los desarrolladores sepan qué hacen los de operaciones y viceversa, incluso los de negocio que están al tanto de los nuevos lanzamientos y sus detalles. Todo esto hace más transparente el proceso de desarrollo de software. Es por esto que se existe también un cambio de cultura en el grupo.

No existe un rol de DevOps. Es la combinación de cultura, herramientas y prácticas.

La principal característica del movimiento DevOps es defender la automatización y el monitoreo en los pasos de la construcción de software.

Computación en la Nube

En pocas palabras es todo lo que tenga que ver con la provisión de servicios de hospedaje a través de internet. Estos se dividen en tres categorías. IaaS, PaaS y SaaS y entre sus características podemos mencionar:

  • Costo: Se realiza en función del uso, puede ser por minuto o por hora.
  • Elástico: El usuario puede usar los recursos  tanto como quiera y el tiempo que lo desee.
  • Rendimiento: Se controla y optimiza de manera automática como tambuén el seguimiento, control y notificación.
  • Servicio es  totalmente gestionado por el proveedor.

Servicios:

IaaS

Infraestructura como servicio: También llamada HaaS (Hardware como servicio). Brinda un servicio de almacenamiento básico y servicios estandarizados en la red. En Amazon Web Service (AWS) tenemos los servicios EC2 y S3 en esta categoría.Los servicios que se tiene que preocupar en esta categoría son:

  • Aplicaciones Hospedadas
  • Datos
  • Tiempos de ejecución
  • Middleware
  • Sistemas operativos

PaaS

Plataforma como servicio: Son plataformas de software para las cuales las herramientas de desarrollo en si misma está alojada en la nube. A diferencia del anterior,  no se tiene control del hardware ni del sistema operativo. Los desarrolladores pueden construir aplicaciones web y desplegarlas sin tener que instalar ninguna herramienta.

Los servicios que se tiene que preocupar en esta categoría son:

  • Aplicaciones Hospedadas
  • Datos

SaaS

Software como servicio: Brinda un servicio de software como tal. No existe un control sobre ellas, esto elimina la necesidad de instalar aplicaciones, evitar soporte y el mantenimiento.

No se tiene que preocupar por nada, además de los ajustes de la aplicación.

PaaS son IDEs basados en la nube

Microservicios

Son servicios que ejecutan una función autónoma y que puede comunicarse con otros microservicios por medio de peticiones HTTP a sus API. Cada una corresponde a una parte del área de negocios de la aplicación.

Cada microservicio es independiente y su código debe ser desplegado sin afectar a los demás. Incluso un microservicio puede cambiar su lenguaje de programación y los demás servicios ni debería darse cuenta, ya que solo exponen la API.

Comparando diferentes visiones

Una visión monolítica es aquella arquitectura donde los servicios están interconectados. Un despliegue de alguno de estos puede interferir en el proceso de otro. Aunque pueden estar separados en diferentes módulos de código, se encuentran en un mismo “archivo ejecutable”. Además si un servicio posee mucha demanda, los otros también se verán afectados.

Una visión a microservicios cada componente es totalmente independiente y se ejecutan en distintos ambientes. Estos se pueden comunicar entre sí por medio de llamadas. Un cambio en alguno de los módulos no afectará ninguno de los otros, ni se enterarán que hubo un despliegue. La lógica de negocio queda muy bien separada.

Fuentes