10.2 C
Madrid
martes, marzo 4, 2025

Presentamos Distill CLI: una herramienta eficiente basada en Rust para el resumen de medios


Distill CLI que resume The Frugal Architect

Hace unas semanas, escribí sobre un proyecto en el que nuestro equipo ha estado trabajando llamado Destilar. Una aplicación sencilla que resume y extrae detalles importantes de nuestras reuniones diarias. Al closing de esa publicación, les prometí una versión CLI escrita en Rust. Después de algunas revisiones de código de Rustaceans en Amazon y un poco de pulido, hoy estoy listo para compartir el Destilar CLI.

Después de compilar desde el código fuente, simplemente pase a Distill CLI un archivo multimedia y seleccione el depósito S3 donde desea almacenar el archivo. Hoy en día, Distill admite la generación de resúmenes como documentos de Phrase, archivos de texto y la impresión directamente en la terminal (el valor predeterminado). Descubrirá que es fácilmente extensible: mi equipo (OCTO) ya lo está usando para exportar resúmenes de las reuniones de nuestro equipo directamente a Slack (y trabajando en soporte para Markdown).

Jugar es una buena forma de aprender y tener curiosidad.

La forma en que construimos ha cambiado bastante desde que comencé a trabajar con sistemas distribuidos. Hoy en día, si lo desea, la computación, el almacenamiento, las bases de datos y las redes están disponibles bajo demanda. Como constructores, nuestro enfoque se ha desplazado hacia una innovación cada vez más rápida y, en el camino, modificar el nivel del sistema se ha convertido en un arte perdido. Pero los retoques son tan importantes ahora como siempre. Recuerdo vívidamente las horas que pasé jugueteando con BSD 2.8 para que funcionara en los PDP-11, y eso consolidó mi amor interminable por el software program del sistema operativo. Tinkering nos brinda la oportunidad de conocer realmente nuestros sistemas. Experimentar con nuevos lenguajes, frameworks y herramientas. Buscar eficiencias grandes y pequeñas. Para encontrar inspiración. Y esto es exactamente lo que pasó con Distill.

Reescribimos una de nuestras funciones Lambda en Rust y observamos que los arranques en frío eran 12 veces más rápidos y el uso de memoria disminuyó en un 73%. Antes de darme cuenta, comencé a pensar en otras formas de hacer que todo el proceso fuera más eficiente para mi caso de uso.

La prueba de concepto unique almacenaba archivos multimedia, transcripciones y resúmenes en S3, pero como estoy ejecutando la CLI localmente, me di cuenta de que podía almacenar las transcripciones y resúmenes en la memoria y ahorrarme algunas escrituras en S3. También quería una manera fácil de cargar medios y monitorear el proceso de resumen sin salir de la línea de comando, así que preparé una interfaz de usuario easy que proporciona actualizaciones de estado y me avisa cuando algo falla. El unique mostró lo que period posible, dejó espacio para retoques y fue el modelo que usé para escribir la CLI de Distill en Rust.

te animo a probary avíseme cuando encuentre algún error, caso extremo o tenga concepts para mejorarlo.

Los constructores eligen Rust

Como tecnólogos, tenemos la responsabilidad de construir de manera sostenible. Y aquí es donde realmente veo el potencial de Rust. Con su énfasis en el rendimiento, la seguridad de la memoria y la concurrencia, existe una oportunidad actual de disminuir los costos computacionales y de mantenimiento. Sus garantías de seguridad de la memoria eliminan errores oscuros que afectan a los proyectos C y C++, reduciendo los fallos sin comprometer el rendimiento. Su modelo de concurrencia impone controles estrictos en tiempo de compilación, evitando carreras de datos y maximizando los procesadores multinúcleo. Y si bien los errores de compilación pueden ser muy irritantes en este momento, menos desarrolladores buscando errores y más tiempo enfocado en la innovación siempre son cosas buenas. Es por eso que se ha convertido en una opción para los constructores que prosperan resolviendo problemas a una escala sin precedentes.

