Por qué Netflix apostó por los microservicios basados en la nube y ganó

Los servicios basados en la nube van a cambiar todo lo que creías saber sobre aplicaciones y seguridad. No es que lo digamos nosotros, pregunta a Adrian Cockcroft, vicepresidente de estrategia de arquitectura de nubes de  AWS, y anteriormente de Netflix.

En Netflix no todos estaban de acuerdo en que ofrecer microservicios fuera una buena idea. "La mitad de la empresa pensaba que era una estupidez" —Adrian Cockcroft, exarquitecto de nubes de Netflix. 

Durante una conversación sobre muchos temas con Frank Chen y Martin Casado de Andreessen Horowitz, Cockcroft comenta cómo Netflix apostó por la arquitectura de microservicios y las increíbles innovaciones que han surgido de ello.

Puedes escuchar el podcast a16z completo aquí. Te presentamos seis conclusiones.

1. Es útil ser ágil y tener mano dura

Cuando pasó de enviar DVDs a domicilio para convertirse en un gigante del streaming, Netflix supuso que tenía que introducir cambios más que sustanciales. Por un lado, tenía que abandonar su propio centro de datos y pasarse a la nube. También tuvo que hacer la transición de una base de datos monolítica basada en Oracle, a una arquitectura de microservicios, lo que implicaba dividir las aplicaciones en pequeños procesos modulares que se pudieran instalar de forma independiente. Y gracias a este proceso, Netflix acometió un cambio cultural, reorganizando a sus creadores en grupos más pequeños, basándose en los productos.

Curiosamente, el acometer estos enormes cambios de golpe ayudó a obtener apoyos, comenta Cockcroft.

"El cambio gradual es una buena teoría, pero en la práctica debes tener mano dura para que todos se muevan a una", afirma. "La presión consistió en que no teníamos suficiente capacidad en el centro de datos para ofrecer streaming".

2. Prepárate para cambiar la cultura de la empresa

Aún después de eso, en Netflix no todos estaban de acuerdo en que ofrecer microservicios fuera una buena idea. Cockcroft tuvo que hacer trabajo de campo para convencerles.

"La mitad de la plantilla pensaba que era una estupidez, otros que podíamos lograrlo, y otros eran más entusiastas", comenta. Reunió a un grupo de entusiastas en una sala y empezó a proponer cosas para descubrir cuáles eran los auténticos retos.

"El truco consiste en reunir un grupo reducido, ir hasta el fondo y poner en marcha una serie de pequeños proyectos, de modo que aprendas lo máximo con el mínimo esfuerzo".

3. La arquitectura de microservicios mejora la seguridad de la aplicación

La manera tradicional de proteger una enorme base de datos en un centro de datos implica apilar las suficientes medidas de seguridad como para impedir el acceso de los malos. Sin embargo, esta aproximación tiene grandes desventajas. "Si se requiere PCI en un rinconcito del monolito, se requerirá el cumplimiento de PCI, SOX y todo lo demás en todo el conjunto", afirma Cockcroft. Y una vez abierta la brecha en la base de datos monolítica, los malos tendrán acceso a todo lo que haya en ella.

Dividir la base de datos en un grupo de servicios de la nube añade nuevos niveles de complejidad a la seguridad y el cumplimiento, admite Cockcroft. Pero también te permite proteger lo importante y ser ágil con los servicios de riesgo menor. "Dividirla en trozos permite que la app sea mucho más ágil e innovadora, a la vez que los bits que lo precisan se encuentran sumamente seguros".

4. La arquitectura de microservicios obliga a tus creadores a utilizar códigos más fiables

En un entorno tan ágil, en el que las apps se actualizan varias veces al día, no hay tiempo material para revisar y aprobar todos los cambios. De modo que el único que conoce el estado exacto de cada servicio es el desarrollador que la tocó por última vez, afirma Cockcroft.

"Esto suena alarmante, hasta que comprendes que cada uno solo controla una porción muy pequeña del sistema, y el comportamiento agregado del mismo resulta ser muy robusto y fiable", comenta.

Responsabilizar a los desarrolladores del funcionamiento de su código también les obliga a adoptar mejores prácticas. Nadie desea pasar los fines de semana reparando lo estropeado.

"Si responsabilizas a un desarrollador, este escribirá un código muy fiable, y no lo publicará un viernes a última hora", afirma. "Aprenderá una serie de prácticas acerca de lo que significa ser responsable y no estropear nada". 

5. La arquitectura de microservicios conlleva un mejor funcionamiento de la app

Cuando te pasas a los microservicios, distribuyes tu carga de trabajo entre grupos que son dueños y encargados de crear y perfeccionar un contenedor. Toda su atención se centra en hacerlo lo más simple y potente posible. Este proceder no solo redundará en contenedores más seguros, sino que también tu app mejorará su funcionamiento, a la vez que todos los contenedores se optimizarán continuamente.

6. La arquitectura de microservicios permite a las grandes empresas ser tan ágiles como una startup

Prestar servicios en la nube permite que tu empresa avance a la velocidad del negocio, potencialmente convirtiendo costes en productos.

En todos los sectores, las grandes empresas están dándose cuenta por separado de que elegir la nube y la arquitectura de microservicios no supone solo una ventaja en competitividad, sino que es cuestión de supervivencia.

"Existe una amenaza existencial", comenta Cockcroft. "Si tú haces lanzamientos trimestrales y la competencia los hace a diario y de forma continua, retrocederás tanto en la experiencia de usuario que lo lamentarás. Las empresas que se esfuerzan en traer a la nube DevOps y microarquitectura, han dado realmente el primer paso para acelerar y avanzar en la distancia".

Netflix afrontó la necesidad de transformar su modelo de negocio basándose en la tecnología. Su decisión de pasar de de un servicio de envío a domicilio de DVDs a un gigante del streaming requirió un cambio profundo, pasando de un modelo de centro de datos monolítico hacia una arquitectura de microservicios centrada en las aplicaciones. La transformación digital es un viaje, no un destino. Todas las empresas poseen una ruta distinta y se encuentran en etapas distintas del viaje. La clave está en dar ese primer paso.