
El estudio de la filosofía, al menos en el pasado, ha implicado plantearse preguntas que, a primera vista, parecen, bueno, irrelevantes. Al fin y al cabo, ¿es realmente tan importante saber si «un barco que había sido restaurado sustituyendo todas y cada una de sus piezas de madera» sigue siendo el mismo barco? Esa es la pregunta que planteó Plutarco en Vida de Teseo y que posteriormente pasó a conocerse como la paradoja de Teseo. En términos más generales, plantea «si un objeto al que se le han sustituido todos sus componentes sigue siendo, en esencia, el mismo objeto». (Barco de Teseo, Wikipedia)
Podríamos plantearnos lo mismo respecto a los microservicios, cuya aplicación a las aplicaciones monolíticas existentes busca, en esencia, reconstruir la aplicación sustituyendo las funciones por servicios complementarios. Por diseño, las funciones son pequeñas (o deberían serlo), de ahí que se aplique el término «micro» a los servicios desacoplados resultantes. Las diferencias entre ambos enfoques pueden entenderse en términos de comunicación. En una aplicación monolítica, las funciones se invocan haciendo referencia a una dirección de memoria concreta. En una aplicación basada en microservicios, las funciones (servicios) se invocan haciendo referencia a una dirección IP concreta de la red.

Conceptualmente, ambos son iguales; lo único que difiere es el mecanismo para invocar los distintos componentes funcionales. El diagrama resultante apenas mostraría diferencias, salvo que la «caja» del monolito es un único servidor, mientras que la «caja» de los microservicios es todo el centro de datos. Uno utiliza direccionamiento local y el otro, direccionamiento de red. El código de cada una de estas funciones podría ser exactamente el mismo, al igual que la madera del barco de Teseo.
Pero sus funciones de negocio se mantienen constantes y, de hecho, si hemos descompuesto correctamente la aplicación, el usuario no debería percibir ninguna diferencia entre ambas. Podría decirse que, desde la perspectiva del pasajero del barco de Teseo, no hay diferencia entre las dos. Y no debería haberla.
Pero los filósofos tienden a profundizar más y, al igual que ellos, nosotros también debemos hacerlo, porque las diferencias entre una aplicación monolítica y otra basada en microservicios son, de hecho, bastante importantes para las operaciones.
La complejización de las operaciones de red
Los microservicios simplifican muchos aspectos del proceso de desarrollo de aplicaciones, pero, al hacerlo, generan una gran complejidad operativa. La cantidad de conexiones de red entre las distintas partes de una aplicación basada en microservicios conlleva necesariamente una sobrecarga asociada a la gestión de las diversas características de red necesarias: direcciones IP, VLAN, tablas NAT y mucho más. La escalabilidad también se convierte en un reto que incluso Dijkstra podría considerar frustrante, ya que la ubicación de los microservicios y del servicio de equilibrio de carga tiene un impacto muy real en el rendimiento en función de cuántos segmentos de la red deban atravesarse.
De repente, se necesitan políticas adicionales, ya que las políticas de seguridad aplicables a un servicio que accede directamente a una fuente de datos confidenciales no son las mismas que las necesarias para proteger otro servicio que gestiona las preferencias o el estado de la sesión. La red resultante de micropolíticas de seguridad ofrece, sin duda, muchas de las mismas ventajas que los propios microservicios, es decir, un control más granular y una especie de elegante simplicidad, pero, al mismo tiempo, se convierte en una pesadilla operativa, pues las políticas deben trasladarse de repente junto con los servicios, dondequiera que aparezcan en la arquitectura.
El despliegue también se vuelve de repente exponencialmente más difícil, como pasar de un sencillo baile de pasos básicos al flamenco, mucho más complejo, con muchos más pasos y mucho más movimiento por la pista de baile (el centro de datos). La orquestación y la automatización se convierten en requisitos indispensables para garantizar la coherencia y la previsibilidad necesarias a fin de colocar todas las piezas en su sitio en el momento adecuado.
Los responsables de proporcionar estos servicios de red y seguridad para las aplicaciones deben reconocer que el barco no es el mismo, independientemente de lo que pueda parecer desde una perspectiva general. Parece sencillo: una aplicación se sustituye sin más por diez servicios. ¡Voilà! La aplicación se ha recreado, como el barco de Teseo. Sin embargo, desde el punto de vista operativo, este barco no es en absoluto el mismo. Las uniones (integración) del nuevo barco son completamente distintas, lo que puede alterar la fricción con el mar (la red) y hacer que el barco navegue más despacio.
Los microservicios aún son una tecnología emergente. No están conquistando el mundo (todavía), pero es importante reconocer que no se trata simplemente de desmontar el barco de Teseo y reconstruirlo. Los equipos de operaciones de servicios de red y seguridad deben adoptar la perspectiva del filósofo, en lugar de la del pasajero (usuario), porque el impacto en la red y en la seguridad es muy, muy diferente.
Sobre el autor

Lori MacVittie es ingeniera distinguida y evangelista jefe en la Oficina del CTO de F5, y cuenta con una amplia experiencia en entrega de aplicaciones, estrategia de automatización e infraestructura. Es conocida por convertir la complejidad en claridad, ya sea definiendo mecanismos de protección para agentes de IA, analizando arquitecturas multinube frágiles o explorando los límites de los sistemas escalables. Aporta más de treinta años de experiencia en el sector en desarrollo de aplicaciones, arquitectura de TI y operaciones de redes y sistemas. Antes de incorporarse a F5, fue una galardonada editora de tecnología. MacVittie posee un máster en Informática y es una autora prolífica cuyas publicaciones abarcan la seguridad, la nube y la arquitectura empresarial. También es una apasionada de los juegos de mesa y los videojuegos, y expresa sin complejos sus firmes opiniones sobre el queso.
Más artículos de Lori Mac VittieArtículos relacionados del blog

Cree servicios públicos seguros, resilientes y preparados para la IA con F5 y AWS
Descubre cómo las organizaciones del sector público pueden modernizar de forma segura sus aplicaciones y soluciones de IA, al tiempo que gestionan los sistemas heredados, el cumplimiento normativo y el riesgo operativo.
Protección de los sistemas de IA: por qué la seguridad debe avanzar al ritmo de la innovación
Desde acelerar avances revolucionarios en medicina y educación hasta transformar la vida cotidiana, la IA está cambiando nuestra forma de vivir y trabajar. Pero también ofrece grandes oportunidades a los ciberdelincuentes.
Avanzar hacia la optimización digital tras la transformación
Descubre estrategias de optimización digital para garantizar políticas de seguridad coherentes, impulsar la madurez de la transformación digital y superar los retos de la transformación.
Proyecto de código abierto destacado: mayor observabilidad con F5 Cloud Logger iApp
En el punto de mira del código abierto: cómo aumentar la observabilidad. Lee el blog de F5 para descubrir cómo exportar fácilmente la telemetría de BIG-IP a plataformas modernas de análisis en la nube.
El estado de la entrega de aplicaciones en 2018: la transformación digital impulsa la automatización y la multinube pese a las preocupaciones de seguridad
Descubre las principales conclusiones del cuarto informe anual de F5 sobre el estado de la entrega de aplicaciones.
Estado de la entrega de aplicaciones en 2017: automatización, API y DevOps
Descubre el informe sobre el estado de la entrega de aplicaciones de 2017. Lee el blog retrospectivo de F5 sobre los inicios del auge de las redes declarativas y los flujos de DevOps.