- Geliştirme ve test için veritabanı işletirken maliyet ve karmaşıklık sorunlarını çözmeye yönelik pratik bir yöntem
- VPS, bulut VM ve yönetilen hizmetler sürekli maliyet ve depolama ücreti doğurur
- Kurulum işi karmaşıktır ve kullanılmadığında bile kaynak maliyeti ödenir
- Alternatif: GitHub Actions ve S3 kullanarak veritabanı çalıştırmak
- Yalnızca gerektiğinde GitHub Actions ile geçici bir veritabanı çalıştırma
- Verileri kalıcı olarak saklamak için AWS S3 veya S3 uyumlu depolama kullanma
- İş akışı bittiğinde veriler korunur, çalışma ortamı kaldırılır ve böylece maliyet düşürülebilir
- Tünelleme üzerinden veritabanını internete geçici olarak açık erişime sunmak mümkün
- Kullanırken dikkat edilmesi gerekenler
- Bu yöntem yalnızca kısa süreli entegrasyon testleri, geçici demolar ve basit geliştirme işleri için uygundur
- GitHub Actions'ı uzun vadeli bir servis platformu olarak kötüye kullanmayın
- Sürekli ve uzun vadeli veritabanı barındırmaya ihtiyaç varsa, Self-Hosted Runner veya ayrı bir veritabanı hizmeti kurmak daha uygundur
- GitHub kullanım politikalarına uygun şekilde işletilmelidir
Temel fikir
- GitHub Actions'ın geçici işlem ortamını kullanma
- CI/CD veya test iş akışının bir parçası olarak yalnızca ihtiyaç duyulduğunda MySQL uyumlu bir veritabanı çalıştırma
- S3 uyumlu depolama ile verileri kalıcı tutma
- Verileri AWS S3 veya Cloudflare R2 gibi nesne depolama hizmetlerinde saklama
- Geçici ortam sona erse bile veriler nesne depolamada güvenle tutulur
- Açık erişim için tünelleme
- Test veya demo amacıyla veritabanını internete geçici olarak açma
- Kısa süreli kullanım için uygun
- Veritabanı yalnızca iş akışının çalışma süresi boyunca çalışır
- İş akışı sona erince geçici işlem kaynakları serbest bırakılır; bu kalıcı bir hosting çözümü değildir
- Tamamen ücretsiz kullanmak için
- Cloudflare R2 gibi ücretsiz katman sunan S3 uyumlu hizmetler değerlendirilebilir
Kullanım senaryoları
- CI/CD entegrasyon testleri: MySQL uyumlu ortamı gerçekten çalıştırıp test ettikten sonra kapatma
- Geçici demo: Hızla paylaşılabilen bir veritabanı örneğini kısa süreli oluşturma
- Kısa süreli geliştirme işleri: Sürekli bakım olmadan gerçek bir veritabanı ortamında test yapabilme
- Önerilmeyen kullanım senaryoları:
- Uzun vadeli veritabanı barındırma
- Her zaman aktif açık veritabanı endpoint'i bulundurma
- GitHub Actions kullanım politikalarını aşma
- Önemli: GitHub Actions sürekli çalışan bir servis platformu değil, CI/CD için tasarlanmıştır. Uzun vadeli veritabanı barındırmaya ihtiyaç varsa Self-Hosted Runner kurulumu düşünülmelidir
13 yorum
Bu bana amaçlanmamış bir kullanım gibi görünüyor. Teknik olarak mümkün olması, kasıtlı olarak önerilmeyen bir yöntemin kullanılmasını haklı çıkarmaz; bence bundan kaçınmak gerekir.
"Geliştirme ve test için veritabanı işletirken maliyet ve karmaşıklık sorunlarını çözmeye yönelik bir geçici çözüm" diye yazılmış, yani sağduyunuz varsa gereken değerlendirmeyi zaten yaparsınız.
Hyrum Yasası'nı (https://www.hyrumslaw.com/) düşününce,
bir gün birilerinin aklına gelebilecek bir yöntem olduğunu düşünüyorum.
Ama diğerlerinin de söylediği gibi, bu tür kötüye kullanımlar daha büyük rahatsızlıklara yol açıyor.
GitHub’ın ücretsiz katmanında GitHub Actions ortadan kaybolunca… ah… bunun iyi bir şey olduğunu şimdi anladım…
Bunun kötüye kullanım olduğunu düşünmüyorum.
Tek bir veritabanı ayağa kaldırmak sunucuya ne kadar yük bindirebilir ki.. Ayrıca yazıya göre sadece kısa süreliğine çalıştırılıyor.
CI sürecinde test DB’sini ayağa kaldırmak da değil, iş akışını kasıtlı olarak geciktirip bunu barındırılan bir DB’ye dönüştürmek sorunlu görünüyor. “Kısa süreliğine” ifadesinin tanımı da belirsiz.
"CI/CD veya test iş akışının bir parçası olarak yalnızca gerektiğinde" değil mi?
Ücretli kullanıcılar için sorun olmaz, değil mi? Nasıl olsa verilen kullanım kotası içinde kullanıyor olacaklar.
Bunun üzeri zaten ücretlendirilir.
https://docs.github.com/en/site-policy/…
Neye kadar uygun sayıldığını bilmiyorum ama belgede, ücretlendirme olup olmadığı açıkça belirtilmemişken bunun yalnızca program test etme amacıyla kullanılmasının tavsiye edildiği yazıyor. Hizmet kötüye kullanılırsa hesap kapatma gibi yetkiler de elbette GitHub'da.
Haha, eğlenceliymiş. Bunu yaparak ne kadar tasarruf edilebilir acaba..
Bu bir kötüye kullanımdır. Bu tür davranışlarla tüketilen kaynaklar, iyi niyetli bireyler ve açık kaynak için kullanılması gereken kaynakların sömürülmesi anlamına gelir; ayrıca GitHub'ın ücretsiz sunduğu hizmetleri işletme maliyetini artırır ve sonuçta bunun bedelinin herkese yansıtılacağını düşünüyorum.
Actions ile coin mining yapıldığı dönemde olduğu gibi, bu tür davranışlar artarsa politikalar giderek daha da sıkılaşacaktır.
Tünellemeyi engellemek için outbound trafiği kısıtlamak gerekeceğinden, sonuçta sıradan kullanıcılar giderek daha fazla rahatsız olacaktır.
Katılıyorum
Hacker News yorumlarına bakınca, bunun başlı başına bir istismar olduğu yönünde eleştiriler var.
https://news.ycombinator.com/item?id=42397167
Yazı zaten herkese açık; ben de sadece "demek ki böyle bir şey mümkünmüş?" düzeyinde bakılsın diye bir kez paylaşmak istedim.