banner
Hogar / Blog / Socket Runtime pretende eliminar la nube como una dependencia • The Register
Blog

Socket Runtime pretende eliminar la nube como una dependencia • The Register

Nov 17, 2023Nov 17, 2023

Interview Socket Supply Co presentó hoy Socket Runtime, un tiempo de ejecución de código abierto para crear aplicaciones nativas móviles y de escritorio para Linux, macOS o Windows utilizando tecnologías web, pero con conectividad peer-to-peer opcional como una forma de complementar o incluso evitar la nube backend. servicios.

Un tiempo de ejecución es un entorno para ejecutar código. Los navegadores web sirven como tiempos de ejecución para el código JavaScript. También existen tiempos de ejecución de servidores como Node.js, Deno y Bun, para aplicaciones JavaScript que se ejecutan fuera de los navegadores. Y hay tiempos de ejecución de aplicaciones como Electron, Tauri y Socket Runtime, para aplicaciones JavaScript que se ejecutan localmente en dispositivos de escritorio (y móviles para los dos últimos).

Electron, un popular marco de código abierto para crear aplicaciones multiplataforma con tecnologías web (JavaScript, CSS, HTML), se basa en el motor del navegador Chromium para representar páginas web y el entorno de ejecución Node.js. Reúne un proceso principal de Node.js, para manejar funciones orientadas al servidor y cosas como el acceso a archivos, con procesos de renderizado de Chrome para presentar interfaces de usuario basadas en HTML.

"El gran problema con Electron es que nunca fue diseñado para funcionar en dispositivos móviles", dijo Paolo Fragomeni, director ejecutivo de Socket Supply Co, en una entrevista con The Register.

Tauri es un marco de código abierto para crear aplicaciones móviles y de escritorio para varias plataformas nativas utilizando Rust y WebView para representar HTML. Las aplicaciones Tauri no se envían con un tiempo de ejecución porque el binario final se compila con Rust.

Pero Fragomeni sostiene que Socket Runtime es preferible porque no hay ningún lenguaje de programación nuevo que aprender. "Con Tauri, está Rust, y eso es imposible para la mayoría de los desarrolladores web", dijo.

Planteó objeciones similares al marco Flutter de Google. "Flutter introduce nuevamente este nuevo lenguaje para aprender, Dart, que es bastante oscuro en el panorama general", dijo, aunque admitió que Google "tiene grandes ingenieros trabajando en esas cosas".

Fragomeni sostiene que las tecnologías web son el camino a seguir, haciéndose eco del grito de guerra del creador de JavaScript, Brendan Eich: "¡Apueste siempre por JS!".

"Nos encanta la web", dijo Fragomeni. "Hay más desarrolladores web que cualquier otro tipo de desarrolladores. La web tiene la mejor documentación, los patrones de diseño más conocidos y las empresas más grandes invierten en ella".

Pero los navegadores, dice, fueron diseñados para un tipo específico de software cliente-servidor, por lo que hemos visto esfuerzos como Electron y Tauri (sin mencionar Capacitor, Cordova, Ionic, NativeScript y React Native) para llevar la tecnología web a aplicaciones nativas. desarrollo. Estos han sido bienvenidos, dice, porque apuntar a múltiples plataformas es un desafío desde el punto de vista del desarrollo y la gestión.

"Es realmente difícil encontrar, contratar y luego incentivar y mantener a un ingeniero de Android, un ingeniero de iOS, un ingeniero de escritorio de Windows, un ingeniero de macOS y un ingeniero de Linux", dijo.

"Socket ayuda a los desarrolladores web a crear aplicaciones para cualquier sistema operativo, de escritorio y móvil. Y eso usando HTML, CSS y JavaScript, o sus marcos favoritos".

Socket Runtime también tiene una ventaja de tamaño sobre Electron: produce aplicaciones mucho más pequeñas. Electron, dice, proporciona "un binario de 200 megabytes básicamente al final del día, mientras que Socket envía un binario de 1,5 megabytes. Y eso es un gran problema si se quiere dirigirse a los mercados emergentes".

