Satu File Ini Memperbaiki Environment Dev Saya (Devbox)

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

Transcript

00:00:00readme Anda membohongi Anda, katanya pengaturan butuh lima menit, lalu node salah, python salah
00:00:07postgres hilang, docker butuh waktu lama, dan sekarang kita debugging sebelum mulai
00:00:13lingkungan pengembangan Anda tidak boleh ada di readme, seharusnya ada di git, itulah gunanya devbox
00:00:20satu file json devbox, satu perintah devbox shell, lingkungan yang sama untuk setiap developer tanpa instalasi global
00:00:28dan tidak perlu pengetahuan nix, biarkan saya tunjukkan
00:00:30awalnya devbox terlihat terlalu sederhana, Anda membuat devbox json, lalu mencantumkan peralatan yang dibutuhkan proyek
00:00:42node, go, python, postgres, apa pun yang sebenarnya dibutuhkan stack Anda, lalu Anda commit file itu, maka orang lain bisa
00:00:50menjalankan devbox shell dan mereka mendapatkan lingkungan yang sama dengan Anda, versi, alat, skrip yang sama, tanpa instalasi
00:00:58global, tanpa "tolong instal delapan hal ini dulu", tanpa state homebrew dari tahun lalu, pengaturan Anda
00:01:03berhenti hidup di ingatan seseorang, tapi mulai hidup di repo Anda, itu terdengar kecil, tapi jika Anda pernah
00:01:09kehilangan setengah hari untuk debugging pengaturan lokal yang rusak, Anda tahu ini tidak kecil, jika Anda menikmati
00:01:16alat koding untuk mempercepat alur kerja Anda, pastikan untuk subscribe, kami punya video baru setiap saat
00:01:20sekarang kita mulai dari sini, saya akan mulai dengan proyek kosong, saya akan membuat folder baru
00:01:25kita sebut devbox demo, kita masuk ke folder tersebut, dan saat sudah punya devbox, yang perlu dilakukan hanya menjalankan
00:01:31devbox init, devbox membuat file bernama devbox json, saat ini isinya hampir kosong, hanya boilerplate
00:01:39yang diberikan devbox, sekarang mari tambahkan alat yang sebenarnya dibutuhkan proyek ini, untuk menambah alat kita bisa
00:01:45membuat devbox add dan saya akan menginstal hal-hal seperti go, node.js, dan python, nah ini bagian
00:01:52pentingnya, saya tidak menginstal ini secara global, saya tidak mengubah node sistem, saya tidak menyentuh sistem
00:02:00saya dengan python, alat-alat ini milik proyek ini sekarang, saat saya menjalankan devbox shell dan saya berada dalam lingkungan
00:02:09proyek yang bersih, sekarang setelah berada di lingkungan ini, Anda bisa memeriksa versinya, go version, node
00:02:14version, python version, ya saya bisa memeriksa semuanya untuk memastikan semuanya berjalan, nah itu hasil besarnya
00:02:19proyek meminta alat spesifik, devbox memberikan alat tersebut, sekarang mari tambahkan skrip dan di dalam devbox
00:02:27json kita bisa mendefinisikan tes dan saya hanya akan meng-echo "menjalankan tes" dan saya akan mendapatkan node
00:02:34dan versi go saat Anda menjalankan devbox run test, dan sekarang perintah yang sama berfungsi untuk siapa pun yang menggunakan repo ini
00:02:42skrip yang sama, alat yang sama, lingkungan yang sama, sekarang lihat apa yang terjadi saat saya keluar, Anda bisa menjalankan exit
00:02:48Anda akan meninggalkan lingkungan itu dan saya kembali ke lingkungan mesin normal saya, jadi itu sangat
00:02:53sederhana bukan? jadi apa yang sebenarnya dilakukan devbox? nah, devbox menggunakan nix di dasarnya, nix hebat karena
00:03:00ia dibuat untuk reproduktibilitas, alih-alih mengatakan "instal apa pun yang terbaru hari ini"
00:03:06ia bisa mematok (pin) alat tepat yang dibutuhkan proyek Anda, nah itu bagian bagusnya, bagian sulitnya adalah
00:03:12bahwa nix terasa seperti dunia yang benar-benar baru, ada banyak konsep yang hebat tapi tidak begitu
00:03:18ramah saat yang Anda inginkan hanyalah versi node yang tepat, devbox menunjukkan kepada kita sesuatu yang berbeda
00:03:23di sini ia berkata "bagaimana jika kita tetap mempertahankan reproduktibilitas tapi membuat alur kerjanya terasa normal?", jadi daripada
00:03:29menulis ekspresi nix, Anda bisa menggunakan perintah seperti devbox add, devbox search, shell, run, services, semua
00:03:37perintah ini jauh lebih sederhana dan proyek Anda mendapatkan dua file penting, Anda mendapatkan file json dan
00:03:44lock file, anggap devbox json sebagai apa yang dibutuhkan lingkungan kita, anggap devbox lock file sebagai pin untuk mematok
00:03:52tepat apa yang Anda dapatkan, Anda commit keduanya, sekarang lingkungan Anda bukan hanya paragraf di file readme
00:03:58itu adalah bagian dari proyek yang sebenarnya, devbox bekerja di mac os, linux, dan wsl, bisa terintegrasi dengan vs code, bisa
00:04:06mendefinisikan skrip, bisa mengelola layanan seperti database, dan saat Anda butuh, ia bisa mengekspor ke hal seperti
00:04:12docker, dev containers, dan alur kerja ci, nilai dari ini bukan sekadar alat keren, melainkan alat yang sangat sederhana, nilainya
00:04:19menurut saya adalah waktu, masalah pertama adalah readme, bukan? readme bisa menulis apa saja, bisa
00:04:26menulis "hei instal node 18" tapi aplikasinya sudah berubah dan benar-benar butuh node 20, masalah kedua
00:04:32yang terbantu oleh ini adalah onboarding, ini hari pertama Anda bekerja, seharusnya mudah untuk memulai
00:04:37kita tahu kenyataannya tidak begitu, bukan? jadi Anda tidak perlu bertanya "versi node mana yang saya butuhkan?", Anda tidak perlu
00:04:43menghubungi seseorang "hei versi python berapa yang kita pakai?", "apa saya benar-benar perlu postgres secara lokal?" dan kenapa
00:04:48ini hanya berfungsi untuk si timmy kecil di sana? mereka seharusnya hanya perlu melakukan clone repo, masuk ke shell,
00:04:52dan menjalankan proyeknya, jika ada yang rusak setidaknya semua orang memulai dari lingkungan yang sama, masalahnya
00:04:58adalah polusi global, mencoba peralatan seharusnya tidak merusak laptop Anda, Anda ingin go 1.22 untuk repo ini Anda menambahkannya,
00:05:06Anda ingin node 20 di sini tapi yang lain di tempat lain, oke tidak masalah, alat-alat tersebut hidup bersama proyek, sistem Anda
00:05:13tetap lebih bersih dengan devbox, definisi lingkungan Anda bisa dibagikan antara pengembangan lokal
00:05:18dan otomatisasi, apakah itu memperbaiki setiap masalah ci? tidak, tidak akan, tapi itu menghilangkan sebagian besar masalah
00:05:26bodoh dan masalah bodoh adalah yang paling menyakiti kita, mereka sederhana tapi kita selalu mengalaminya sepanjang
00:05:32waktu, terakhir di sini ada docker, alur kerja docker lokal yang berat, lebih spesifiknya, docker masih hebat, sejauh ini jika
00:05:40Anda perlu kontainer gunakanlah kontainer, tapi banyak tim menggunakan docker secara lokal karena mereka tidak punya cara yang lebih baik
00:05:46untuk mengelola alat, sekarang apa yang bagus di sini adalah alur kerjanya sangat sederhana, devbox add, shell, run, Anda
00:05:52tidak harus belajar terlalu banyak, lingkungan menjadi bagian nyata dari proyek Anda, file nyata
00:05:57di repo, saat semua orang menggunakan versi dan skrip yang sama, debugging menjadi lebih mudah, tapi itu hebat
00:06:03super sederhana, apa yang akan mengganggu Anda adalah, yah, unduhan nix pertama kali, itu butuh waktu lama untuk mengunduh
00:06:09tidak apa-apa, itu hanya pertama kalinya, oke json sederhana tapi bisa jadi jelek seperti yang kita tahu jika kita menambah terlalu banyak
00:06:15hal ke dalamnya, untuk skrip dasar tidak masalah, untuk logika pengaturan yang kompleks jangan menjejalkan perintah shell raksasa ke json
00:06:22cukup masukkan logikanya ke file sh, lalu panggil dari devbox, dan terakhir devbox bukan ide cloud penuh
00:06:30jika Anda butuh koding berbasis browser, url pratinjau instan, Anda mungkin masih menginginkan sesuatu seperti codespaces
00:06:36devbox paling baik untuk reproduktibilitas lokal dan ci, devbox tidak akan menyelesaikan setiap masalah pengembangan
00:06:42tapi bisa menyelesaikan yang paling membuat kita kesal, yaitu hanya membuat proyek bisa
00:06:46berjalan, jadi bisa dicoba, terutama jika proyek Anda memiliki lebih dari satu bahasa atau lebih dari
00:06:51satu alat cli, jika Anda menikmati alat koding seperti ini pastikan untuk subscribe ke saluran better stack, kami
00:06:56akan bertemu Anda di video lain.

