Este único archivo arregló mi entorno de desarrollo (Devbox)

BBetter Stack
컴퓨터/소프트웨어창업/스타트업AI/미래기술

Transcript

00:00:00tu léame te está mintiendo, dice que la configuración toma cinco minutos, luego falla node, falla python
00:00:07falta postgres, docker tarda una eternidad y ahora estamos depurando antes siquiera de empezar
00:00:13tu entorno de desarrollo no debería vivir en un léame, debería vivir en git, eso es lo que hace devbox
00:00:20un archivo devbox json, un comando devbox shell, el mismo entorno para cada desarrollador sin instalaciones globales
00:00:28y sin necesidad de conocer nix, déjame mostrarte
00:00:30al principio devbox parece casi demasiado simple, creas un devbox json, listas las herramientas que necesita tu proyecto
00:00:42node, go, python, postgres, lo que sea que tu stack realmente necesite, confirmas ese archivo y cualquier otro puede simplemente
00:00:50ejecutar devbox shell y obtienen el mismo entorno que tú, las mismas versiones, herramientas, scripts, nada de instalaciones
00:00:58globales, nada de por favor instala estas ocho cosas primero, nada de estado de homebrew de hace años, tu configuración
00:01:03deja de vivir en la memoria de alguien, empieza a vivir en tu repositorio, ahora eso suena pequeño, pero si alguna vez
00:01:09has perdido medio día por una configuración local rota, ya sabes que esto no es pequeño, si disfrutas
00:01:16de herramientas de codificación para acelerar tu flujo de trabajo, asegúrate de suscribirte, tenemos videos saliendo todo el tiempo
00:01:20ahora vamos a empezar aquí, así que voy a comenzar con un proyecto vacío, voy a crear una nueva carpeta
00:01:25la llamaremos devbox demo, accedemos a la carpeta y todo lo que necesitamos hacer una vez que tenemos devbox es ejecutar
00:01:31devbox init, devbox crea un archivo llamado devbox json, ahora mismo está básicamente vacío, es solo el
00:01:39boilerplate que nos da devbox, ahora añadamos las herramientas que este proyecto realmente necesita, para añadir herramientas podemos
00:01:45crear un devbox add y voy a instalar cosas como go, node.js y algo de python, ahora aquí está la
00:01:52parte importante, no estoy instalando esto globalmente, no estoy cambiando mi node del sistema, no estoy tocando mi sistema
00:02:00con python, estas herramientas pertenecen a este proyecto, ahora cuando ejecuto devbox shell y estoy dentro de un proyecto limpio
00:02:09entorno, ahora que estás en este entorno, podrías simplemente verificar las versiones, verdad, go version, node
00:02:14version, python version, verdad, puedo verificar todo para asegurarme de que esté funcionando, esa es la gran recompensa
00:02:19el proyecto pidió herramientas específicas, devbox me dio esas herramientas, ahora añadamos un script y dentro de devbox
00:02:27json podemos definir una prueba y simplemente voy a hacer eco de estas pruebas en ejecución y obtendré el nodo
00:02:34en la versión de go, cuando ejecutas devbox run test y ahora ese mismo comando funciona para cualquiera que use este repositorio
00:02:42mismo script, mismas herramientas, mismo entorno, ahora mira lo que pasa cuando salgo, puedes simplemente ejecutar exit
00:02:48vas a salir de ese entorno y estoy de vuelta en mi entorno de máquina normal, así que fue simple, verdad, qué está haciendo realmente devbox
00:02:53bueno, devbox usa nix bajo todo, nix es genial porque
00:03:00está construido para la reproducibilidad, en lugar de decir instala lo que sea que resulte ser lo último hoy
00:03:06puede fijar las herramientas exactas que tu proyecto realmente necesita, ahora esa es la buena parte, la parte difícil es
00:03:12que nix puede sentirse como un mundo completamente nuevo, hay muchos conceptos que son geniales, pero no exactamente
00:03:18amigables cuando todo lo que querías era la versión correcta de node, devbox nos muestra algo diferente
00:03:23aquí dice qué pasaría si mantuviéramos la reproducibilidad pero hiciéramos que el flujo de trabajo se sintiera normal, así que en lugar de
00:03:29escribir expresiones de nix puedes usar comandos como devbox add, devbox search, shell, run, services, todos
00:03:37estos comandos son mucho más simples y tu proyecto obtiene dos archivos importantes, obtienes un archivo json y un
00:03:44archivo lock, piensa en el devbox json como lo que necesita nuestro entorno, piensa en el archivo devbox lock como el pin para fijar
00:03:52exactamente lo que obtuviste, confirmas ambos, ahora tu entorno no es solo un párrafo en un archivo léame
00:03:58es parte del proyecto real, devbox funciona en mac os, linux y wsl, puede integrarse con vs code, puede
00:04:06definir scripts, puede administrar servicios como bases de datos y cuando lo necesitas, puede exportar a cosas como
00:04:12docker, dev containers y flujos de trabajo de ci, el valor de esto no es solo una herramienta genial, verdad, es una herramienta simple, el
00:04:19valor es creo que solo tiempo, el primer problema es el léame, ¿verdad?, el léame podría decir realmente cualquier cosa, podría
00:04:26decir hey instala node 18 pero la aplicación ha cambiado, realmente necesita node 20, el segundo problema
00:04:32con el que esto realmente ayuda es la incorporación, es tu primer día en el trabajo, debería ser fácil ponerse en marcha
00:04:37sabemos que ese no es el caso, ¿verdad?, así que no deberías necesitar preguntar qué versión de node necesito, no deberías
00:04:43necesitar preguntar a alguien hey qué versión de python estamos usando, realmente necesito postgres localmente y por qué esto
00:04:48solo funciona para el pequeño timmy allí, simplemente deberían tener que clonar el repositorio, entrar en la terminal
00:04:52y ejecutar el proyecto, si algo falla al menos todos están empezando desde el mismo entorno, el problema
00:04:58es la contaminación global, probar herramientas no debería destruir tu portátil, quieres go 1.22 para este repo, lo añades, tú
00:05:06quieres node 20 aquí pero algo más en otro lugar, bien, está bien, las herramientas viven con el proyecto, tu
00:05:13sistema se mantiene más limpio con devbox, tu definición de entorno puede compartirse entre desarrollo local
00:05:18y automatización, ¿soluciona eso todos los problemas de ci?, no, no lo hará, pero elimina una gran clase de problemas tontos
00:05:26y los problemas tontos son los que más nos duelen, son simples, aún los tenemos todo el
00:05:32tiempo, finalmente aquí está docker, flujo de trabajo local pesado de docker, más específicamente, docker sigue siendo genial, con diferencia, si
00:05:40necesitas contenedores, usa contenedores, pero muchos equipos usan docker localmente porque no tienen una mejor
00:05:46manera de gestionar herramientas, ahora lo bueno aquí es que el flujo de trabajo es simple, devbox add, shell, run, tú
00:05:52no tienes que aprender tanto, el entorno se convierte en una parte real de tu proyecto, un archivo real
00:05:57en el repositorio cuando todos usan las mismas versiones y scripts, la depuración se vuelve más fácil, pero eso es genial
00:06:03super simple, lo que te va a molestar es bueno, la primera descarga tomó un tiempo
00:06:09está bien, es la primera vez, okay, json es simple pero puede volverse feo como sabemos si añadimos demasiado
00:06:15en él, para scripts básicos está bien, para lógica de configuración compleja no metas un comando de shell gigante en json
00:06:22simplemente pon la lógica en un archivo sh, luego llama a eso desde devbox y finalmente devbox no es un ide en la nube completo
00:06:30si necesitas codificación basada en navegador, urls de vista previa instantánea, es posible que aún quieras algo como code spaces
00:06:36devbox es mejor en la reproducibilidad local y de ci, devbox no va a resolver cada problema de desarrollo
00:06:42pero puede resolver los que más nos molestan, que es realmente solo conseguir que el proyecto
00:06:46ejecute, así que podría valer la pena intentarlo, especialmente si tu proyecto tiene más de un lenguaje o más de
00:06:51una herramienta cli, si disfrutas de herramientas de codificación como esta, asegúrate de suscribirte al canal better stack, nos
00:06:56veremos en otro video.