Tauri es competitivo en términos de tamaño binario, aunque Fragomeni no está de acuerdo con las elecciones arquitectónicas de Tauri por ser inseguras a pesar de las ventajas de seguridad de la memoria disponibles en Rust.

"Tauri, hay un gran trabajo en ello", dijo, "pero han trasladado la idea del proceso principal [como se ve en Electron]. El proceso principal es este tipo de proceso arbitrario que se ejecuta en su computadora. Tiene acceso completo y sin mitigaciones a su computadora, y no hay forma de que un usuario tenga garantías sobre lo que haría este proceso".

"Socket adopta un enfoque radicalmente diferente en el sentido de que adoptamos estándares web", afirmó Fragomeni. "En los estándares web, existe algo llamado CSP (política de seguridad de contenido). La usamos para mitigar, de manera detallada, las llamadas IPC [comunicación entre procesos] que van a la capa intermedia".

La capa intermedia, explica, maneja el acceso al sistema de archivos, proporciona UDP sobre JavaScript, etc. Pero lo hace mediante un esquema basado en URI. "Así que puedo hacer cosas como incluir en la lista blanca ciertos tipos de llamadas al sistema de archivos o ciertas rutas o ciertas funciones, y puedo obtener un control muy detallado pero usando un estándar web", dijo.

Las aplicaciones de socket, dice Fragomeni, se basan en el componente WebView que ahora existe en los principales sistemas operativos, aunque en diversas formas. "Este componente es inconsistente en todos los sistemas operativos, así que lo que hacemos es normalizarlo", dijo.

Lo que distingue a Socket Runtime es su soporte peer-to-peer (P2P), que según Fragomeni difiere significativamente de los diseños P2P que surgieron hace dos décadas, como la tabla hash distribuida Kademlia.

"Las topologías de red actuales, debido a los patrones de uso móvil, son completamente diferentes a las de principios de la década de 2000", explicó. "El moderno protocolo peer-to-peer que hemos desarrollado realmente tiene esto en cuenta. Tenemos una pequeña ventana de tiempo para satisfacer al usuario. Por eso nos hemos alejado bastante de los diseños populares de peer-to-peer. protocolos que hemos visto en las últimas décadas, como BitTorrent o libp2p".

Fragomeni dice que la especificación Socket Runtime P2P consta de menos de 1500 líneas de código en JavaScript puro. Para que pueda aprenderse, comprenderse y auditarse.

La razón para utilizar P2P, según Fragomeni, es que puede emancipar a los desarrolladores de los costosos servicios en la nube.

"Mi relación con la nube es una relación propietario-inquilino", dijo. "Estoy en deuda con Jeff Bezos o quien sea, y tengo un contrato de arrendamiento de por vida con mi producto después de construirlo porque hay muchas tuberías que encajar. Hay mucho código adhesivo que conecta estos diferentes servicios, muchos de riesgo básicamente."

"La nube es el mayor costo para todos. Es una locura que estemos pagando tanto dinero para hacer este tipo de ceremonias sin sentido para unir estas piezas [de aplicaciones] que, al final del día, en realidad no agregan mucho valor, aunque están añadiendo mucha complejidad".

Eso no significa que los servicios en la nube, como el almacenamiento, no sean apropiados para ciertos casos de uso.

"Todo el almacenamiento depende de los patrones de acceso que tenga su aplicación", dijo Fragomeni. "Entonces, por ejemplo, si quisiera crear un clon de Notion, los datos se pueden distribuir a los usuarios de la organización, debido a cómo funciona nuestro protocolo, los datos se almacenan en la red; la aplicación seguirá funcionando incluso si las personas están desconectadas .

"Pero digamos que tienes petabytes de archivos de películas a los que casi nadie accederá durante largos períodos de tiempo, este sería un gran caso de uso para el almacenamiento en frío de Amazon".

