Beberapa tahun lalu, saya mulai ngeblog menggunakan Wordpress. Awalnya terasa menyenangkan karena ketika butuh sesuatu tinggal install plugin saja dan tingkat kompabilitasnya sangat tinggi. Tapi lama-kelamaan saya mulai sadar ada sesuatu yang mengganjal.
Setiap tahun ada tagihan hosting yang harus dibayar. Belum lagi notifikasi pembaharuan plugin yang tidak ada habisnya karena saya banyak memasang plugin. Selain itu isu keamanan juga membuat otak harus berfikir lebih keras karena serangan sering sekali terdeteksi. Sejalan dengan hal tersebut, performa blog saya terasa berat padahal isinya cuma teks dan gambar standar. Saya merasa terlalu banyak urusan teknis harian yang harus difikirkan, padahal tujuan awal saya cuman satu yaitu menulis.
Sampai akhirnya saya mulai bertanya pada diri sendiri:
“Bisa tidak yaa punya blog yang proper, cepat, dan aman - tetapi tidak keluar biaya sama sekali?”
Setelah diskusi dengan beberapa teman Web Developer akhirnya terpecahkan dan artikel ini adalah cerita bagaimana saya membuatnya.
Selama menggunakan Wordpress, ada beberapa hal yang lama-lama mulai terasa menjadi beban.
Hosting Wordpress tiu tidak pernah benar-benar “sekali bayar”. Setiap tahun ada renewal hosting yang biayanya cukup mahal dan juga semakin ke sini hosting hosting itu terasa semangat berat untuk menjalankan Wordpress. Untuk blog pribadi yang “tidak menghasilkan uang”, hal ini terasa kurang masuk akal.
Wordpress itu powerful, tapi kekuatannya datang dengan harga yang mahal yaitu kompleksitas. Hampir setiap minggu ada notifikasi pembaharuan, entah itu dari core Wordpress, plugin, atau teman. Kalau diabaikan risiko keamanan pasti mengintai. Selain itu terkadang jika plugin kita perbaharui secara sembarangan sering membuat tampilan blog bisa rusak atau tidak muncul apa-apa karena kompleksitas yang saling berhubungan. Saya merasa seperti sedang merawat infrastruktur di kantor, bukan sedang ngeblog.
Di sisi lain sebagai seorang Infrastructure Engineer yang paham bagaimana server bekerja saya juga harus memantau service seperti database server MySQL, web server Nginx, dan
Blog saya isinya sederhana yaitu teks, gambar, dan sedikit kode. Namun ketika loading kadang terasa lebih lambat dari yang seharusnya. Sebenarnya ini wajar karena setiap halaman Wordpress di-render secara dinamis dari database, bahkan untuk konten yang tidak pernah berubah sekalipun.
Worpdress adalah alat yang luar biasa untuk website yang memang butuh fitur dinamis, multi-user, bahkan sampai bisa bikin toko daring. Tapi untuk blog pribadi seperti milik saya? Rasanya seperti memakai palu Thor untuk memaku foto ke dinding. Saya butuh sesuatu yang lebih ringan, lebih murah dan lebih sedikit urusannya.
Setelah lelah dengan segala kerumitan Worpdress, saya mulai mencari pendekatan yang berbeda yang sebenarnya selama ini sudah saya ingin lakukan tetapi karena keterbatasan baru bisa diterapkan sekarang. Jawabannya ada pada konsep yang cukup sederhana yaitu JAMstack.
JAMstack adalah singkata dari JavaScript, API, dan Markup. Ide utamanya sederhana, alih-alih me-render halaman secara dinamis dari server setiap kali ada pengunjung seperti yang dilakukan Wordpress, semua halaman sudah di-generate terlebih dahulu menjadi berkas HTML, CSS, dan JavaScript murni. Berkas inilah yang langsung dikirimkan ke pengunjung tanpa database, tanpa server-side rendering, dan tanpa kompleksitas yang tidak perlu. Untuk blog pribadi seperti miliki saya, ini sudah lebih dari cukup.
Ada banyak pilihan framework JAMstack seperti Hugo, Astro, Jekyll, Next.js, dan lain-lain. Di antara itu semua Saya memilih Gatsby karena berbasis React yang ekosistemnya bisa dibilang matang dan pilihan tema banyak.
Beberapa dari teman pembaca pasti bertanya hal seperti ini, dan jujur saya juga sempat mempertimbangkannya. Vercel dan Netlify memang jauh lebih simpel untuk deploy Gatsby. Hubungkan repositori Github, klik deploy, selesai. Tidak ada konfigurasi pipeline yang ribet dan tidak perlu setup storage.
Tapi ada beberapa alasan yang membuat saya memilih jalan yang sedikit lebih panjang ini.
Pertama adalah data center lokal. Alibaba Cloud punya data center di Indonesia, berarti latensi yang lebih rendah untuk pengunjung lokal dibanding server Vercel dan Netlify yang mayoritas ada di Amerika atau Eropa.
Kedua adalah ekosistem, dengan Alibaba Cloud Devops dari source control hingga storage untuk hosting berada di satu tempat. Jadi lebih mudah untuk melakukan kontrol dan lainnya. Selain itu versi gratis dari Alibaba Cloud DevOps dan Alibaba Cloud OSS lebih menggiurkan daripada yang ditawarkan Vercel dan Netlify.
Ketiga, kontrol yang lebih besar. Memang setup ini terkesan over engineering untuk sekedar blog pribadi, tetapi saya melihatnya sebagai investasi. Kalau suatu hari nanti ada pengembangan lebih lanjut misal membangun LMS sendiri (Amminn), saya sudah punya fondasi infrastruktur yang sudah proper dan fleksibel. CI/CD di Vercel atau Netlify memang mudah namun terbatas, sedangkan di Alibaba Cloud saya yang pegang kendali penuh.
Setelah memutuskan pakai JAMstack dengan Gatsby, pertanyaan berikutnya adalah “dimana akan di-host dan bagaimana cara deploy agar otomatis?”. Di sinilah saya menemukan kombinasi solusi yang mayoritas dipegang langsung oleh Alibaba Cloud Devops.
Di sini saya beli tema dari themeforest lalu mulai sesuaikan untuk kebutuhan saya. Untungnya Gatsby berbasis React yang cukup mudah untuk di-setup lokal. Saya juga memigrasikan tulisan saya ke bentuk markdown biar lebih simpel. Setelah proyek selesai langkah berikutnya adalah menyimpan kode ini di suatu tempat, dan di sinilah Alibaba Cloud Devops mulai masuk.
Code Up adalah layanan source control yang masuk dalam ekosistem Alibaba Cloud Devops, fungsinya sama seperti Github atau Gitlab. Saya membuat repositori baru dan push seluruh kode Gatsby ke dalamnya. Prosesnya tidak jauh berbeda dari biasanya, jadi tidak ada kurva belajar yang berarti di tahap ini.
Ini adalah bagian yang paling saya nikmati, Flow adalah layanan CI/CD dari Alibaba Cloud yang memungkinkan saya mendefinisikan pipeline. Mulai dari build Gatsby menjadi berkas JAM dan unggah hasilnya ke Alibaba Cloud OSS, semuanya otomatis setiap kali ada perubahan kode maka tinggal menunggu pipeline selesai maka blog saya sudah terbaharui.
Awalnya saya fikir konfigurasinya akan rumit, tapi ternyata Flow cukup intuitif.
Hasil build Gatsby yang berupa berkas statis semuanya diunggah ke Alibaba Cloud OSS. OSS ini pada dasarnya adalah object storage sehingga fitur seperti web server sudah ada di dalamnya.
Langkah terakhir adalah mengarahkan domain www.ariyolo.id ke OSS melalui Cloudflare dengan menambahkan CNAME record dari endpoint OSS. Jangan lupa juga mengaktifkan proxy Cloudflare agar trafik tidak dihitung karena Alibaba Cloud dan Cloudflare telan kerjasama dalam hal ini, jadi tidak boncos kena biaya bandwidth.
Setelah semua setup selesai, ada beberapa hal yang langsung saya rasakan perbedaannya dibanding saat masih pakai Wordpress.
Dulu dengan Wordpress, proses menulis artikel harus dalama kondisi daring sehingga menyusahkan ketika saya lagi luring. Belum lagi terkadang ketika lagi menyunting artikel koneksi tiba-tiba putus dan tulisan tidak tersimpan, agak nyesek.
Sekarang alur kerja saya lebih simpel, saya menulis menggunakan format Markdown yang bisa membuat saya fokus kepada tulisan dibanding UI yang cukup membingungkan. Kalau ada data terhapus tidak perlu masalah, selama di-commit ke Code Up kita bisa membukanya lagi untuk mengetahui perubahan.
Salah satu hal yang paling saya syukuri adalah tidak ada lagi notifikasi pembaharuan plugin yang mengganggu. Tidak ada lagi kekhawatiran soal keamanan Wordpress yang perlu di-patch. Blog saya sekarang hanyalah kumpulan berkas statis, tidak ada permukaan yang bisa diserang, tidak ada yang perlu di-maintain secara aktif.
Ini yang paling menyenangkan, sejak migrasi saya tidak mengeluarkan sepeser pun untuk infrastruktur blog. Alibaba Cloud Devops, OSS, dan Cloudflare semuanya masuk dalam tier gratis untuk skala blog pribadi. Satu-satunya biaya yang masih saya keluarkan adalah domain.
Saya tidak mau artikel ini terkesan seperti promosi tanpa cela. Setiap stack punya trade-off, dan ini adalah hal-hal yang perlu kamu pertimbangkan jika ingin mengikut setup yang sama dengan saya.
Ini adalah tantangan terbesar yang saya hadapi. Hampir tidak ditemukan best practices atau panduan terarah dari Alibaba Cloud Devops terutama Flow karena tidak sepopuler Github Actions, Jenkins, atau Microsoft Azure Pipeline. Satu-satunya artikel yang membantu saya adalah dokumentasi resmi, itu pun tidak lengkap dan terkadang muncul bahasa China.
JAMstack pada dasarnya adalah pendekatan yang statis. Kalau suatu hari blog kamu butuh fitur seperti komentar real-time, autentikasi pengguna, atau konten yang berubah-ubah secara dinamis - maka stack ini tidak cocok.
Seperti yang sudah saya singgung di atas, setup awal membutuhkan waktu dan kesabaran. Kamu perlu memahami cara kerja OSS, cara konfigurasi pipeline di Flow, dan bagaimana semua komponen ini saling terhubung. Bagi developer yang sudah familiar dengan konsep cloud dan CI/CD, ini tidak akan terasa berat, tetapi bagi yang baru pertama kali kalian harus bersiap untuk beberapa jam eksplorasi.
Migrasi dari Wordpress ke JAMstack adalah salah satu keputusan teknikal yang paling saya syukuri. Bukan prosesnya mudah, melain karena hasilnya benar-benar sesuai dengan apa yang saya cari sejak awal. Sekarang blog saya jadi proper, cepat, aman, dan tidak menguras kantong.
Kalau kamu seorang developer yang sedang bosan dengan kerumitan Wordpress atau sedang mencari alternatif selain Vercel dan Netlify yang lebih memberikan kontrol penuh, stack ini layak dicoba. memang butuh waktu lebih di awal, tapi begitu semuanya jalan, kamu bisa fokus ke hal yang paling yaitu menulis.
Alibaba Cloud Devops mungkin bukan nama yang pertama muncul di kepala ketika kamu memikirkan CI/CD pipeline. Tapi justru di situlah menariknya, kadang solusi terbaik untuk kebutuhan kita ada di tempat yang tidak terduga.
Apakah ini setup sempurna? Tidak. Apakah ini setup yang cukup untuk blog pribadi yang proper tanpa biaya? Tentunya.
Quick Links
Legal Stuff
