El fin de la era de localhost
(dx.tips)- En el futuro, todo el desarrollo ocurrirá en la “nube” y no en localhost, y la laptop no será más que un cliente
- Si escribimos la lista de deseos de los desarrolladores para la década de 2030
- Internet gigabit barato (5G/Mesh WiFi)
- Una máquina de desarrollo económica con batería que dure varios días
- Las apps se compilan en segundos sin importar su escala, y los entornos de pruebas y staging se vuelven live en tiempo real en cuanto escribes
- Tu entorno personal de desarrollo te acompaña sin importar qué dispositivo uses
- Las dependencias de entorno de la app (desde certificados HTTPS hasta forks aislados en sandbox de la DB de producción, es decir, todo) se proporcionan de inmediato a cualquier miembro del equipo que quiera desarrollar una funcionalidad, sin necesidad de documentación ni runbooks
- Desde la idea hasta ponerlo en manos de clientes en una semana (usando low-code builders y Backends-as-a-Service)
- Escalar de MVP a unicornio en cuestión de semanas: usando serverless y plataformas como el “nuevo Heroku”. Autenticación/pagos/DB/comunicación se resuelven mediante SaaS de clase mundial
- La mayoría de lo anterior requiere ejecutarse en la “nube” y no en localhost
Si el navegador redujo el sistema operativo a un “conjunto de controladores de dispositivo mal depurados”
la nube está reduciendo la máquina de desarrollo a un “conjunto de mocks de entorno mal gestionados”
"Future is Just Not Evenly Distributed"
- Las grandes empresas que han invertido para aumentar la productividad de los desarrolladores ya están trabajando en la nube
- Google Cider: el IDE web de Google. Integra el enorme sistema de archivos Piper y unifica code review/build/testing. No hace falta bajar el código a la máquina local
- FB On-Demand: aprovisiona entornos “On-Demand” para permitir previews funcionales en tiempo real más fieles que en local. En FB ni siquiera existe el “desarrollo local” como tal
- Etsy: todo el desarrollo ocurre en Cloud VM. “Como VSCode funciona haciendo SSH al VM, nunca he hecho checkout del código fuera del VM”
- Tesla: trasladó el desarrollo del OS del automóvil desde local hacia la nube (antes, según dicen, daban a los desarrolladores desktops costosos para compilar)
- Palantir: migró a Remote Ephemeral Workspace usando Coder (SaaS de entornos remotos de desarrollo) y EKS
- Shopify: la mayoría de los desarrolladores se movieron a un entorno de desarrollo en la nube llamado Spin (VM ligera que corre sobre xhyve)
- GitHub: trasladó gran parte de su desarrollo a Codespaces
- Como se trata de empresas grandes, surge la pregunta: “¿También servirá para empresas pequeñas?”
→ La respuesta es “probablemente sí, pero quizá no en su forma actual”
→ La mayoría de estos casos fue posible porque requirieron una inversión interna considerable y aprovecharon infraestructura interna existente
→ Pero a medida que esta tecnología se convierta en producto y se descubran puntos en común entre distintos clientes, se difundirá cada vez más - La comercialización de entornos Preview ya existe
→ La innovación inicial de Netlify fue hacer posible desplegar proyectos frontend para previsualizarlos
→ Casi todos los sitios de documentación usan ahora algún tipo de sistema de Deploy Preview, y las apps Jamstack incluso pueden usarlo en su proceso de release
Jobs to Be Done of Localhost
- Lo que ocurre en el desarrollo local ahora está siendo atacado
- Editar y ejecutar código en remoto: GitHub Codespaces, Replit, Code.com, CodeSandbax, GitPod
- Ejecutar en un servidor remoto, pero editar código en local: VSCode + Azure VM/Amazon Workspace, Jetbrains Fleet, Okteto Sync
- Editar y ejecutar código dentro de un contenedor JS ligero en el navegador: Stackblitz
- Ejecutar código de forma remota: Bret.dev
- Staging: Planetscale Branches, Stripe Test mode keys, Railway Ephemeral Environments, Okteto environments, Coherence workspaces
Pushback: It's Still Not Good Enough
- Todavía no es lo suficientemente bueno, así que no se emocionen todavía
- Para que esto de “matar localhost” tenga éxito, el aprovisionamiento en sí mismo debe dejar de ser necesario
- Puede variar según la persona, pero para mí incluso 10 segundos para iniciar el preview del código que escribí ya es demasiado
- Desplegar un preview frontend con Netlify Drop toma 1 segundo, pero Netlify CLI tarda 10 segundos
- Aun así, sigo usando por costumbre un entorno de desarrollo en localhost: porque mi ciclo de iteración está en milisegundos
- Este problema de latencia se parece a cómo la ley de Moore se aplica a la infraestructura cloud
- Si ahora no es suficiente, vuelve a mirarlo dentro de 5 años
10 comentarios
Parece que el rol de la laptop realmente se ha convertido en el de una máquina para terminal + reuniones. Una Chromebook basada en ARM con más de 20 horas de batería parece estar convirtiéndose en la laptop ideal.
Sería genial si al menos fuera así, pero ahora mismo, en las empresas que adoptaron la nube con entornos virtuales, les están imponiendo a los desarrolladores ambientes con especificaciones de 8 GB de memoria y 4 CPU (y si ruegan mucho, apenas les dan 16 GB). La brecha entre la realidad y el ideal es demasiado grave.
GitPod también permite editar desde VSCode local. Cuando lo pruebas, de verdad se siente muy fluido (salvo porque al escribir en la terminal hay un poco de retraso y al expandir carpetas se pone un poco lento, por lo demás la experiencia no se siente diferente)
Me sorprende que hasta Tencent lo esté haciendo. https://zdnet.co.kr/view/?no=20220620003628
¿Será que se viene la era de las estaciones de trabajo...?
Entonces las tabletas recibirán aún más atención que ahora.
Estoy moviendo mis proyectos personales para desarrollarlos en la nube siempre que sea posible, pero siento que solo con un IDE hay límites. También estaría bien que mejorara la latencia, y parece que hace falta un entorno donde se puedan usar libremente todas las herramientas simples que uno usa, o algún enfoque complementario. Sería genial poder desarrollar de forma continua con la misma experiencia sin importar si es en Windows, Mac, Linux o incluso en un dispositivo de VR. Igual que con los juegos de Xbox hoy en día, hay ventajas del entorno local y ventajas de la nube, así que es difícil apostar de inmediato por una sola forma, pero al final, ¿no es obvio que todo terminará yéndose a la nube?
Personalmente, considerando temas como la latencia, creo que la dirección podría ser algo como desarrollar levantando en la máquina local un entorno full-stack contenerizado, como WebContainers, y luego guardar y reflejar ese resultado en la nube. Entre lo que se menciona en el texto, estaría algo como StackBlitz.
Más que el fin de
localhost, yo lo veo como el regreso del thin client...Empezó por conveniencia, y me imagino que después terminará yéndose por el lado de la seguridad...
No es una traducción completa, sino un resumen, así que también conviene ver el texto original.
Al final del texto, en la parte donde se resumen las reacciones de la gente, dice: "En Reddit / HN a todos les disgusta que todo termine así"...
A mí me parece un futuro perfectamente posible. Claro, en el proceso se irá mezclando "edición de código local + ejecución en una VM remota", pero
si en la nube se puede garantizar más o menos una latencia al nivel de editar código en local, creo que la mayoría de las empresas va a elegir esto.
Creo que, igual que yo, en Reddit y HN hay mucha gente que ama tener sus datos en su propio dispositivo. Yo tampoco quiero soltar el control sobre mis datos, así que termino usando IDEs en la nube solo de vez en cuando, cuando escribo código de ejemplo.