Saltar al contenido

Blog técnico | No hay una arquitectura perfecta

¿Qué tipo de arquitectura de software debería implementar? Al observar las tendencias de la industria, los blogs, las charlas de conferencias y demás, es fácil pensar que otras empresas lo tienen todo resuelto. Se le perdonaría el querer copiar el éxito que otros están teniendo. Pero no hay una arquitectura perfecta. Todo es un conjunto de compensaciones; sólo hay buenos y malos ajustes para un contexto.

El contexto importa

A menudo oigo a la gente argumentar a favor de la adopción de una tecnología o práctica sobre la base de que «[insertar una empresa exitosa] lo hace».

Blog técnico | No hay una arquitectura perfecta
Blog técnico | No hay una arquitectura perfecta

En lugar de copiar la solución específica del contexto de otro lugar, se debe indagar en las ideas y principios subyacentes.

Por ejemplo, parece que todo el mundo está pasando de los monolitos a los microservicios en estos días. Antes de asumir que usted también debería adoptar los microservicios, necesita entender lo que significaría para usted. La descentralización de los datos y la gobernanza, los despliegues independientes, la automatización de la infraestructura y de las tuberías de despliegue, y el aislamiento de los fallos son los principios clave detrás de los microservicios. La adopción cambia el pensamiento de los proyectos a los productos. La observación y la supervisión se convierten en algo crítico. Los detalles de la implementación se encapsulan dentro de los servicios y equipos.

Así que deberías considerar las compensaciones y preguntarte:

  • ¿Estamos experimentando los tipos de problemas que resuelven los microservicios? ¿Permitirán los despliegues independientes que sus equipos se muevan más rápido? ¿Tienen problemas de escalada?
  • ¿Qué nuevos problemas causarán los microservicios? ¿Está su equipo de operaciones listo y dispuesto a automatizar la infraestructura? ¿Se fragmentarán sus datos? ¿Qué pasará cuando un servicio clave se caiga?
  • ¿Se alinea con nuestra estructura organizativa o causará fricciones? ¿Tiene (o quiere) equipos autónomos y multifuncionales? ¿Tiene un líder transformacional que apoye los esfuerzos necesarios de reestructuración de la gente?
  • ¿Nuestra gente valora las culturas asociadas a los microservicios? ¿Qué cree usted sobre los DevOps? ¿Puede dar confianza a los equipos para que se desplieguen a la producción en cualquier momento?
  • ¿Hay alguna otra solución que encaje mejor?

Hay muchas cosas buenas sobre los microservicios. Pero no es una arquitectura perfecta. A veces un monolito es mejor.

El cambio es inevitable

Las necesidades de una organización cambian con el tiempo. Los problemas que su arquitectura resuelve hoy probablemente no son los mismos que tendrá mañana. A medida que su negocio cambia, su arquitectura también tendrá que cambiar.

Reconocemos que la industria del software cambia rápidamente. Las nuevas tecnologías o los servicios en la nube pueden cambiar significativamente su estrategia (como las pilas móviles, sin servidores, o las bases de datos administradas).

Un área de cambio que típicamente se ignora es la forma en que las personas cambian dentro de una organización. La ley de Conway nos enseña que estos «asuntos de personas» son también asuntos de arquitectura. Qué personas clave se unen o se van, la estructura de gestión, los niveles de habilidad, e incluso el número de personas que trabajan juntas pueden cambiar significativamente su contexto.

Aquí en , nuestro crecimiento ha creado una situación muy diferente de cuando empezamos a implementar nuestra actual arquitectura de contexto delimitado.Hemos tenido algunos problemas técnicos que tratar, pero la mayoría de nuestras luchas han estado relacionadas con el aumento del número de equipos y los cambios asociados en los patrones de comunicación.Nuestra arquitectura de sistema ha necesitado adaptarse a estos cambios manteniendo lo que ha funcionado bien hasta ahora.

Aunque nuestra arquitectura existente era crítica para el éxito de nuestro crecimiento, no era perfecta.

«Depende»

Entonces, ¿qué arquitectura de software deberías implementar? La respuesta es: «Depende». No hay una sola arquitectura que funcione bien en todos los casos y en todo momento. Tienes que adaptar tu arquitectura a tus necesidades, aplicando los patrones que resuelvan tus problemas y se ajusten mejor a tu situación.

Categorías: prácticasTags: arquitectura