Rust es un lenguaje de alto nivel orientado a una programación segura, de alto rendimiento y generalizable. Originalmente pensado para programación de sistemas, ha encontrado un hueco en el desarrollo web gracias a su activa comunidad. Te explico sus puntos fuertes y cómo impactará en tu negocio.

Lo pillo, en serio. Que el uso de Rust para web “es minoritario,” que “Java tiene más comunidad,” que ”de Java hay más programadores/as,” que “si te atropella un autobús no hay nadie que sepa mantenerlo…” son ejemplos de excusas que cualquier técnico ha oído cuando ha intentado promover una nueva tecnología que no sea el estándar de facto del sector.

Y digo excusas, porque aunque sean argumentos válidos, el problema es que las decimos para evitar cambiar. Son como las típicas excusas que te pones para evitar realizar tus propósitos. El gimnasio te pilla lejos, si tan solo lo tuvieras en casa, serías Schwarzenegger. Cuando lo tienes, no miras las pesas ni de refilón.

La vida social te empuja a la mala vida, tú eras feliz comiendo una ensalada en tu casa, pero las normas sociales dictan que tienes que comer una pizza con los amigos. Pero te encierran en casa y engordas por ansiedad, claro.

Constantemente nos limitamos con ideas que, si bien pueden tener un punto de validez, asumirlas como algo inexorable provoca que no nos movamos y, por lo tanto, que no mejoremos.

Con la tecnología pasa lo mismo: nos limitamos a probar cosas nuevas porque el statu quo es cómodo, pero en un mundo tan dinámico y competitivo como las Tecnologías de la Información, a la larga, es letal.

Por eso, este artículo tiene un doble objetivo, informar sobre Rust y a la vez crear conciencia de la necesidad de evolucionar. Empezamos con un poco de historia…

Los orígenes: el ascensor que cambia el paradigma tecnológico

Todo empezó cuando un joven ingeniero de 29 años, Graydon Hoare, regresaba a su apartamento de Vancouver después de un día de trabajo en la Mozilla Foundation. Se encontró con que, como en tantas otras ocasiones, el ascensor de su edificio no funcionaba. Graydon vivía en el piso 21, así que podéis imaginar su insatisfacción con el acontecimiento.

Como experimentado ingeniero que era, sabía que el software de los ascensores, así como el de tantas otras máquinas, desde cafeteras hasta wereables, están escritos en C o C++ en su mayor parte. Estos lenguajes tienen la ventaja de ser eficientes en el uso de memoria y CPU, al coste de no tener colector de basura.

Lo que parece un pequeño precio a pagar, es un verdadero problema en la práctica, ya que un error al programar conlleva que la memoria se vaya llenando poco a poco sin que nada la vacíe, acabando por colapsar.

Nuestro joven protagonista visionó entonces un lenguaje de programación que pudiera competir en eficiencia de tú a tú con C++ y a su vez fuera tan seguro como otros lenguajes con colector de basura como Java. Ahí es cuando nació Rust.

Lo que al principio empezó como un proyecto personal de Graydon, pasó a ser una iniciativa apoyada por Mozilla cuando se dieron cuenta de que era de gran utilidad para su negocio, los navegadores web, ya que estos también se escriben en C y C++ para garantizar que son livianos. Con el apoyo de la fundación, rápidamente empezó a ganar tracción.

No sabemos si Graydon arregló gracias a eso su problema con los ascensores o tuvo que seguir ejercitando sus gemelos, pero lo cierto es que, algo más de 17 años más tarde, Rust es el lenguaje más amado del mundo, según la encuesta anual de StackOverflow.

Los motivos, programar software de alto rendimiento sin tener que preocuparse por fugas de memoria, un compilador generoso que es claro en el dónde y cómo te has equivocado, patrones de diseño que fuerzan a programar mejor (adiós al concepto de ‘nulo’, tan javero), la potencia de abstracción de los Traits (similares a las interfaces de Java) y poder escribir metacódigo (código que genera otro código) con los rust macros.