Key Takeaway

Devbox reemplaza las instrucciones manuales de los archivos léame por una configuración de entorno ejecutable y versionada, eliminando errores por discrepancias de versiones entre desarrolladores y contaminación global del sistema.

Highlights

  • Devbox permite definir el entorno de desarrollo mediante un archivo devbox.json, eliminando la necesidad de instalaciones globales que contaminan el sistema operativo.

  • La configuración del entorno se versiona directamente en el repositorio de código, asegurando que todos los desarrolladores utilicen las mismas versiones de herramientas y scripts.

  • Devbox utiliza Nix como motor subyacente para garantizar la reproducibilidad, pero simplifica su uso mediante comandos como devbox add, shell y run.

  • Los archivos devbox.json y devbox.lock fijan las dependencias del proyecto, evitando errores por discrepancias entre configuraciones locales.

  • El flujo de trabajo es compatible con macOS, Linux y WSL, integrándose con VS Code y permitiendo la exportación a contenedores Docker o flujos de CI.

Timeline

El problema de los entornos basados en documentación

  • Las instrucciones de configuración en archivos léame suelen estar desactualizadas o ser incompletas.
  • Las instalaciones globales de herramientas como Node, Python o Docker generan conflictos entre proyectos.
  • La configuración del entorno debe residir dentro del repositorio de Git para garantizar consistencia.