Key Takeaway

Devbox menstandarisasi lingkungan pengembangan dengan memindahkan konfigurasi alat dan skrip ke dalam file JSON yang dapat dikomit ke repositori, memastikan setiap developer mendapatkan lingkungan yang sama persis tanpa perlu instalasi global.

Highlights

  • Devbox menggunakan konfigurasi file JSON dan file lock untuk memastikan lingkungan pengembangan yang identik di setiap mesin developer.

  • Perintah seperti 'devbox add', 'devbox shell', dan 'devbox run' memungkinkan instalasi alat tanpa mengubah konfigurasi global sistem.

  • Devbox berbasis pada Nix untuk menjamin reproduktibilitas alat dan versi, yang memecahkan masalah konfigurasi yang sering rusak.

  • Alat ini mendukung integrasi dengan macOS, Linux, WSL, VS Code, Docker, dan alur kerja CI.

  • Penggunaan file konfigurasi di dalam repositori menghilangkan ketergantungan pada instruksi pengaturan yang sering usang di file README.

Timeline

Masalah pada Lingkungan Pengembangan Tradisional

  • Instruksi pengaturan di file README seringkali tidak akurat dan menyebabkan masalah debugging lokal.
  • Penginstalan alat secara global di mesin developer sering kali menyebabkan konflik versi antar proyek.

