
Ringkas: Pengujian Claude vs Gemini ini melihat model AI mana yang lebih mulus membangun aplikasi Docker self-hosted. Fokusnya bukan hanya membuat aplikasi to-do, tetapi juga membuat proses hosting mandiri semudah mungkin.
Penulis sudah cukup lama melakukan vibe-coding untuk aplikasi kecil, dan masalah terbesarnya adalah aplikasi seperti itu biasanya hanya hidup dan mati di mesin tempat aplikasi tersebut dibuat. Idealnya, aplikasi-aplikasi ini bisa di-self-host agar dapat diakses dari semua perangkat. Kali ini, pengujian dilakukan pada Claude vs Gemini untuk melihat model mana yang lebih baik dalam membuat aplikasi Docker dan menyederhanakan proses self-hosting.
Uji Claude vs Gemini untuk aplikasi Docker self-hosted
Pertanyaan utamanya: model mana yang lebih baik dalam membangun aplikasi Docker?
Membuat aplikasi kecil untuk merampingkan atau mengotomatisasi pekerjaan adalah salah satu penggunaan LLM yang paling berguna. LLM, atau large language model, adalah model AI yang dapat memahami dan menghasilkan teks atau kode. Alih-alih terus menghabiskan token untuk meminta AI melakukan tugas repetitif yang sama berulang kali, pengguna bisa meminta AI membuat satu alat, lalu menggunakan alat itu kapan pun dibutuhkan.
Namun, aplikasi hasil vibe-coding memiliki masalah portabilitas. Aplikasi itu sering hanya berupa beberapa file di satu sistem. Meski terasa mudah dipindahkan, dalam praktiknya belum tentu demikian.
Apakah aplikasi hasil vibe-coding bisa berjalan di sistem lain sering bergantung pada cara LLM membangunnya. Misalnya, model mungkin mendeteksi bahwa sistem pengguna sudah memiliki dependensi yang diperlukan, sehingga dependensi itu tidak ikut dibundel bersama file aplikasi. Akibatnya, ketika aplikasi disalin ke sistem lain, aplikasi tersebut bisa saja tidak berjalan.
Menurut penulis, cara terbaik untuk mengatasi masalah ini adalah dengan memasukkannya ke dalam container menggunakan Docker dan melakukan self-hosting. Dengan begitu, aplikasi tetap berjalan di sistem pengguna sekaligus langsung tersedia di perangkat lain. Aplikasi bahkan bisa dibagikan ke luar jaringan lokal memakai layanan VPN privat seperti Tailscale.
Namun, mengubah aplikasi hasil vibe-coding menjadi aplikasi Docker self-hosted bisa rumit. Berdasarkan pengalaman penulis, semakin banyak lapisan yang ditambahkan ke proyek vibe-coding, semakin besar pula kemungkinan terjadi masalah. Karena itu, penulis ingin melihat model mana yang saat ini paling baik dalam membuat aplikasi Docker dan membuat proses deployment sesederhana serta semudah mungkin.
Metode pengujian: aplikasi to-do dengan Docker
Pengujian ini terutama memakai dua LLM: Claude dan Gemini. Keduanya diminta membuat aplikasi to-do sederhana, tetapi fokusnya adalah menjadikannya self-hosted menggunakan Docker dan membuat proses self-hosting seplug-and-play mungkin.
Keduanya juga diminta memeriksa port yang tersedia dan membangun aplikasi dengan menargetkan port yang sudah dipakai. Selain itu, prompt yang diberikan sangat minimal. Tujuannya adalah melihat model mana yang lebih baik dalam menghasilkan solusi sekali jalan, atau one-shot.
Penulis menyebutkan bahwa prompt persisnya dibagikan di bagian bawah artikel asli.
Upaya Claude membangun aplikasi Docker
Hasil Claude nyaris sempurna, hanya tertahan oleh kesalahan yang dibuat penulis.
Claude membutuhkan sekitar 3–4 menit untuk membangun semuanya. Penulis menggunakan model Opus 5 dengan pengaturan thinking di level low, berjalan di dalam aplikasi desktop Claude dalam mode Cowork. Mode Cowork penting dalam pengujian ini karena memberi Claude akses langsung ke sistem file. Dengan begitu, Claude bisa membuat semua file yang diperlukan sendiri, tanpa pengguna harus menyalin-tempel kode dan menyimpan file secara manual.
Satu kendala dalam proses pembuatan adalah Claude tidak bisa memeriksa port mana yang sudah dipakai. Namun, Claude membuat tebakan yang cukup masuk akal, menetapkan aplikasi ke port 8420, dan beruntungnya port itu kosong. Penulis menduga karena Claude sudah mengetahui berbagai container Docker yang berjalan di sistemnya, Claude juga mengetahui port default yang digunakan container-container tersebut dan karena itu tidak memilih salah satunya.
Claude juga tidak bisa menjalankan perintah docker compose, sehingga penulis harus melakukannya secara manual. Meski begitu, Claude menghasilkan file README yang detail, mencakup semua hal yang perlu diketahui tentang aplikasi dan cara men-deploy-nya dalam bahasa Inggris yang mudah dipahami. Jadi, prosesnya tidak terlalu sulit, bahkan jika pengguna belum familier dengan cara kerja Docker.
Untuk aplikasinya sendiri, hasilnya minimal sesuai permintaan, tetapi memiliki beberapa sentuhan tambahan yang tidak diminta secara eksplisit. Selain menambahkan tugas, pengguna juga bisa memfilter antara tugas Active dan Done. Ada juga tema terang dan gelap. Tentu saja, daftar tugas tetap tersimpan antarsesi.
Pilihan tooling yang digunakan Claude juga masuk akal untuk proyek sebesar ini. Claude memakai modul HTTP bawaan Node untuk backend, file JSON biasa untuk penyimpanan data, dan mengekspos semuanya melalui REST API. REST API adalah cara aplikasi menyediakan titik akses agar bagian lain dapat mengirim dan mengambil data melalui permintaan web.
Pada tahap ini, Claude menunjukkan proses yang cukup mulus untuk membuat aplikasi Docker self-hosted, meski masih ada pekerjaan manual pada pemeriksaan port dan eksekusi docker compose.
Poin penting
- Claude vs Gemini
- Aplikasi Docker self-hosted
- To-do app sederhana
- Port 8420
- README deployment detail
- REST API dan JSON
Sumber: https://www.howtogeek.com/i-asked-claude-and-gemini-to-build-me-a-docker-app/