10 poin oleh xguru 2024-12-18 | 13 komentar | Bagikan ke WhatsApp
  • Trik untuk mengatasi masalah biaya dan kompleksitas saat mengoperasikan database untuk pengembangan dan pengujian
  • VPS, VM cloud, layanan terkelola, dan sejenisnya menimbulkan biaya berkelanjutan serta biaya penyimpanan
    • Pekerjaan konfigurasi rumit, dan Anda tetap membayar biaya resource meskipun sedang tidak digunakan
  • Alternatif: mengoperasikan database dengan memanfaatkan GitHub Actions dan S3
    • Menjalankan database sementara dengan GitHub Actions hanya saat diperlukan
    • Menyimpan data secara permanen menggunakan AWS S3 atau storage yang kompatibel dengan S3
    • Saat workflow berakhir, data tetap dipertahankan dan lingkungan eksekusi dihapus sehingga biaya dapat ditekan
    • Melalui tunneling, database dapat dibuka untuk akses publik sementara dari internet
  • Hal-hal yang perlu diperhatikan saat penggunaan
    • Pendekatan ini hanya cocok untuk integration test jangka pendek, demo sementara, dan pekerjaan pengembangan sederhana
    • Jangan menyalahgunakan GitHub Actions sebagai platform layanan jangka panjang
    • Jika Anda memerlukan hosting database yang berkelanjutan dan jangka panjang, lebih tepat menyiapkan Self-Hosted Runner atau layanan database terpisah
    • Operasional harus mematuhi kebijakan penggunaan GitHub

Ide inti

  • Memanfaatkan lingkungan komputasi sementara GitHub Actions
    • Menjalankan database yang kompatibel dengan MySQL hanya saat dibutuhkan sebagai bagian dari workflow CI/CD atau pengujian
  • Penyimpanan data permanen melalui storage yang kompatibel dengan S3
    • Menyimpan data di object storage seperti AWS S3 atau Cloudflare R2
    • Meski lingkungan sementara berakhir, data tetap aman tersimpan di object storage
  • Tunneling untuk akses publik
    • Mengekspos database ke internet secara sementara untuk pengujian atau demo
  • Cocok untuk penggunaan jangka pendek
    • Database hanya berjalan selama waktu eksekusi workflow
    • Setelah workflow selesai, resource komputasi sementara dilepas, dan ini bukan solusi hosting permanen
  • Jika ingin menggunakannya sepenuhnya gratis
    • Pertimbangkan layanan kompatibel S3 yang menyediakan free tier seperti Cloudflare R2

Kasus penggunaan

  • Integration test CI/CD: benar-benar menjalankan lingkungan yang kompatibel dengan MySQL, lalu mematikannya setelah pengujian selesai
  • Demo sementara: membuat instance database jangka pendek yang bisa dibagikan dengan cepat
  • Pekerjaan pengembangan jangka pendek: dapat menguji pada lingkungan database nyata tanpa pemeliharaan berkelanjutan
  • Kasus penggunaan yang tidak direkomendasikan:
    • Hosting database jangka panjang
    • Mempertahankan endpoint database publik yang selalu aktif
    • Mengakali kebijakan penggunaan GitHub Actions
  • Penting: GitHub Actions bukan platform layanan berkelanjutan, melainkan dirancang untuk CI/CD. Jika Anda memerlukan hosting database jangka panjang, pertimbangkan menyiapkan Self-Hosted Runner

13 komentar

 
nodelay 2024-12-20

Sepertinya ini adalah penggunaan yang tidak dimaksudkan. Menurut saya, hanya karena sesuatu memungkinkan secara teknis, bukan berarti kita perlu sengaja memakai cara yang tidak direkomendasikan seperti ini.
Karena tertulis "trik untuk mengatasi masalah biaya dan kompleksitas saat mengoperasikan database untuk pengembangan dan pengujian", kalau punya akal sehat tentu masing-masing bisa menilainya dengan baik.

 
eajrezz 2024-12-19

Jika memikirkan Hukum Hyrum (https://www.hyrumslaw.com/),
menurut saya ini adalah cara yang suatu hari bisa terpikirkan oleh seseorang.

Namun, seperti yang disampaikan kalian yang lain, penyalahgunaan seperti ini justru membawa ketidaknyamanan yang lebih besar.

 
iolothebard 2024-12-18

Di paket gratis GitHub, kalau GitHub Actions sampai hilang... ah... ternyata ini hal yang bagus ya...

 
freedomzero 2024-12-18

Menurut saya ini bukan penyalahgunaan.
Menjalankan satu DB itu memangnya seberapa membebani server.. Dan menurut artikelnya, ini juga hanya dijalankan sebentar.

 
passerby 2024-12-19

Tampaknya ada masalah karena ini bukan sekadar menyalakan DB uji selama proses CI, melainkan sengaja menunda workflow untuk menjadikannya DB yang di-host. Definisi 'sebentar' juga ambigu.

 
freedomzero 2024-12-19

"Tetapi hanya saat diperlukan sebagai bagian dari alur kerja CI/CD atau pengujian", ya?

 
eclipsense 2024-12-18

Kalau pengguna berbayar, bukankah seharusnya tidak masalah? Bagaimanapun, mereka akan memakainya dalam batas penggunaan yang diberikan.
Di atas itu, tentu akan dikenai biaya.

 
savvykang 2024-12-18

https://docs.github.com/en/site-policy/…

Saya tidak tahu batasan pasti dari apa yang dianggap masih oke, tetapi dokumen tersebut menyatakan bahwa penggunaannya disarankan hanya untuk tujuan pengujian program dalam kondisi status penagihan belum dijelaskan dengan jelas. Tentu saja GitHub juga memiliki wewenang seperti menangguhkan akun jika layanan disalahgunakan.

 
kandk 2024-12-18

Wkwkwk, menarik juga. Kira-kira kalau pakai ini bisa hemat berapa ya..

 
bitofsky 2024-12-18

Ini adalah penyalahgunaan. Tindakan seperti ini menyalahgunakan sumber daya yang seharusnya digunakan untuk individu yang beritikad baik dan open source sebesar sumber daya yang dikonsumsi, serta meningkatkan biaya operasional layanan gratis yang disediakan GitHub, yang pada akhirnya menurut saya akan dibebankan kepada semua orang.

 
bitofsky 2024-12-18

Sama seperti saat orang menambang kripto dengan Actions, kalau tindakan seperti ini makin meningkat, kebijakannya pasti akan makin diperketat.
Untuk memblokir tunneling, pembatasan outbound kemungkinan harus diterapkan, jadi pada akhirnya justru pengguna biasa yang akan makin tidak nyaman.

 
zuppiy 2024-12-18

Saya setuju

 
xguru 2024-12-18

Melihat komentar di Hacker News, ada kritik bahwa ini sendiri termasuk bentuk penyalahgunaan.
https://news.ycombinator.com/item?id=42397167
Ini sudah tulisan yang dipublikasikan, dan saya mengunggahnya sekali karena sekadar menunjukkan bahwa hal seperti ini ternyata bisa dilakukan.