Heroku'dan Azure Container Apps'e geçişe genel bakış

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:

  1. Azure eşdeğeri hizmeti sağlayın.
  2. Tüm kalıcı verileri (veritabanları, depolama) geçirin.
  3. Container App ortam değişkenlerinizdeki bağlantı dizelerini ve kimlik bilgilerini güncelleştirin.
  4. 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: 0 trafik olmadığında ölçeği sıfıra çıkarır ve bu da boşta uygulamalar için maliyeti ortadan kaldırır.
  • max-replicas maliyetleri 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.

Sonraki adım