Cuando se le preguntó si una aplicación habilitada para Socket P2P consumiría la batería de un dispositivo móvil mientras se ejecuta en segundo plano, Fragomeni insistió en que la aplicación no necesitaría exigir excesivamente el dispositivo del usuario. "Estadísticamente, si todos hacen pequeñas contribuciones a la construcción de la red, en realidad funciona bastante bien desde el punto de vista probabilístico", dijo. "Luego, la parte de confiabilidad, en simulaciones que hemos visto en un corpus académico, podemos obtener una alta confiabilidad que es igual a la confiabilidad que vemos en la nube".

"P2P no implica de ninguna manera que el almacenamiento o los recursos informáticos de un usuario estén disponibles", añadió. "Nadie, excepto el desarrollador, tiene control sobre sus recursos computacionales, y eso es exactamente lo mismo que con una aplicación web o una aplicación nativa que utiliza la nube".

The Register preguntó a Feross Aboukhadijeh, fundador y director ejecutivo de Socket Inc, una empresa de seguridad de código abierto no relacionada, qué piensa de Socket Runtime.

"Socket Runtime es interesante para los desarrolladores por varias razones diferentes", dijo Aboukhadijeh, señalando que conoce a algunas de las personas que trabajan en Socket Supply Co. "Por un lado, abordan una de las mayores quejas de los usuarios finales con Electron, el tamaño binario. Los archivos binarios de Electron son grandes porque incluyen una copia completa de Blink [motor de renderizado de Chrome] y Node.js. Pero Socket Runtime utiliza la vista web nativa del sistema operativo, por lo que no es necesario incluir un navegador completo en el binario. A diferencia de Electron, También funciona en dispositivos móviles."

"La inclusión de P2P como una consideración de primera clase es muy emocionante y lo diferencia de Electron", continuó. "Los beneficios de las aplicaciones P2P son numerosos: mejor privacidad ya que no es necesario almacenar los datos en la nube, mejor soporte fuera de línea y menores costos de servidor para los creadores de aplicaciones".

Socket Runtime es un software gratuito y de código abierto. Para respaldar su funcionamiento continuo, la empresa vende gestión del rendimiento de aplicaciones a través de una aplicación llamada Socket Operador.

"Socket Operador, nuestra oferta comercial, incluye un producto de gestión del rendimiento de aplicaciones (APM) complementario que se utiliza para diagnosticar y solucionar problemas dentro de las aplicaciones de Socket que usted crea", explicó Fragomeni. "Hay complementos adicionales, como la implementación en múltiples tiendas con un solo clic en nuestra aplicación de operador, similar a una consola de AWS, que ayuda a los desarrolladores durante todo el ciclo de vida de creación de sus aplicaciones".

"NO es necesario, puede implementar una aplicación comercial sin ella. Sin embargo, si está implementando una aplicación comercial, tener algún tipo de herramienta de monitoreo/APM es una mejor práctica (es decir, si algo sale mal, querrá poder diagnosticar y solucionar problemas en su aplicación).

Es perfectamente posible crear una aplicación Socket Runtime, compilarla para una plataforma nativa como macOS y nunca utilizar ninguna red P2P. Pero Fragomeni cree que P2P tiene sentido en un momento en el que se produce tanta computación en el borde de la red.

"Cuando empezamos a hablar de cosas como esta (reemplazar la nube o incluso complementarla significativamente) es una afirmación bastante grande", dijo Fragomeni. "La gente piensa que la nube apenas está comenzando. '¿Cómo es posible que haya gente tratando de reemplazarla ya?'"

"Pero creo que es cierto, como dicen, que todo lo popular en tecnología es reemplazado por otra cosa. Y casi siempre es una sorpresa... Creo que a medida que comenzamos a ver esta proliferación de hardware, y a medida que comenzamos a ver "Este increíble aumento en la creación de datos de contenido hacia el borde de la red... estos viajes de ida y vuelta al centro de datos simplemente dejaron de tener sentido después de un tiempo". ®

Envíanos noticias

33Obtén nuestro3