La mayoría de las palabras de moda en TI envejecen mal, y por una buena razón: la mayoría de la tecnología que solía tener una ventaja competitiva es reemplazada por alternativas superiores en una década o menos. Por lo tanto, si un proveedor de software sigue utilizando una palabra de moda después de su fecha de caducidad (1), la explicación más simple es que su equipo de I+D ni siquiera se ha dado cuenta de que el mundo ha avanzado.

Anecdóticamente, varios capitalistas de riesgo también me han dicho que estaban cansados de invertir en cualquier empresa de software que tuviera más de unos pocos años, porque la mayoría de las empresas nunca logran desvincular su propia tecnología del panorama tecnológico que las definió cuando comenzaron.

(1) El mercado tecnológico en sí define cuándo una tecnología “caduca”. Al mirar una determinada tecnología, como mucho solo puedes estimar cuánto tiempo se mantendrá razonablemente cerca del estado del arte.

Las bases de datos en memoria solían ser una palabra de moda en TI, y esto no ha envejecido bien: cualquier empresa de software que se promocione hoy en día como proveedora de computación en memoria o en memoria está ofreciendo tecnología obsoleta en el mercado (2). No me malinterpreten: aprovechar al máximo la “memoria” - más sobre esto más adelante - nunca ha sido más importante; sin embargo, el panorama informático es ahora más complejo de lo que solía ser.

(2) En teoría, podría ser solo el equipo de marketing el que se está quedando atrás, mientras que el equipo técnico ya ha avanzado. Sin embargo, nunca he conocido ninguna empresa de software que sufriera este problema. Puedes asumir con seguridad que el marketing siempre está por delante de la tecnología.

A finales de los años 90 y principios de los 00, un tipo específico de memoria volátil, conocida coloquialmente como RAM, se había vuelto lo suficientemente asequible como para que conjuntos de datos cada vez más interesantes y valiosos pudieran caber “en memoria”. En ese momento, la mayoría del software se diseñaba en torno a la idea de que la RAM era tan cara y limitada que valía la pena complicarse mucho, solo con el fin de restringir lo más posible la presión sobre la RAM. Al simplemente revisar la mayoría de los problemas desde un enfoque fresco y sin restricciones, es decir, la computación “en memoria”, muchos proveedores de software lograron mejoras de velocidad tremendas en comparación con productos antiguos, que dependían exclusivamente de discos giratorios.

Avancemos rápidamente hasta 2018, las bases de datos en memoria son una perspectiva obsoleta, y ha sido así durante años. Hay muchos tipos de almacenamiento de datos:

  • Caché de la CPU L1
  • Caché de la CPU L2/L3
  • RAM local
  • RAM de GPU local
  • SSD local
  • HDD local
  • RAM remota
  • SSD remoto
  • HDD remoto
  • Cinta o almacenamiento óptico

Ni siquiera estoy enumerando tecnologías de almacenamiento más nuevas como Intel Optane, que casi representan una clase de dispositivo propia.

Los proveedores que promueven la computación “en memoria” insinúan que su tecnología de software está orientada predominantemente a la explotación de dos tipos de memoria: la RAM local y la RAM remota. Si bien aprovechar al máximo la RAM, tanto local como remota, es ciertamente algo bueno, también destaca enfoques de ingeniería que subutilizan las alternativas.

Por ejemplo, en las últimas dos décadas, la caché de la CPU ha pasado de 512 KB a más de 60 MB para las CPUs de alta gama. Con tanta caché de CPU, ahora es posible realizar “computación en caché”, lo que proporciona mejoras de velocidad masivas en comparación con la simple “computación en memoria”. Sin embargo, aprovechar la caché requiere la minimización de muchas estructuras de datos o incluso estrategias más inteligentes, mucho más allá de lo que se considera necesario o incluso deseable desde la perspectiva de la RAM.

Sin embargo, solo señalar que la caché de la CPU es más rápida que la RAM local sería perder el punto. Hoy en día, la buena ingeniería de software implica aprovechar al máximo las capacidades respectivas de todas esas clases de almacenamiento de datos. Gracias a la computación en la nube, ensamblar una combinación ad hoc de recursos informáticos nunca ha sido tan fácil.

Por lo tanto, Lokad no ofrece tecnología de software “en memoria”, porque nos impediría aprovechar las otras opciones que están disponibles en la actualidad. Por ejemplo, aunque podríamos alquilar máquinas con hasta 2 TB de RAM, sería innecesariamente costoso para nuestros clientes. Hay muchos algoritmos que se pueden transmitir por completo; por lo tanto, procesar TB de datos no requiere TB de RAM, y considerando que 1 GB de RAM es aproximadamente 1000 veces más caro que 1 GB de HDD, no es un detalle de implementación.

Nuestro objetivo no es adherirnos a una perspectiva rígida sobre la ingeniería de software, sino adherirnos a la perspectiva de ingeniería más amplia, que consiste en hacer todo lo posible con el presupuesto que se tiene. En otras palabras, estamos inclinados a utilizar el procesamiento en memoria siempre que supere a las alternativas, pero no más.

Entonces, como los recursos informáticos no son completamente ajustables bajo demanda, por ejemplo, no se puede alquilar realistamente una máquina sin una caché de CPU, en Lokad nos esforzamos por aprovechar al máximo todos los recursos que se pagan, incluso si esos recursos no se solicitaron estrictamente en primer lugar.