Empresas de la talla de Microsoft, Amazon y Google lo usan y lo consideran clave (Google está desarrollando su nuevo Sistema Operativo, Fuchsia, enteramente en Rust) y empresas como Dropbox ya lo usan con éxito.

En el presente artículo nos centraremos en las ventajas que ofrece Rust y, como a la larga, va a reducir tus facturas y disgustos.

Casos reales

Leyendo por la web te encuentras con anécdotas de empresas que decidieron refactorizar un servicio o a veces su codebase entera a Rust.

En el caso de Dropbox, necesitaban rehacer el núcleo de su negocio, la sincronización de ficheros, debido a que ya no se adaptaba a la escala de la empresa. Todos los que hemos pasado por tener que rehacer un proyecto entero de software de 0, sabemos lo complicado que resulta por las elevadas expectativas que tiene el cliente. No puedes cambiar algo que funciona a algo que está repleto de bugs.

Dropbox codificó sus reglas de negocio usando el type system de Rust, de forma que el compilador comprobaba esas reglas, evitando así que los errores llegaran a producción.

Microsoft también ha decidido usarlo por minimizar los riesgos del desarrollo de su sistema operativo y la gran experiencia de desarrollo, lo que redunda en tiempos menores de entrega.

Otro de sus puntos clave es la performance. Es el ejemplo de Atlas Weekend, donde usaron Rust para su backend de procesamiento de tickets y permisos. Cuando tienes que controlar la entrada de medio millón de personas a diferentes sitios, algunos con seguridad crítica, la velocidad de respuesta es muy importante. Rust con Actix-web, uno de los frameworks más rápidos que existen, les permitió procesar los tickets a una velocidad muy alta.

Una cosa es la performance, y otra, es la eficiencia de recursos. Aquí Rust nos demuestra uno de sus puntos fuertes más claros. Esta empresa se encontró con la agradable sorpresa de que ahorraron el 85% de sus costes de cloud simplemente por reescribir su código Ruby a Rust.

Linkedin también ahorra órdenes de magnitud en costes de servidores con Rust en comparación a Java, que requiere entre un 2000% y un 8000% más de uso de memoria. Aquí una comparación de velocidad respecto a otros lenguajes, cortesía de ByteBarker:

Si tan bueno es, ¿por qué no lo usa todo el mundo?

Es la pregunta que te estarás haciendo en este punto, aunque quizás ya esté contestada en la introducción. La razón de por qué no se usa ampliamente Rust, y no solo este, sino otros como Go o Julia, es la misma de siempre. El cambio tiene un coste de oportunidad.

El dinero y el tiempo (o sea, dinero también) que invertimos en aprender y experimentar con una nueva tecnología, no lo estamos invirtiendo en ser productivos en otra que ya manejamos.

Las siguientes imágenes, tomadas prestadas de Mainmatter, explican bien el quid de la cuestión gráficamente.

Rust es tiene una curva de aprendizaje más dura inicialmente que otros lenguajes de programación, debido a términos ajenos a otros como el borrow (que también tiene Go) y los lifetimes, que explicaré en otros artículos.

Las macros son complejas (aunque totalmente opcionales, igual que hacer tus propias Java annotations) pero al final todo redunda en una mayor productividad y rendimiento muy superior una vez le has pillado el truco.

Habiendo explicado esto, es obvio que no en todos los proyectos será conveniente cambiar a Rust, mucho menos si no se tiene experiencia previa, pero siempre se puede hacer algún pequeño microservicio o refactorizar uno ya existente donde las ventajas de Rust sean más patentes y a partir de ahí, ir creciendo. Dejo algunas preguntas para reflexión del gerente que lea el artículo:

Si has dejado volar tu imaginación y has visto el cielo, es hora de hacer un cambio.

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.

Suscríbete

Estamos comprometidos.

Tecnología, personas e impacto positivo.