Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Heroku'dan Azure Container Apps'e geçiyorsanız, bu kılavuz zaten bildiğiniz Heroku kavramlarını Azure eşdeğerleriyle eşleyerek geçişi planlamanıza yardımcı olur. Geçişinizin kapsamını değerlendirmek, ihtiyacınız olan Azure hizmetlerini tanımlamak ve başlamadan önce sık karşılaşılan tuzaklardan kaçınmak için bu makaleyi kullanın.
Adım adım geçiş yordamları için bkz. Bir uygulamayı Heroku'dan Azure Container Apps'e geçirme.
Kavram eşleme
Aşağıdaki tabloda temel Heroku platformu özellikleri Azure Container Apps eşdeğerleriyle eşlenmiştir.
| Heroku kavramı | Azure Container Apps eşdeğeri | Notes |
|---|---|---|
| Uygulama (web dyno) | Kapsayıcı Uygulaması | Uygulama kodunuzu çalıştıran tek bir dağıtılabilir birim. |
| Dyno türleri + el ile ölçeklendirme | KEDA tabanlı otomatik ölçeklendirme | Sıfıra ölçeklemeyi içeren kural tabanlı otomatik ölçeklendirme. Manuel dinamometre sayımı yönetiminin yerini alır. |
| Derleme paketleri (slug oluşturma) | Kapsayıcı görüntüleri veya Bulut Yerlisi Derleme Paketleri | Buildpack benzeri bir deneyim için az containerapp up --source ifadesini kullanın, veya kendi Dockerfile'ınızı getirin. |
| Yapılandırma Değişkenleri | Ortam değişkenleri + Azure Key Vault | Duyarlı olmayan değerler ortam değişkenlerini kullanır. Gizli bilgiler, Key Vault başvuruları veya Container Apps gizli bilgileri kullanır. |
| Eklentiler (Postgres, Redis vb.) | Azure yönetilen hizmetleri | Tam eşleme için bkz. Hizmet eşdeğerleri . |
heroku CLI |
az containerapp CLI |
Uzantılı containerapp Azure CLI, eşdeğer yönetim komutları sağlar. |
| Heroku Pipelines / Uygulamaları Gözden Geçirme | GitHub Actions veya Azure Pipelines | Yapılandırdığınız ve sahip olduğunuz CI/CD işlem hatları. |
Tek seferlik dynos (heroku run) |
Container Apps görevleri | Uzun süre çalışan bir uygulama olmadan isteğe bağlı veya zamanlanmış yürütme. |
| Procfile (işlem türleri) | İşlem türü başına ayrı Kapsayıcı Uygulamaları | Web ve çalışan işlemlerinizi aynı ortamda bağımsız Container Apps olarak dağıtın. |
| Özel alan adı + ACM | Özel etki alanı + ücretsiz yönetilen sertifika | Yönetilen sertifikalar ücretsizdir ve otomatik olarak yenilenir. |
Hizmet eşdeğerleri
Heroku'dan geçiş yaptığınızda, Heroku eklentilerini Azure yönetilen hizmetleriyle değiştirin. Aşağıdaki tablo, yaygın eklentileri Azure eşdeğerleriyle eşler.
| Heroku eklentisi | Azure eşdeğeri | Geçiş karmaşıklığı |
|---|---|---|
| Heroku Postgres | PostgreSQL için Azure Veritabanı - Esnek Sunucu | Orta: Veri dışarı aktarma ve geri yükleme gerektirir. |
| Heroku Redis | Redis için Azure Cache | Düşük: Genellikle veri geçişi gerekmez (yalnızca önbellek kullanımı). |
| Heroku Scheduler | Container Apps görevleri (zamanlanmış tür) | Düşük — cron ifadelerini iş zamanlamaları olarak yeniden oluşturun. |
| Papertrail / Logentries | Azure İzleyici + Log Analizi | Düşük düzey — Log kayıtları, Container Apps'te yerleşik olarak bulunur. |
| New Relic | Azure Application Insights | Orta — SDK veya otomatik enstrümantasyon değişiklikleri gerektirir. |
| SendGrid | Azure Marketi aracılığıyla SendGrid veya Azure İletişim Hizmetleri | Düşük — SendGrid Azure'dan çalışmaya devam eder; yalnızca bağlantı ayrıntılarını güncelleştirin. |
| CloudAMQP (RabbitMQ) | Azure Service Bus | Yüksek — farklı mesajlaşma API'leri; kod değişiklikleri gerektirir. |
| Heroku Kafka | Azure Event Hubs (Kafka ile uyumlu uç nokta) | Düşük — Event Hubs kafka protokollerini doğrudan destekler. |
| Bucketeer / S3 eklentileri | Azure Blob Depolama | Orta — Dosya işlemleri için SDK veya API değişiklikleri gerektirir. |
| Memcachier | Redis için Azure Cache | Düşük — Redis, memcache uyumlu protokolleri destekler. |
| Heroku Connect (Salesforce) | Azure Logic Apps veya Power Automate | Yüksek — farklı tümleştirme yaklaşımı; iş akışının yeniden tasarlanmasını gerektirir. |
Heroku uygulamanızdaki her eklenti için şu genel düzeni izleyin:
- Azure eşdeğeri hizmeti sağlayın.
- Tüm kalıcı verileri (veritabanları, depolama) geçirin.
- Container App ortam değişkenlerinizdeki bağlantı dizelerini ve kimlik bilgilerini güncelleştirin.
- Heroku eklentisini kaldırmadan önce tümleştirmeyi doğrulayın.
Ölçeklendirme karşılaştırması
Heroku, belirli bir örnek sayısını ayarladığınız sabit bir dyno modeli kullanır. Azure Container Apps, KEDA tarafından desteklenen ve çoğaltmaları isteğe göre ayarlayan kural tabanlı otomatik ölçeklendirmeyi kullanır.
| Kapasite | Heroku | Azure Konteyner Uygulamaları |
|---|---|---|
| Ölçek mekanizması | Manuel dinamometre sayısı | Kural tabanlı otomatik ölçeklendirme (HTTP, CPU, kuyruk uzunluğu, cron, özel) |
| Sıfıra ölçeklendirin | Mevcut değil | Desteklenir - boşta kaldığında ücret alınmaz |
| En düşük örnekler | En az 1 dyno gereklidir | Yapılandırılabilir: 0 ya da daha fazla kopya |
| En fazla örneklem sayısı | Plana bağlı | Kapsayıcı uygulaması başına en fazla 300 kopya kadar |
| Ölçek tetikleyicileri | Yok - yalnızca el ile | HTTP eşzamanlılığı, TCP bağlantıları, CPU, bellek, Azure Kuyruğu, özel KEDA ölçeklendiricileri |
Anahtar ölçeklendirme kavramları
-
min-replicas: 0trafik olmadığında ölçeği sıfıra çıkarır ve bu da boşta uygulamalar için maliyeti ortadan kaldırır. -
max-replicasmaliyetleri kontrol altında tutmak için örnek sayısını sınırlar. Muhafazakar bir şekilde başlayın ve izleme verilerine göre ayarlayın. - HTTP eşzamanlılık ölçeklendirmesi , web uygulamaları için en basit başlangıç noktasıdır. Örnek başına eşzamanlı istekler eşiğinizi aştığında kopyalar eklenir.
- Kuyruk tabanlı ölçeklendirme , çalışan işlemleri için idealdir. Çalışanları kuyruk derinliğine göre ölçeklenen ayrı Kapsayıcı Uygulamalar olarak dağıtın.
Tavsiye
Her zaman hazır olması gereken üretim uygulamaları için min-replicas değerini 1 olarak ayarlayın. Geliştirme ve hazırlama ortamlarında maliyet tasarrufu yapmak için kullanın min-replicas: 0 .
Maliyet karşılaştırması
| Scenario | Heroku (Standard-1X) | Azure Container Apps (Tüketim) |
|---|---|---|
| Boşta uygulama (24/7) | Dyno başına aylık ~ 25 ABD doları | 0 TL (sıfıra ölçeklendi) |
| Düşük trafikli uygulama | Dyno başına aylık ~ 25 ABD doları | ~ $1–5/ay |
| Yüksek trafikli uygulama (10 örnek) | ~ $250/ay | Gerçek CPU ve bellek kullanımına göre değişir |
| Aylık ücretsiz hibe | Hiç kimse | 180.000 vCPU saniye + 2 milyon istek |
Ayrıntılı fiyatlandırma için bkz. Azure Container Apps fiyatlandırması.
Çalışanlar ve arka plan işleri
Heroku uygulamanız, Procfile içinde tanımlanan çalışan dyno'lar kullanıyorsa, her çalışan türünü aynı çevresel ayarda ayrı bir Kapsayıcı Uygulama olarak dağıtın. Sabit örnek sayısı yerine kuyruk tabanlı ölçeklendirme kullanın.
| Heroku deseni | Azure Container Apps düzeni |
|---|---|
web işlem türü |
HTTP girişi ve HTTP tabanlı ölçeklendirme ile Container Uygulaması |
worker işlem türü |
Kuyruk tabanlı ölçeklendirmeye sahip Container App (giriş yok) |
| Zamanlanmış görevler (Heroku Zamanlayıcı) | Cron zamanlaması ile Container Apps işi |
Tek seferlik görevler (heroku run) |
Elle Tetiklenen Container Apps görevi |
Yaygın tuzaklar
Gecikmeleri önlemek için geçiş öncesinde ve sırasında bu yaygın sorunları gözden geçirin.
| Tuzak | Semptom | Çözüm |
|---|---|---|
| PORT ortam değişkeni | Uygulama isteklere yanıt vermez. | Container Apps bir PORT değişken ayarlar ve uygulamanızın bu değişkeni dinlemesini bekler. Bir bağlantı noktasını sabit kodlarsanız, --target-port ayarını kapsayıcı uygulamasını oluştururken buna uygun hale getirin. Heroku uygulamalarının çoğu zaten ortamdan okur PORT ve değişiklik yapmadan çalışır. |
| Kısa ömürlü dosya sistemi | Çalışma zamanında yazılan dosyalar yeniden başlatıldıktan sonra kaybolur. | Heroku gibi Container Apps de kısa ömürlü bir dosya sistemi kullanır. Kalıcı dosyalar için bir Azure Dosyalar paylaşımı bağlayın. |
| Ölçeklendirme yanlış yapılandırması | Beklenmeyen maliyetler veya yük altında düşük performans. | Web uygulamaları için HTTP eşzamanlılık ölçeklendirmesi ile başlayın ve Azure İzleyici ile izleyin. Uygulamanızın kaynak tüketimini anlamadan önce çok yüksek bir değer ayarlamaktan max-replicas kaçının. |
| Ortam tutarlılığı | Geliştirme, test ve üretim arasında yapılandırma sapması. | Ortamları tutarlı tutmak için kod olarak altyapıyı (Bicep veya Terraform) kullanın. Bu yaklaşım, Heroku Pipelines tarafından sağlanan tutarlılığın yerini alır. |
| Üçüncü taraf hizmetler | SaaS eklentileri için gereksiz geçiş çalışması. | Birçok Heroku eklentisi tek başına SaaS ürünleridir (SendGrid, MongoDB Atlas, Elasticsearch). Bu hizmetler genellikle Container Apps'ten çalışmaya devam eder; yalnızca bağlantı URL'sini güncelleştirir. Yalnızca Heroku tarafından yönetilen hizmetler (Heroku Postgres, Heroku Redis, Heroku Kafka) Azure eşdeğerlerine geçiş gerektirir. |
| Cloud Build mevcudiyeti |
az containerapp up --source veya oluşturucu hatalarıyla ManagedEnvironmentNotFound başarısız oluyor. |
Bulut Derlemesi tüm bölgelerde veya tüm dil yığınlarında kullanılamaz. ACR tabanlı yaklaşıma geri dön: Bir Dockerfile oluştur, az acr build ile derle ve görüntüyü dağıt. Her iki yaklaşım için Heroku'dan uygulama geçirme'ye bakın. |
| Gizli bilgiler ve ortam değişkenlerinin sıralaması | ** Gizli bilgileri referans alan ortam değişkenleri boş olarak çözümleniyor. | Ortam değişkenlerinde bunlara az containerapp secret set ile gizli dizileri ayarlayın. Ayrıca yalnızca gizli verileri ayarlamak uygulamayı yeniden başlatmaz; yeni bir revizyon oluşturmanız gerekir az containerapp update. |
| Azure hizmeti sağlama süreleri | Geçiş beklenenden uzun sürüyor. | Azure yönetilen hizmetlerinin sağlanması Heroku eklentilerinden daha uzun sürer. Redis için Azure Cache 10-20 dakika sürebilir; PostgreSQL için Azure Veritabanı 5-10 dakika sürebilir. Uygulamanızı dağıtırken bu hizmetleri paralel olarak sağlayın. |