Cloud Run, Google Cloud’un altyapı yönetimiyle uğraşmadan uygulama dağıtmanıza olanak tanıyan, tamamen yönetilen sunucusuz platformudur. Son derece esnektir ve hobi projelerinden kurumsal seviyeye kadar pek çok proje için harika bir tercihtir.
Bu yazıda Cloud Run’ın ne olduğunu, nasıl çalıştığını, hangi kullanım senaryolarını çözdüğünü ve diğer sunucusuz çözümlerle nasıl karşılaştırıldığını anlatacağım. Ayrıca ilk Cloud Run uygulamanızı adım adım nasıl dağıtacağınızı da göstereceğim!
Ve başlamadan önce: Bulut bilişime tamamen yeniyseniz, Introduction to Cloud Computing kursumuzu öneririm. Bu kurs, bulutun temel kavramlarını açıklar; ölçeklenebilirlik ve gecikme gibi kilit terimleri tanımlar ve GCP gibi sağlayıcıların sunduğu bulut araçlarının avantajlarını kapsar.
Cloud Run nedir?
Cloud Run, altyapı yönetimini dert etmeden uygulamaları dağıtmanıza olanak tanıyan sunucusuz bir konteyner yürütme platformudur.
Geleneksel sunucu tabanlı dağıtımlarda genellikle sanal makineleri sağlamak ve sürdürmek gerekir. Cloud Run biraz farklı çalışır; tüm bunları soyutlayarak tamamen yönetilen bir ortam sunar.
Knative üzerine (sunucusuz iş yüklerini etkinleştiren Kubernetes tabanlı bir açık kaynak platform) inşa edilmiştir; bu da uygulamanızın talebe göre otomatik ölçekleneceği anlamına gelir. Trafik arttığında Cloud Run bunu karşılamak için daha fazla instance başlatır. Trafik azaldığında da ölçeği küçültür. Hatta sıfıra kadar inebilir; böylece uygulamanız aktif olarak çalışmıyorken ücret ödemezsiniz.
Cloud Run maliyet etkin olmasının yanı sıra çok da esnektir. Konteyner içinde çalıştığı sürece herhangi bir dilde yazılmış ve herhangi bir çatı ya da ikili dosya kullanan uygulamaları dağıtabilirsiniz. Node.js, Python, Go, Java gibi yaygın teknolojilerin yanı sıra daha niş olanlarla da çalışabilirsiniz. Pratikte bu, Cloud Run’ın arka uç servisleri, API’ler, yapay zeka iş yükleri, web uygulamaları ve hatta zamanlanmış toplu işler için güç sağlayabileceği anlamına gelir.
Bu küçük bir ön bakıştı. Şimdi Cloud Run’ın temel özelliklerine biraz daha yakından bakalım.
Cloud Run’ın Temel Özellikleri
Birkaçından bahsettik; işte Cloud Run’ın başlıca özelliklerinin tam bir özeti.
Dilden ve çatıdan bağımsız
Cloud Run’ın en büyük avantajlarından biri, sizi belirli bir dil ya da çatıya kilitlememesidir. Uygulamanız bir konteyner içinde çalıştığı sürece onu dağıtabilirsiniz. Çeşitli bir teknoloji yığınıyla çalışan bir ekip olarak tüm servislerinizde Cloud Run’ı kullanabilirsiniz. Hepsini yöneten tek bir araç!
Otomatik ölçekleme
Cloud Run, trafiğe bağlı olarak yatay ve dinamik şekilde ölçeklenir. Uygulamanız daha fazla istek alırsa Cloud Run otomatik olarak daha fazla instance başlatır. Talep azaldığında ise ölçeği küçültür; gerekirse sıfıra kadar iner.
Yerleşik güvenlik ve uyumluluk
Cloud Run, dağıtılan tüm servisler için otomatik HTTPS, güvenli kimlik doğrulama için Google tarafından yönetilen servis kimliği, özel ağ için VPC bağlantısı ve SOC 2, ISO 27001, HIPAA (sağlık uygulamaları için) gibi yerleşik uyumluluk sertifikalarıyla birlikte gelir. Kısacası, güvendesiniz.
Google Cloud servisleriyle entegrasyon
Cloud Run, Google Cloud ekosisteminin bir parçası olduğundan diğer GCP servisleriyle uyumlu çalışır. Veritabanları için Cloud SQL’e kolayca bağlanabilir, Pub/Sub ile veri akışı yapabilir, dosyaları Cloud Storage’da depolayabilir ya da BigQuery, Firebase ve AI/ML servisleriyle birlikte kullanabilirsiniz.
İhtiyaca göre GPU desteği
Yapay zeka iş yükleri için Cloud Run artık isteğe bağlı GPU desteği sunuyor. Bu, makine öğrenimi çıkarımı, video işleme ve bilimsel hesaplama için büyük bir gelişme; çünkü donanımı yönetmeden GPU hızlandırmalı herhangi bir iş yükünü çalıştırmanıza olanak tanır.
Cloud Run Functions: Hizmet Olarak Fonksiyon (FaaS) modeli
Tam konteynerleri yönetmek istemiyorsanız, Cloud Run Functions küçük ve tek amaçlı fonksiyonları çalıştırmak için basitleştirilmiş, olay odaklı bir yol sağlar. AWS Lambda veya Google Cloud Functions’a benzer, ancak Cloud Run’ın altyapısı üzerinde çalışır.
Cloud Run Nasıl Çalışır: Adım Adım
Bu bölümde, basit bir uygulamayı Cloud Run’a nasıl dağıtacağınızı anlatacağım. Uygulamanızı konteynerleştirme, Cloud Run’a dağıtma ve talebe göre otomatik ölçeklendirme süreçlerinde size rehberlik edeceğim.
Uygulamamızı konteynerleştirmek için Docker kullanacağız, ancak bunu yapmak zorunda değilsiniz. Bununla ilgili daha fazlası sonda.
Adım 1: Ortamınızı hazırlayın
Herhangi bir dağıtım yapmadan önce aşağıdaki araçların kurulu olması gerekir:
Google Cloud SDK: Bu, Cloud Run dahil Google Cloud servisleriyle etkileşim kurmanızı sağlayan komut satırı arayüzüdür (CLI). buradan kurabilirsiniz.
Docker: Uygulamanız zaten konteynerleştirilmemişse, uygulamanızı paketlemek için Docker’a ihtiyacınız olacak. Docker’ı buradan kurun.
Google Cloud Projesi: Bir Google Cloud projesi kurduğunuzdan emin olun. Google Cloud Console üzerinden oluşturabilirsiniz.
Adım 2: Uygulama kodunuzu yazın
Şimdi basit bir “Hello World” Node.js uygulaması yazalım.
Uygulama hazır olduğuna göre, şimdi konteynerleştirmeye geçeceğiz.
Adım 3: Uygulamayı konteynerleştirin
Container imajını tanımlamak için bir Dockerfile oluşturun
Proje dizininizde “Dockerfile” adlı bir dosya oluşturun ve aşağıdaki içeriği ekleyin:
# Use the official Node.js image as a base
FROM node:16-alpine
# Set the working directory inside the container
WORKDIR /usr/src/app
# Copy package.json and install dependencies (if any)
COPY package*.json ./
# Copy the rest of the application code
COPY . .
# Expose port 8080 for Cloud Run
EXPOSE 8080
# Start the app
CMD ["node", "index.js"]Altyapı:
Docker imajını oluşturun
Docker imajınızı oluşturmak için şu komutu çalıştırın:
Uygulamanızı her zaman elle konteynerleştirmenizin gerekmediğini söylediğimi hatırlıyor musunuz?
Cloud Run artık kaynak koddan dağıtımları destekliyor; bu da Cloud Build kullanarak kaynak kodunuzdan konteyneri sizin için oluşturabileceği anlamına gelir.
Cloud Build uygulamanızın dilini (Node.js, Python, Go, Java, vb.) otomatik olarak algılar, sizin için bir konteyner imajı oluşturur ve onu Artifact Registry’ye kaydeder. Cloud Run daha sonra, sanki konteyneri elle oluşturmuşsunuz gibi, oluşturulan imajı dağıtır. Bunu desteklenen dillerle (Node.js, Python, Go, Java, vb.) yazılmış basit uygulamalar için kesinlikle öneririm; ancak konteyner üzerinde tam denetime ihtiyacınız varsa (örn. özel bağımlılıklar, OS seviyesinde ince ayarlar, çok adımlı derlemeler) önerilmez.
Cloud Run’ı verimli kullanmak için ipuçları
Bir uygulamayı Cloud Run’a dağıtmak oldukça kolay; ancak verimli çalışmasını sağlamak için biraz ince ayar gerekir. İlk kullandığımda deneme-yanılma sürecinden geçtim ve öğrendiklerim şunlar:
1. Soğuk başlatmalar gerçektir
Özellikle büyük bir konteyner imajıyla çalışıyorsanız. İmajınız ne kadar küçükse, servisiniz o kadar hızlı ayağa kalkar. distroless gibi minimal bir temel imaj kullanmak büyük fark yaratabilir. Python uygulamaları derliyorsanız resmi imajların slim sürümlerini deneyin. Ya da maliyetleri çok dert etmiyorsanız minimum instance sayısını 1 olarak ayarlayın.
2. Oynayabileceğiniz en iyi değişken istek eşzamanlılığı miktarıdır
Cloud Run her bir instance’ın aynı anda birden fazla isteği işlemesine izin verir; ancak varsayılan değer (konteyner başına 80 istek) çoğu zaman en uygun değer değildir. CPU yoğun görevlerde eşzamanlılığı 1 veya 2’ye düşürmek işleri çok daha akıcı hale getiriyor. Öte yandan, API’ler genellikle daha yüksek sayıları kaldırabilir. Sayı yükseldikçe ihtiyaç duyduğunuz instance sayısını azaltabilir, dolayısıyla ödediğiniz tutarı düşürebilirsiniz; bu yüzden uygulamanız için en uygun noktayı bulmak adına farklı değerlerle denemeler yapmak kesinlikle değerli.
3. Instance limitlerinizi ayarlayın!
Birisi (ben) yük testi yapmaya karar verip aşırı sayıda istek başlattığında çok işe yarar. Bu dersi ben aldım, sizin almanıza gerek yok. Lütfen maksimum instance sayınızı ayarlayın.
4. Doğru kişilerin instancınıza eriştiğinden emin olun
Varsayılan olarak Cloud Run servislerine URL’yi bilen herkes erişebilir; bu hızlı demolar için harika ama üretim için pek iyi değil. Uygulamanız herkese açık olmamalıysa IAM izinleriyle erişimi kısıtlayın.
5. Cloud Logging ve Cloud Trace en iyi dostlarınız olacak
Eğer benim gibi sorun giderirken sanal makinelere SSH ile bağlanmaya alışkınsanız, hayal kırıklığına uğrayabilirsiniz. Cloud Run günlükleri doğrudan Google Cloud panosuna aktarılır; her şeyi orada görebilirsiniz. Uygulamanıza yapılandırılmış loglama eklediğinizden emin olun; sorun gidermeyi çok daha kolaylaştırır.
Cloud Run Kullanım Senaryoları
Web uygulamaları, API’ler veya cron işler gibi bazı kullanım senaryolarından bahsettik; ancak elbette çok daha fazlası var.
Video ve görsel analizi
Bir sosyal medya platformu için yüklenen görselleri gerçek zamanlı işlemek üzere bir görüntü tanıma modelini dağıtabilir veya bir video yüklendiğinde video dönüştürme görevleri çalıştırabilirsiniz. Cloud Run, otomatik ölçeklemesiyle (viral içerik gibi) talep artışlarını karşılayabilir ve talep düşükken maliyet etkinliğini korur.
Bir çevrimiçi pazaryerinde kullanıcı davranışını izleyen bir sistem kurduğunuzu hayal edin. Pub/Sub veya BigQuery’den olay akışlarını işleyerek kullanıcı etkinliğine göre anında eylemler tetikleyebilir, örneğin anlık bildirimler gönderebilir veya trendleri gerçek zamanlı analiz edebilirsiniz. Cloud Run, yoğun dönemlerde gelen olayları karşılamak için otomatik olarak ölçeklenir ve akış hacmi azaldığında ölçeği küçültür.
Bir kullanım senaryosu, büyük bir kurumsal yapı için gerçek zamanlı günlük dosyası analizi olabilir. Cloud Storage’a bir günlük dosyası yüklendiğinde, Cloud Run dosyayı ayrıştıracak, analizi çalıştıracak ve sonuçları depolayacak bir konteyneri tetikleyebilir; tüm bunları dosya boyutu ve işleme görevinin karmaşıklığına göre dinamik olarak ölçeklendirerek yapar.
Cloud Run, IoT uygulamalarının arka uç servislerini yönetmek için idealdir. Örneğin, binlerce sensörden çevresel verileri izleyen bir IoT çözümünde Cloud Run, her cihazdan gelen verileri gerçek zamanlı işleyebilir.
Cloud Run, kullandıkça öde modelini izler; yani uygulamanız aktif olarak çalışırken kullanılan bilgi işlem kaynakları için ödeme yaparsınız. Uygulamanız istek almıyorsa sıfıra kadar ölçeklenebilir; bu da gereksiz maliyet ödemeyeceğiniz anlamına gelir.
Fiyatlandırmanın Ayrıntıları
Mart 2025 itibarıyla Cloud Run iki ana faktöre göre ücretlendirir:
Kaynak
Maliyet
Ücretsiz Katman
CPU
vCPU-saniye başına $0.000018
Aylık 240.000 vCPU-saniye
Bellek
GiB-saniye başına $0.000002
Aylık 450.000 GiB-saniye
Bu fiyatlandırma instance tabanlı faturalama içindir; istek tabanlı faturalamada farklı çalışır. Yukarıdaki fiyat ve ücretsiz katman ayrıca bulunduğunuz bölgeye göre biraz değişir; bu yüzden kesin rakamlar için resmi Google Cloud sayfasını kontrol edin. Maliyetleri hesaplamanıza yardımcı olacak bir fiyat hesaplayıcıları var ve taahhütlü kullanım için indirimler de sunuyorlar.
Küçük bir ipucu: Aynı bölgedeki diğer Google Cloud servisleriyle trafik ücretsizdir; bu yüzden veri alışverişi için harici servisler yerine Cloud Storage, Cloud SQL veya Pub/Sub kullanmayı deneyin.
Cloud Run ve Cloud Run Functions
Google iki sunucusuz bilgi işlem seçeneği sunar: Cloud Run ve Cloud Run Functions (önceden Cloud Functions). Her ikisi de altyapıyı yönetmeden kod çalıştırmanıza izin verir; ancak aralarında bazı farklılıklar vardır.
Özellik
Cloud Run
Cloud Functions
Yürütme Modeli
Tam konteynerleştirilmiş uygulamaları çalıştırır
Bireysel fonksiyonları çalıştırır (FaaS modeli)
Çalışma Zamanı Kontrolü
Herhangi bir dil, herhangi bir çatı, özel ikililer
Önceden tanımlı çalışma zamanları (Node.js, Python, Go, vb.)
Durum
Durumsuzdur, ancak bir istek süresince bağlantıları sürdürebilir
Durumsuzdur, olay odaklı iş yükleri için tasarlanmıştır
Ölçekleme
Konteyner instance’ı başına ölçeklenir
Fonksiyon çağrısı başına ölçeklenir
Tetikleme
HTTP istekleri, Pub/Sub, olay odaklı
Olay odaklı (Pub/Sub, Cloud Storage, HTTP, vb.)
Soğuk Başlatmalar
Önceden ısıtılmış instance’larla asgari düzeyde
Ölçeklenmede fark edilir gecikmeler olabilir
En Uygun Olduğu Alanlar
API’ler, mikro servisler, arka uç servisleri, AI iş yükleri
Hafif, olay odaklı fonksiyonlar, otomasyon
Cloud Run’ı Ne Zaman Kullanmali?
✅ Çalışma zamanı ve bağımlılıklar üzerinde tam kontrole ihtiyacınız varsa.
✅ Kalıcı istekleri işleyen bir web servisi, API veya mikro servis çalıştırıyorsanız.
✅ Mevcut bir konteynerleştirilmiş uygulamayı minimum değişiklikle dağıtmak istiyorsanız.
✅ Arka plan işlemleri veya uzun süreli görevler (ör. AI çıkarımı, toplu işler) gerekiyorsa.
Cloud Run Functions’ı Ne Zaman Kullanmalı
✅ Pub/Sub mesajları veya Cloud Storage yüklemeleri gibi olaylarda tetiklenen, basit ve olay odaklı fonksiyonlar istiyorsanız.
✅ Bildirim göndermek, küçük işleri işlemek veya veriyi dönüştürmek gibi kısa süreli işlemler yapıyorsanız.
✅ Konteyner yönetmek istemiyor ve JavaScript, Python, Go vb. için hazır çalışma zamanlarını tercih ediyorsanız.
Yine de illa birini seçmek zorunda değilsiniz; ikisini birlikte kullanabilirsiniz! Örneğin, Cloud Run arka ucunuz, e-posta gönderme veya görselleri eşzamansız işleme gibi belirli görevler için Cloud Run Functions’ı tetikleyebilir.
Diğer Google Cloud Servisleriyle Karşılaştırmalar
Cloud Run ve Cloud Run Functions’ı oldukça kapsamlı şekilde karşılaştırdık; ancak burada bahsetmeye değer birkaç Google Cloud servisi daha olabilir: GKE ve App Engine.
Özellik
Cloud Run
Google Kubernetes Engine (GKE)
App Engine
Yönetim Türü
Tamamen yönetilen sunucusuz
Kendi kendini yöneten Kubernetes kümeleri
Tamamen yönetilen platform olarak servis
Ölçekleme
Otomatik ölçekleme, sıfıra kadar
Elle ölçekleme veya Kubernetes ile otomatik ölçekleme
Otomatik ölçekleme (ancak sıfıra kadar değil)
Dağıtım
Konteyner dağıtımı (herhangi bir dil)
Kubernetes üzerinden konteyner dağıtımı
Kod dağıtımı (belirli çalışma zamanları desteklenir)
Kullanım Alanları
API’ler, mikro servisler, web uygulamaları, toplu işler, AI
Karmaşık uygulamalar, geniş ölçekli mikro servisler, ML iş yükleri
Web uygulamaları, mobil arka uçlar, API’ler
Desteklenen Diller
Herhangi biri (konteyner tabanlı)
Herhangi biri (konteyner tabanlı)
Belirli çalışma zamanları desteklenir
Elbette burada daha fazla nüans var; ancak kısaca: Otomatik ölçekleme ve esneklikle birlikte tamamen yönetilen, konteyner tabanlı bir çözüme ihtiyacınız varsa Cloud Run’ı seçin. Minimum yapılandırmayla bir web uygulaması inşa ediyorsanız App Engine’i tercih edin. Büyük ölçekli, karmaşık uygulamalar için Kubernetes kümeleri üzerinde tam denetim istiyorsanız GKE’yi seçin.
Sonuç
Artık Cloud Run hakkında her şeyi bildiğinize göre, ilk instancenızı başlatmayı deneyin ya da sizin için doğru kontrol ve otomasyon düzeyini bulmak üzere diğer Google Cloud Servislerine göz atın!
Cloud Run SSS
Cloud Run’da veritabanı bağlantılarını nasıl yönetirim?⌄
Cloud SQL Auth Proxy’yi kullanabilir, bağlantı havuzlamayı etkinleştirebilir (ör. PostgreSQL için PgBouncer) veya bağlantı sınırlarından kaçınmak için Firestore gibi sunucusuz veritabanlarını tercih edebilirsiniz.
Cloud Run ile özel alan adı kullanabilir miyim?⌄
Evet. Cloud Run konsolunda Özel Alan Adlarını Yönet altında yapılandırın, mülkiyeti doğrulayın ve DNS kayıtlarını güncelleyin. SSL otomatik olarak sağlanır.
Cloud Run WebSocket’leri ve uzun ömürlü bağlantıları destekler mi?⌄
Evet, ancak instance’lar boşta kalırsa kapatılabilir. Bağlantıları sürdürmek için minimum instance sayısını ayarlayın veya olay odaklı iletişim için Pub/Sub kullanın.
Cloud Run arka plan işleriyle başa çıkabilir mi?⌄
Doğrudan değil; istek tabanlıdır. Arka plan işlemlerini tetiklemek ve yönetmek için Cloud Tasks, Pub/Sub veya Workflows kullanın.
Cloud Run üzerinde durumlu uygulamalar çalıştırabilir miyim?⌄
Önerilmez; çünkü instance’lar durumsuzdur. Durumu kalıcı kılmak için Cloud Storage, Firestore veya harici bir veritabanı kullanın.
Yazar
Marie Fayard
İlk prototipten ürün-pazar uyumuna ve ötesine kadar erken aşama girişimleri büyütme konusunda uzmanlaşmış, ürün odaklı bir teknik liderim. İnsanların teknolojiyi nasıl kullandığına dair bitmeyen bir merakım var ve kurucularla ile disiplinler arası ekiplerle yakın çalışarak cesur fikirleri hayata geçirmeyi seviyorum. Ürün inşa etmediğim zamanlarda ya dünyanın yeni köşelerinde ilham peşinde koşuyor ya da yoga stüdyosunda stres atıyorum.
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Cloud Run, Google Cloud’un altyapı yönetimiyle uğraşmadan uygulama dağıtmanıza olanak tanıyan, tamamen yönetilen sunucusuz platformudur. Son derece esnektir ve hobi projelerinden kurumsal seviyeye kadar pek çok proje için harika bir tercihtir.
Bu yazıda Cloud Run’ın ne olduğunu, nasıl çalıştığını, hangi kullanım senaryolarını çözdüğünü ve diğer sunucusuz çözümlerle nasıl karşılaştırıldığını anlatacağım. Ayrıca ilk Cloud Run uygulamanızı adım adım nasıl dağıtacağınızı da göstereceğim!
Ve başlamadan önce: Bulut bilişime tamamen yeniyseniz, Introduction to Cloud Computing kursumuzu öneririm. Bu kurs, bulutun temel kavramlarını açıklar; ölçeklenebilirlik ve gecikme gibi kilit terimleri tanımlar ve GCP gibi sağlayıcıların sunduğu bulut araçlarının avantajlarını kapsar.
Cloud Run nedir?
Cloud Run, altyapı yönetimini dert etmeden uygulamaları dağıtmanıza olanak tanıyan sunucusuz bir konteyner yürütme platformudur.
Geleneksel sunucu tabanlı dağıtımlarda genellikle sanal makineleri sağlamak ve sürdürmek gerekir. Cloud Run biraz farklı çalışır; tüm bunları soyutlayarak tamamen yönetilen bir ortam sunar.
Knative üzerine (sunucusuz iş yüklerini etkinleştiren Kubernetes tabanlı bir açık kaynak platform) inşa edilmiştir; bu da uygulamanızın talebe göre otomatik ölçekleneceği anlamına gelir. Trafik arttığında Cloud Run bunu karşılamak için daha fazla instance başlatır. Trafik azaldığında da ölçeği küçültür. Hatta sıfıra kadar inebilir; böylece uygulamanız aktif olarak çalışmıyorken ücret ödemezsiniz.
Cloud Run maliyet etkin olmasının yanı sıra çok da esnektir. Konteyner içinde çalıştığı sürece herhangi bir dilde yazılmış ve herhangi bir çatı ya da ikili dosya kullanan uygulamaları dağıtabilirsiniz. Node.js, Python, Go, Java gibi yaygın teknolojilerin yanı sıra daha niş olanlarla da çalışabilirsiniz. Pratikte bu, Cloud Run’ın arka uç servisleri, API’ler, yapay zeka iş yükleri, web uygulamaları ve hatta zamanlanmış toplu işler için güç sağlayabileceği anlamına gelir.
Bu küçük bir ön bakıştı. Şimdi Cloud Run’ın temel özelliklerine biraz daha yakından bakalım.
Cloud Run’ın Temel Özellikleri
Birkaçından bahsettik; işte Cloud Run’ın başlıca özelliklerinin tam bir özeti.
Dilden ve çatıdan bağımsız
Cloud Run’ın en büyük avantajlarından biri, sizi belirli bir dil ya da çatıya kilitlememesidir. Uygulamanız bir konteyner içinde çalıştığı sürece onu dağıtabilirsiniz. Çeşitli bir teknoloji yığınıyla çalışan bir ekip olarak tüm servislerinizde Cloud Run’ı kullanabilirsiniz. Hepsini yöneten tek bir araç!
Otomatik ölçekleme
Cloud Run, trafiğe bağlı olarak yatay ve dinamik şekilde ölçeklenir. Uygulamanız daha fazla istek alırsa Cloud Run otomatik olarak daha fazla instance başlatır. Talep azaldığında ise ölçeği küçültür; gerekirse sıfıra kadar iner.
Yerleşik güvenlik ve uyumluluk
Cloud Run, dağıtılan tüm servisler için otomatik HTTPS, güvenli kimlik doğrulama için Google tarafından yönetilen servis kimliği, özel ağ için VPC bağlantısı ve SOC 2, ISO 27001, HIPAA (sağlık uygulamaları için) gibi yerleşik uyumluluk sertifikalarıyla birlikte gelir. Kısacası, güvendesiniz.
Google Cloud servisleriyle entegrasyon
Cloud Run, Google Cloud ekosisteminin bir parçası olduğundan diğer GCP servisleriyle uyumlu çalışır. Veritabanları için Cloud SQL’e kolayca bağlanabilir, Pub/Sub ile veri akışı yapabilir, dosyaları Cloud Storage’da depolayabilir ya da BigQuery, Firebase ve AI/ML servisleriyle birlikte kullanabilirsiniz.
İhtiyaca göre GPU desteği
Yapay zeka iş yükleri için Cloud Run artık isteğe bağlı GPU desteği sunuyor. Bu, makine öğrenimi çıkarımı, video işleme ve bilimsel hesaplama için büyük bir gelişme; çünkü donanımı yönetmeden GPU hızlandırmalı herhangi bir iş yükünü çalıştırmanıza olanak tanır.
Cloud Run Functions: Hizmet Olarak Fonksiyon (FaaS) modeli
Tam konteynerleri yönetmek istemiyorsanız, Cloud Run Functions küçük ve tek amaçlı fonksiyonları çalıştırmak için basitleştirilmiş, olay odaklı bir yol sağlar. AWS Lambda veya Google Cloud Functions’a benzer, ancak Cloud Run’ın altyapısı üzerinde çalışır.
Cloud Run Nasıl Çalışır: Adım Adım
Bu bölümde, basit bir uygulamayı Cloud Run’a nasıl dağıtacağınızı anlatacağım. Uygulamanızı konteynerleştirme, Cloud Run’a dağıtma ve talebe göre otomatik ölçeklendirme süreçlerinde size rehberlik edeceğim.
Uygulamamızı konteynerleştirmek için Docker kullanacağız, ancak bunu yapmak zorunda değilsiniz. Bununla ilgili daha fazlası sonda.
Adım 1: Ortamınızı hazırlayın
Herhangi bir dağıtım yapmadan önce aşağıdaki araçların kurulu olması gerekir:
Adım 2: Uygulama kodunuzu yazın
Şimdi basit bir “Hello World” Node.js uygulaması yazalım.
Uygulamanız için bir dizin oluşturun:
Dizin içinde aşağıdaki içerikle bir index.js dosyası oluşturun:
Uygulamanızın bağımlılıklarını tanımlamak için bir package.json oluşturun:
Uygulama hazır olduğuna göre, şimdi konteynerleştirmeye geçeceğiz.
Adım 3: Uygulamayı konteynerleştirin
Container imajını tanımlamak için bir Dockerfile oluşturun
Proje dizininizde “Dockerfile” adlı bir dosya oluşturun ve aşağıdaki içeriği ekleyin:
Docker imajını oluşturun
Docker imajınızı oluşturmak için şu komutu çalıştırın:
Not: your-project-id kısmını kendi Google Cloud proje kimliğinizle değiştirin.
İmajı yerelde test edin
Docker konteynerinizi yerelde şu komutla test edebilirsiniz:
http://localhost:8080 adresini tarayıcınızda açarak uygulamanın çalıştığını doğrulayın.
Adım 4: İmajı Google Artifact Registry’ye gönderin
Projeniz için Artifact Registry’yi etkinleştirin
Artifact Registry’yi henüz etkinleştirmediyseniz, aşağıdaki komutu çalıştırın
Not: Bu adımı tamamlamak için faturalandırmayı etkinleştirmeniz gerekir!
Artifact Registry’de bir depo oluşturun
Artifact Registry’de yeni bir Docker deposu oluşturun:
Docker’ı Artifact Registry’ye kimlik doğrulamak için yapılandırın
Docker’ı Artifact Registry ile kimlik doğrulaması yapacak şekilde yapılandırın:
Docker imajını Artifact Registry için etiketleyin
Docker imajınızı Artifact Registry depo URL’si ile etiketleyin:
İmajı Artifact Registry’ye gönderin
Etiketlenmiş Docker imajını Artifact Registry deponuza gönderin:
Adım 5: Cloud Run’a dağıtın
İmajınız Artifact Registry’ye yüklendikten sonra, doğrudan Cloud Run’a dağıtabilirsiniz.
İmajınızı Cloud Run’a dağıtmak için aşağıdaki komutu kullanın:
Bu komutu çalıştırdıktan sonra Cloud Run konteynerleştirilmiş uygulamanızı dağıtır ve ona erişmek için bir URL sağlar.
Ve işimiz bitti! GCP konsoluna bir göz atın; yeni instancenızı görmelisiniz.
Adım 6: Temizlik
Devam eden maliyetlerden kaçınmak için testiniz bittiğinde servisinizi sildiğinizden emin olun.
1. Cloud Run servisini silin
Dağıttığınız Cloud Run servisini silmek için şu komutu çalıştırın:
Bu, Cloud Run instancenızı kaldırır ancak konteyner imajını silmez.
2. Artifact Registry imajını silin
Artifact Registry’den imajı kaldırmak için önce imajları listeleyin:
Ardından imajı şu komutla silin:
Artık Artifact Registry’niz de temizlenmiş oldu.
3. Artifact Registry deposunu silin (artık gerekli değilse)
Artifact Registry deposunu tamamen kaldırmak isterseniz şunu çalıştırın:
Bu adım yalnızca depoyla işiniz tamamen bittiyse gereklidir; aksi halde gelecekteki dağıtımlar için yeniden kullanabilirsiniz.
4. (İsteğe bağlı) Google Cloud projesini silin
Bu bir test projesiyse ve artık ihtiyacınız yoksa, ilişkili tüm kaynakları kaldırmak için tüm projeyi silebilirsiniz:
Kaynak koddan dağıtımlar
Uygulamanızı her zaman elle konteynerleştirmenizin gerekmediğini söylediğimi hatırlıyor musunuz?
Cloud Run artık kaynak koddan dağıtımları destekliyor; bu da Cloud Build kullanarak kaynak kodunuzdan konteyneri sizin için oluşturabileceği anlamına gelir.
Şu komutu kullanabilirsiniz:
Cloud Build uygulamanızın dilini (Node.js, Python, Go, Java, vb.) otomatik olarak algılar, sizin için bir konteyner imajı oluşturur ve onu Artifact Registry’ye kaydeder. Cloud Run daha sonra, sanki konteyneri elle oluşturmuşsunuz gibi, oluşturulan imajı dağıtır. Bunu desteklenen dillerle (Node.js, Python, Go, Java, vb.) yazılmış basit uygulamalar için kesinlikle öneririm; ancak konteyner üzerinde tam denetime ihtiyacınız varsa (örn. özel bağımlılıklar, OS seviyesinde ince ayarlar, çok adımlı derlemeler) önerilmez.
Cloud Run’ı verimli kullanmak için ipuçları
Bir uygulamayı Cloud Run’a dağıtmak oldukça kolay; ancak verimli çalışmasını sağlamak için biraz ince ayar gerekir. İlk kullandığımda deneme-yanılma sürecinden geçtim ve öğrendiklerim şunlar:
1. Soğuk başlatmalar gerçektir
Özellikle büyük bir konteyner imajıyla çalışıyorsanız. İmajınız ne kadar küçükse, servisiniz o kadar hızlı ayağa kalkar. distroless gibi minimal bir temel imaj kullanmak büyük fark yaratabilir. Python uygulamaları derliyorsanız resmi imajların slim sürümlerini deneyin. Ya da maliyetleri çok dert etmiyorsanız minimum instance sayısını 1 olarak ayarlayın.
2. Oynayabileceğiniz en iyi değişken istek eşzamanlılığı miktarıdır
Cloud Run her bir instance’ın aynı anda birden fazla isteği işlemesine izin verir; ancak varsayılan değer (konteyner başına 80 istek) çoğu zaman en uygun değer değildir. CPU yoğun görevlerde eşzamanlılığı 1 veya 2’ye düşürmek işleri çok daha akıcı hale getiriyor. Öte yandan, API’ler genellikle daha yüksek sayıları kaldırabilir. Sayı yükseldikçe ihtiyaç duyduğunuz instance sayısını azaltabilir, dolayısıyla ödediğiniz tutarı düşürebilirsiniz; bu yüzden uygulamanız için en uygun noktayı bulmak adına farklı değerlerle denemeler yapmak kesinlikle değerli.
3. Instance limitlerinizi ayarlayın!
Birisi (ben) yük testi yapmaya karar verip aşırı sayıda istek başlattığında çok işe yarar. Bu dersi ben aldım, sizin almanıza gerek yok. Lütfen maksimum instance sayınızı ayarlayın.
4. Doğru kişilerin instancınıza eriştiğinden emin olun
Varsayılan olarak Cloud Run servislerine URL’yi bilen herkes erişebilir; bu hızlı demolar için harika ama üretim için pek iyi değil. Uygulamanız herkese açık olmamalıysa IAM izinleriyle erişimi kısıtlayın.
5. Cloud Logging ve Cloud Trace en iyi dostlarınız olacak
Eğer benim gibi sorun giderirken sanal makinelere SSH ile bağlanmaya alışkınsanız, hayal kırıklığına uğrayabilirsiniz. Cloud Run günlükleri doğrudan Google Cloud panosuna aktarılır; her şeyi orada görebilirsiniz. Uygulamanıza yapılandırılmış loglama eklediğinizden emin olun; sorun gidermeyi çok daha kolaylaştırır.
Cloud Run Kullanım Senaryoları
Web uygulamaları, API’ler veya cron işler gibi bazı kullanım senaryolarından bahsettik; ancak elbette çok daha fazlası var.
Video ve görsel analizi
Bir sosyal medya platformu için yüklenen görselleri gerçek zamanlı işlemek üzere bir görüntü tanıma modelini dağıtabilir veya bir video yüklendiğinde video dönüştürme görevleri çalıştırabilirsiniz. Cloud Run, otomatik ölçeklemesiyle (viral içerik gibi) talep artışlarını karşılayabilir ve talep düşükken maliyet etkinliğini korur.
Kaynak: Google Cloud
Gerçek zamanlı akış işleme
Bir çevrimiçi pazaryerinde kullanıcı davranışını izleyen bir sistem kurduğunuzu hayal edin. Pub/Sub veya BigQuery’den olay akışlarını işleyerek kullanıcı etkinliğine göre anında eylemler tetikleyebilir, örneğin anlık bildirimler gönderebilir veya trendleri gerçek zamanlı analiz edebilirsiniz. Cloud Run, yoğun dönemlerde gelen olayları karşılamak için otomatik olarak ölçeklenir ve akış hacmi azaldığında ölçeği küçültür.
Kaynak: Google Cloud
Gerçek zamanlı dosya işleme
Bir kullanım senaryosu, büyük bir kurumsal yapı için gerçek zamanlı günlük dosyası analizi olabilir. Cloud Storage’a bir günlük dosyası yüklendiğinde, Cloud Run dosyayı ayrıştıracak, analizi çalıştıracak ve sonuçları depolayacak bir konteyneri tetikleyebilir; tüm bunları dosya boyutu ve işleme görevinin karmaşıklığına göre dinamik olarak ölçeklendirerek yapar.
Kaynak: Google Cloud
Sunucusuz IoT arka uçları
Cloud Run, IoT uygulamalarının arka uç servislerini yönetmek için idealdir. Örneğin, binlerce sensörden çevresel verileri izleyen bir IoT çözümünde Cloud Run, her cihazdan gelen verileri gerçek zamanlı işleyebilir.
Kaynak: Google Cloud
Google Cloud Run Fiyatlandırması
Cloud Run, kullandıkça öde modelini izler; yani uygulamanız aktif olarak çalışırken kullanılan bilgi işlem kaynakları için ödeme yaparsınız. Uygulamanız istek almıyorsa sıfıra kadar ölçeklenebilir; bu da gereksiz maliyet ödemeyeceğiniz anlamına gelir.
Fiyatlandırmanın Ayrıntıları
Mart 2025 itibarıyla Cloud Run iki ana faktöre göre ücretlendirir:
Bu fiyatlandırma instance tabanlı faturalama içindir; istek tabanlı faturalamada farklı çalışır. Yukarıdaki fiyat ve ücretsiz katman ayrıca bulunduğunuz bölgeye göre biraz değişir; bu yüzden kesin rakamlar için resmi Google Cloud sayfasını kontrol edin. Maliyetleri hesaplamanıza yardımcı olacak bir fiyat hesaplayıcıları var ve taahhütlü kullanım için indirimler de sunuyorlar.
Küçük bir ipucu: Aynı bölgedeki diğer Google Cloud servisleriyle trafik ücretsizdir; bu yüzden veri alışverişi için harici servisler yerine Cloud Storage, Cloud SQL veya Pub/Sub kullanmayı deneyin.
Cloud Run ve Cloud Run Functions
Google iki sunucusuz bilgi işlem seçeneği sunar: Cloud Run ve Cloud Run Functions (önceden Cloud Functions). Her ikisi de altyapıyı yönetmeden kod çalıştırmanıza izin verir; ancak aralarında bazı farklılıklar vardır.
Cloud Run’ı Ne Zaman Kullanmali?
Cloud Run Functions’ı Ne Zaman Kullanmalı
Yine de illa birini seçmek zorunda değilsiniz; ikisini birlikte kullanabilirsiniz! Örneğin, Cloud Run arka ucunuz, e-posta gönderme veya görselleri eşzamansız işleme gibi belirli görevler için Cloud Run Functions’ı tetikleyebilir.
Diğer Google Cloud Servisleriyle Karşılaştırmalar
Cloud Run ve Cloud Run Functions’ı oldukça kapsamlı şekilde karşılaştırdık; ancak burada bahsetmeye değer birkaç Google Cloud servisi daha olabilir: GKE ve App Engine.
Elbette burada daha fazla nüans var; ancak kısaca: Otomatik ölçekleme ve esneklikle birlikte tamamen yönetilen, konteyner tabanlı bir çözüme ihtiyacınız varsa Cloud Run’ı seçin. Minimum yapılandırmayla bir web uygulaması inşa ediyorsanız App Engine’i tercih edin. Büyük ölçekli, karmaşık uygulamalar için Kubernetes kümeleri üzerinde tam denetim istiyorsanız GKE’yi seçin.
Sonuç
Artık Cloud Run hakkında her şeyi bildiğinize göre, ilk instancenızı başlatmayı deneyin ya da sizin için doğru kontrol ve otomasyon düzeyini bulmak üzere diğer Google Cloud Servislerine göz atın!