Uygulama dağıtım türleri

Tamamlandı

Java uygulamalarını buluta dağıtmanın çeşitli yolları vardır. Bu ünitede azure tarafından sunulan hizmetleri daha iyi anlayabilmek için çeşitli seçenekler incelenmektedir.

Sanal makineler, kapsayıcılar veya hizmet olarak platformlar?

Asıl soru uygulamanızı bir sanal makineye (VM), kapsayıcı içinde mi yoksa hizmet olarak platform (PaaS) çözümü olarak mı dağıtmanız gerektiğidir.

  • sanal makineleriile, şirket içi veya klasik bir veri merkezi ortamına benzer bir dünyadasınız. Azure, ana işletim sistemlerini (Windows ve Linux) çalıştıran önceden yapılandırılmış bir vm kümesi sağlar ve bu makineleri yapılandırmanız ve bakımını yapmanız gerekir.

    Çoğu kuruluş buluta geçmeden önce zaten kullandıklarına en yakın çözüm olduğundan başlangıçta bu çözümü benimsemenizi öneririz. Genellikle kendi yapılandırma yönetimi yazılımlarını yükler, en sevdikleri Java sürümünü yükler ve daha sonra Java iş yüklerini geçmişte yaptıklarına benzer bir şekilde çalıştırabilir.

    VM çözümü, bunları yapılandıracak ve bakımını yapacak deneyimli bir operasyon ekibiniz varsa ve belirli kullanım örnekleriniz varsa iyi çalışır. Örneğin, oracle WebLogic Server veya IBM WebSphere Application Server gibi bazı yerel kitaplıkları veya bazı özel yazılımları kullanıyor olabilirsiniz.

  • kapsayıcılarıyla, VM'lerde sahip olduğunuz kontrolün büyük kısmını korurken, daha az işletim yüküyle çalışabilirsiniz. Kendi Java Sanal Makinenizi (JVM) veya belirli bir yazılımı yükleyebilirsiniz; kapsayıcılarınız yerel olarak veya herhangi bir bulut sağlayıcısında çalışır.

    Kapsayıcılar çok fazla özgürlük sunduğundan VM'lerle aynı sorunlardan muzdariptir. Kendi JVM'nizi sağlarsanız gerektiğinde güncelleştirmeniz ve düzeltme eki uygulamanız gerekir. Sonuç olarak Docker görüntüleri, kapsayıcıları düzgün bir şekilde korumak için iyi bir sürekli entegrasyon ve sürekli teslimat (CI/CD) araç zinciri gerektirir. Docker görüntüleri yerel olarak çalıştırılabildiğinden ve VM'lerden daha hafif olduğundan, harika bir geliştirici deneyimi de sağlar.

  • platformu hizmet olarak bir çözümü ile, bakım ve işletim yükünün çoğunu bulut sağlayıcısı yönetir. İşletim sistemi (işletim sistemi) güncelleştirmeleri, Java düzeltme ekleri, güvenlik ve uyumluluk sağlanır. Sonuç olarak, bu seçenek genellikle daha güvenli ve daha az maliyetlidir. Ayrıca uygulamanızın müşterilerinizin ihtiyaçlarına daha iyi uyum sağlaması gereken bazı ölçeklenebilirlik özellikleriyle birlikte gelir. Ayrıca yük altında daha iyi performansa ve daha az trafik olduğunda maliyetin düşmesine neden olur.

    PaaS çözümü kullanarak daha fazlasını elde edebilirsiniz. Otomatik yapılandırma ayarlayabilir, gizli verileri yönetip yükleyebilir (örneğin, Azure Key Vault kullanarak), uygulamanızı izleyebilir, canlı bir profilleme oturumu başlatabilir ve sıfır kesinti süresiyle dağıtımı etkinleştirebilirsiniz.

Dağıtım seçenekleri

VM'leri, kapsayıcıları veya PaaS çözümünü kullandığınızda, Java uygulamalarınızı genellikle iki yoldan biriyle buluta dağıtabilirsiniz:

  • Kaynak kodu dağıtımı: Kaynak kodunuzu bir Git deposuna işlersiniz ve bulut sağlayıcısı uygulamayı derleyen, derleyen ve paketleyen bir işlem çalıştırır.
  • JAR, WAR veya EAR dosya dağıtımı : Uygulamanızı genellikle yürütülebilir JAR (Java ARchive) dosyası olarak paketleyebilirsiniz, ancak WAR (Web Uygulaması ARchive), EAR (Kurumsal Uygulama ARchive) ve diğer dosya biçimleri de mümkündür. Ardından bulut sağlayıcısı yürütülebilir dosyayı çalıştırır.

Bu iki dağıtım seçeneği, Java uygulamalarını çalıştırmanın klasik yollarıdır. Her iki seçenek için de derleme işlemi genellikle benzerdir ve temel fark bu işlemin çalıştırıldığı yerdir. Bulut sağlayıcısının derlemeyi yapmasına izin vermek daha basittir ve bu yaklaşımla bulut sağlayıcısı kendi güvenlik denetimlerini ve düzeltme eklerini uygular. Uygulamayı yerel olarak oluşturarak veya GitHub Actions gibi bir CI/CD platformu kullanarak daha fazla esneklik ve denetim elde edersiniz.

Sunucusuz işlevler

Sunucusuz işlevler veya daha belirgin olarak Azure İşlevleri, gördüğümüz ve çok özel bir özellik sunduğumuz çeşitli çözümlerin bir karışımıdır: sunucusuz işlevlerin kısa süreler boyunca çalıştırılması amaçlanmaktadır. Genellikle bir işlev HTTP isteği gibi bir olay tarafından uyandırılır ve uyku moduna geçene kadar birkaç dakika boyunca "sıcak" kalır.

İşlevler, daha önce açıkladığımız PaaS çözümüyle özellikleri paylaşır. Azure'da PaaS çözümümüz (Azure App Service) ve sunucusuz çözümümüz (Azure İşlevleri) teknik olarak benzerdir ve bazı yaygın kod ve hizmetleri paylaşır.

Dağıtım seçenekleri için işlevler genellikle JAR dosyalarıyla çalışır. Docker gibi diğer seçenekler kullanılabilir, ancak bunlar daha az popülerdir ve genellikle aynı performansı göstermez. Bunun nedeni, temel platformun JAR dosyaları için yaptığı şekilde bunları optimize edememesidir.

Doğası gereği sunucusuz işlevlerin özel olarak kodlanması gerekir. Özellikleri üzerinde çalıştıkları bulut sağlayıcısına bağlıdır ve kısa ömürleri önbelleğe alma veya HTTP oturumu çoğaltması gibi geleneksel çözümlerin kullanılmasını karmaşık hale getirir.

Sunucusuz işlevler iyi ölçeklendirilebilir ve düşük kullanımlı ortamlar için en iyi fiyatı sunar. Aynı zamanda en zorlu trafik yüklerine de yanıt verebilirler.