13 de diciembre de 2024
Por qué nos quedamos con el monolito (por ahora)
En un mundo que persigue los microservicios y los servidores sin servidores, seguir con un monolito de Django de un millón de líneas puede parecer una locura. Pero para Sytex, es la forma más rápida y sencilla de construir e iterar, ahora mismo. He aquí por qué estamos adoptando la tecnología "aburrida" para centrarnos en lo que más importa: el producto.

Sytex es una aplicación Django monolito. Es una base de código de más de un millón y medio de líneas. Las primeras líneas se escribieron cuando arquitecturas de servicio estaban empezando a ganar atención. Hemos decidido que Sytex siga siendo un monolito (por ahora), y este es nuestro razonamiento.

Nótese el "por ahora"

En todos los aspectos de Sytex, entendemos que hay herramientas adecuadas para el momento adecuado. Por ejemplo, confiábamos en nuestra base de datos relacional para las consultas de texto hasta que quedaron claras las ventajas de una base de datos de búsqueda.

Como empresa emergente que aspira a crecer, tenemos que estar atentos al momento adecuado para iterar. Todo lo que sigue se refiere al estado actual de Sytex, y es probable que lo revisemos y posiblemente lo cambiemos en el futuro.

Nuestros tres ejes: producto, producto, producto

Aunque llevamos varios años funcionando, tenemos clientes destacados y una buena tracción, seguimos considerándonos pre-PMF. Por lo tanto, nuestro principal objetivo es iterar el producto hasta que encontremos lo que nuestros clientes realmente quieren. Nuestros esfuerzos se dirigen ahí, y nos hemos dado cuenta de que cuando desviamos el esfuerzo a evaluar nuevas tecnologías, perdemos el foco. Rendimos mejor utilizando tecnologías "aburridas" que conocemos al dedillo. De este modo, podemos destinar todo nuestro presupuesto para el malestar y el impulso para retarnos a nosotros mismos a hacer avanzar el producto. Exploramos nuevas tecnologías sólo cuando el producto lo exige o cuando la escala lo requiere.

Somos un equipo compacto al que le gusta moverse rápido

Cuando seamos 100 ingenieros, el monolito probablemente se interpondrá en nuestro camino, y será necesario desmantelarlo. Lo tenemos en cuenta y nos esforzamos por mantener un código comprobable y modular. Pero ahora mismo, creemos que las ventajas de mantener una arquitectura monolítica superan a sus inconvenientes. Entendemos que toda decisión tecnológica implica concesiones, y tratamos de evaluar qué características nos benefician o nos perjudican a cada paso. Seguimos atentos para iterar cuando llegue el momento.

Hemos tropezado

Ahora lo tenemos claro después de explorar alternativas y darnos cuenta de que lo que pensábamos que nos aceleraría en realidad nos ralentizaría. Somos curiosos y nos gusta experimentar. Cada experimento nos enseña algo nuevo. Algunas lecciones impregnan nuestra base de código, mejorando nuestras prácticas. Otras nos muestran que un camino concreto no es el correcto (por ahora).

En concreto
Lo que nos gusta:
  • Disponer de una única tecnología de backend con la que todo el equipo se sienta cómodo.
  • Operaciones unificadas, entendidas por todos los desarrolladores. Las configuraciones son claras para todos.
  • Es fácil crear un entorno local muy similar al de producción.
  • Iterar rápidamente las características sin introducir nuevas "incógnitas".
  • La pila Python/Django no es la más eficiente del mercado, pero escalar la capacidad de computación es trivial.
Lo que no nos gusta:
  • Los despliegues pueden crecer mucho, lo que aumenta el riesgo de interrupción del servicio.
  • Los tiempos de integración aumentan de forma aproximadamente lineal con el número de funciones añadidas.
  • No podemos escalar funcionalidades específicas de forma aislada, lo que eleva los costes operativos.