Desde 2018, hemos aprovechado cada vez más Rust para cargas de trabajo críticas en varios servicios como S3, EC2, DynamoDB, Lambda, Fargate y Nitro, especialmente en escenarios donde se espera que los costos de {hardware} dominen con el tiempo. En su publicación invitada del año pasado, Andy Warfield escribió un poco sobre ShardStore, la capa más inferior de la pila de almacenamiento de S3 que administra los datos en cada disco particular person. Rust fue elegido para obtener seguridad de tipos y soporte de lenguaje estructurado para ayudar a identificar errores más rápido, y cómo escribieron bibliotecas para extender esa seguridad de tipos a aplicaciones en estructuras en disco. Si aún no lo has hecho, te recomiendo que lee la publicacióny el papel SOSP.

Esta tendencia se refleja en toda la industria. Discordia trasladó su servicio Learn States de Go a Rust para abordar los grandes picos de latencia causados ​​por la recolección de basura. Es 10 veces más rápido y sus peores latencias de cola se han reducido casi 100x. Similarmente, figura reescribieron partes sensibles al rendimiento de su servicio multijugador en Rust, y han visto mejoras significativas en el rendimiento del lado del servidor, como reducir 6 veces el uso promedio máximo de CPU por máquina.

El punto es que si se toma en serio el costo y la sostenibilidad, no hay razón para no considerar Rust.

El óxido es duro…

Rust tiene fama de ser un idioma difícil de aprender y no discuto que existe una curva de aprendizaje. Le llevará tiempo familiarizarse con el verificador de préstamos y tendrá que luchar con el compilador. Es muy parecido a escribir una PRFAQ para una nueva concept en Amazon. Hay mucha fricción desde el principio, lo que a veces es difícil cuando lo único que realmente quieres hacer es saltar al IDE y comenzar a construir. Pero una vez que estás en el otro lado, existe un tremendo potencial para ganar velocidad. Recuerde, el costo de construir un sistema, servicio o aplicación no es nada comparado con el costo de operarlo, por lo que la forma en que lo construye debe estar bajo escrutinio continuo.

Pero no tienes que creer en mi palabra. A principios de este año, El Registro publicó hallazgos de Google que mostraban que sus equipos de Rust eran dos veces más productivos que los equipos que usaban C++, y que el equipo del mismo tamaño que usaba Rust en lugar de Go period igual de productivo con más corrección en su código. No hay puntos de bonificación por aumentar la plantilla para abordar problemas evitables.

Pensamientos finales

Quiero ser muy claro: este no es un llamado a reescribir todo en Rust. Precisamente como Los monolitos no son dinosaurios.no existe un lenguaje de programación único que los rija a todos y no todas las aplicaciones tendrán los mismos requisitos comerciales o técnicos. Se trata de utilizar la herramienta adecuada para el trabajo adecuado. Esto significa cuestionar el establishment y buscar continuamente formas de optimizar gradualmente sus sistemas, para modificar las cosas y medir lo que sucede. Algo tan easy como cambiar la biblioteca que usas para serializar y deserializar json de la biblioteca estándar de Python a orjson podría ser todo lo que necesita para acelerar su aplicación, reducir el uso de memoria y reducir los costos en el proceso.

Si no le quitas nada más a esta publicación, te animo a que busques activamente eficiencias en todos los aspectos de tu trabajo. Gitano. Medida. Porque todo tiene un costo, y el costo es un buen indicador de un sistema sostenible.

¡Ahora ve a construir!

Un agradecimiento especial a AWS Rustaceans Niko Matsakis y Grant Gurvis por sus revisiones de código y comentarios mientras desarrollaban la CLI de Distill.

Related Articles

DEJA UNA RESPUESTA

Por favor ingrese su comentario!
Por favor ingrese su nombre aquí

Stay Connected

0SeguidoresSeguir
0SuscriptoresSuscribirte
- Advertisement -spot_img

Latest Articles