Banyak tim mengalami kendala saat developer baru mencoba memulai proyek karena instruksi README yang sudah usang atau ketergantungan pada versi perangkat lunak yang tidak spesifik. Ketergantungan pada instalasi global menyebabkan lingkungan pengembangan sulit untuk direplikasi secara konsisten antar anggota tim.

Cara Kerja Devbox

  • Perintah 'devbox init' membuat file konfigurasi JSON untuk menyimpan daftar alat yang dibutuhkan proyek.
  • Alat seperti Go, Node.js, atau Python diinstal di tingkat proyek, bukan di tingkat sistem, saat menjalankan 'devbox shell'.

Devbox memungkinkan pembuatan lingkungan terisolasi untuk setiap proyek. Dengan menggunakan 'devbox add', semua alat yang dibutuhkan oleh proyek tertentu akan terdaftar dalam file JSON dan file lock, yang kemudian dapat digunakan oleh siapa saja yang melakukan clone repositori untuk mendapatkan lingkungan yang sama persis.

Keunggulan Teknis dan Integrasi

  • Devbox memanfaatkan mesin Nix di latar belakang untuk menjamin reproduktibilitas alat yang dipatok (pin).
  • Lingkungan Devbox dapat diekspor untuk digunakan dalam Docker, VS Code, dan alur kerja integrasi berkelanjutan (CI).

Meskipun Nix dikenal memiliki kurva pembelajaran yang curam, Devbox menyederhanakan alur kerja tersebut menjadi perintah yang mudah digunakan tanpa perlu memahami ekspresi Nix. Ini memungkinkan tim untuk memiliki definisi lingkungan yang konsisten dari pengembangan lokal hingga tahap otomatisasi CI.

Batasan dan Penggunaan

  • Waktu unduh awal bisa memakan waktu karena sifat dasar Nix.
  • Devbox ditujukan untuk reproduktibilitas lokal dan CI, bukan sebagai lingkungan pengembangan berbasis cloud penuh.

Meskipun sangat efektif, pengunduhan awal Nix memerlukan waktu tambahan. Untuk pengaturan yang sangat kompleks, logika skrip sebaiknya disimpan dalam file terpisah dan dipanggil melalui file JSON agar konfigurasi tetap bersih dan mudah dipelihara.

Community Posts

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

Write about this video