Las dependencias manuales causan errores frecuentes y tiempos de depuración antes de iniciar el trabajo real. Devbox centraliza la configuración en un archivo json, permitiendo que cualquier desarrollador ejecute el mismo entorno sin configuraciones manuales previas.

Implementación práctica de Devbox

  • El comando devbox init genera la estructura básica para definir las herramientas del proyecto.
  • Las herramientas necesarias se añaden mediante devbox add, lo que evita modificar la configuración del sistema operativo.
  • Los comandos devbox shell y devbox run aseguran que el entorno cargue las versiones correctas definidas en el proyecto.

Al inicializar un proyecto, Devbox crea un archivo json donde se listan Go, Node.js, Python o cualquier otra herramienta. Al ejecutar devbox shell, el desarrollador accede a un entorno encapsulado con las versiones específicas, independientemente de lo instalado globalmente en la máquina.

Mecánica técnica y ventajas de reproducibilidad

  • Nix sirve como motor de reproducibilidad para fijar las versiones exactas de las herramientas.
  • Los archivos devbox.json y devbox.lock garantizan que el entorno sea idéntico en desarrollo local y sistemas de CI.
  • La integración permite gestionar servicios como bases de datos y exportar configuraciones a contenedores Docker.

Aunque Nix es potente, su complejidad suele ser alta. Devbox abstrae este motor proporcionando una interfaz de comandos sencilla. Esto resuelve el problema de la incorporación de nuevos desarrolladores al equipo, quienes pueden clonar el repositorio y trabajar inmediatamente.

Limitaciones y consideraciones finales

  • La primera ejecución puede tomar tiempo debido a la descarga de las herramientas definidas.
  • La lógica compleja de configuración no debe incluirse dentro del archivo json, sino en archivos de script externos.
  • Devbox prioriza la reproducibilidad local y de CI, no sustituye la funcionalidad de un IDE en la nube completo.

Aunque soluciona gran parte de los problemas de entorno, no es un entorno de desarrollo integrado basado en navegador. Se recomienda para equipos que buscan estandarizar herramientas cli y entornos locales de manera eficiente sin la sobrecarga de gestionar contenedores Docker manualmente.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video