Düzenle

Aracılığıyla paylaş


Azure'da Java uygulama barındırma seçeneklerini karşılaştırma

Azure Spring Apps
Azure App Service
Azure Kubernetes Service (AKS)
Azure Virtual Machines

Azure, ekiplerin Java uygulamaları oluşturması ve dağıtması için birçok seçenek sunar. Bu makale, Azure'da Java için temel senaryoları kapsar ve üst düzey planlama önerileri ve dikkat edilmesi gerekenler sağlar.

Apache®, Apache Kafka, Apache Struts, Apache Tomcat ve alev logosu, Apache Software Foundation'ın Birleşik Devletler ve/veya diğer ülkelerdeki kayıtlı ticari markaları veya ticari markalarıdır. Bu işaretlerin kullanılması Apache Software Foundation tarafından onaylanmamaktadır.

Platform

Java uygulamanız için bir bulut senaryosu seçmeden önce platformunu tanımlayın. Çoğu Java uygulaması aşağıdaki platformlardan birini kullanır:

Spring Boot JAR uygulamaları

Spring Boot JAR uygulamaları genellikle doğrudan komut satırından çağrılır. Web isteklerini işler. Bu uygulamalar, HTTP isteklerini işlemek için bir uygulama sunucusuna güvenmek yerine HTTP iletişimini ve diğer bağımlılıkları doğrudan uygulama paketine ekler. Bu tür uygulamalar genellikle Spring Boot, Dropwizard, Micronaut, MicroProfile ve Vert.x gibi çerçevelerle oluşturulur.

Bu uygulamalar JAR dosyaları olarak bilinen .jar uzantısına sahip arşivlerde paketlenir.

Spring Cloud uygulamaları

Mikro hizmet mimari stili, küçük hizmetlerden oluşan bir paket olarak tek bir uygulama geliştirmeye yönelik bir yaklaşımdır. Her hizmet kendi işleminde çalışır ve genellikle bir HTTP kaynak API'si olan basit mekanizmalar kullanarak iletişim kurar. Bu hizmetler, iş özelliklerine göre oluşturulur.

Otomatik dağıtım makineleri bu mikro hizmetleri bağımsız olarak dağıtır. Farklı programlama dillerinde yazılabilen ve farklı veri depolama teknolojilerini kullanan en az merkezi yönetim vardır. Bu tür hizmetler genellikle Spring Cloud gibi çerçevelerle oluşturulur.

Bu hizmetler JAR dosyaları olarak birden çok uygulamada paketlenir.

Web uygulamaları

Web uygulamaları bir servlet kapsayıcısı içinde çalışır. Bazıları doğrudan servlet API'lerini kullanırken, diğerleri Apache Struts, Spring MVC ve JavaServer Faces gibi servlet API'lerini kapsülleyen diğer çerçeveleri kullanır.

Web uygulamaları WAR dosyaları olarak bilinen .war uzantısına sahip arşivlerde paketlenir.

Jakarta EE uygulamaları

Jakarta Enterprise Sürümü (Jakarta EE) uygulamaları, web uygulamalarının öğelerinin bazılarını, tümünü veya hiçbirini içeremez. Ayrıca Jakarta EE belirtimi tarafından tanımlandığı gibi çok daha fazla bileşen içerebilir ve kullanabilirler. Jakarta EE uygulamaları eskiden Java EE uygulamaları veya J2EE uygulamaları olarak biliniyordu.

Jakarta EE uygulamaları WAR dosyaları olarak veya EAR dosyaları olarak bilinen .ear uzantısına sahip arşivler olarak paketlenebilir.

Jakarta EE uygulamaları Jakarta EE uyumlu uygulama sunucularına dağıtılmalıdır. Örnek olarak WebLogic, WebSphere, WildFly, GlassFish ve Payara verilebilir.

Yalnızca Jakarta EE belirtimi tarafından sağlanan özellikleri kullanan uygulamalar uyumlu bir uygulama sunucusundan diğerine geçirilebilir. Uygulamanız belirli bir uygulama sunucusuna bağımlıysa, bu uygulama sunucusunu barındırmanıza izin veren bir Azure hizmet hedefi seçmeniz gerekebilir.

Platform seçenekleri

Uygulama türünüz için olası platformları belirlemek için aşağıdaki tabloyu kullanın.

Azure Spring Apps App Service Java SE App Service Tomcat App Service JBoss EAP Azure Container Apps AKS Sanal Makineler
Spring Boot/JAR uygulamaları
Spring Cloud uygulamaları
Web uygulamaları
Jakarta EE uygulamaları
Azure bölgesi kullanılabilirliği Ayrıntılar Ayrıntılar Ayrıntılar Ayrıntılar Ayrıntılar Ayrıntılar Ayrıntılar

Azure Kubernetes Service (AKS) ve Sanal Makineler tüm uygulama türlerini destekler, ancak bir sonraki bölümde açıklandığı gibi ekibinizin daha fazla sorumluluk almasını gerektirir.

Desteklenebilirlik

Platform seçeneklerinin yanı sıra modern Java uygulamalarının aşağıdakiler gibi başka desteklenebilirlik gereksinimleri de olabilir:

Toplu iş veya zamanlanmış işler

İstekleri veya kullanıcı girişini beklemek yerine, bazı uygulamalar kısa bir süre çalışır, belirli bir iş yükünü çalıştırır ve sonra çıkar. Bazen, bu tür işlerin bir kez veya düzenli, zamanlanmış aralıklarla çalıştırılması gerekir. Şirket içinde, bu tür işler genellikle sunucunun cron tablosundan çağrılır.

Bu uygulamalar JAR dosyaları olarak paketlenir.

Not

Uygulamanız zamanlanmış görevleri çalıştırmak için Spring Batch veya Quartz gibi bir zamanlayıcı kullanıyorsa, bu görevleri uygulamanın dışında çalıştırmanızı kesinlikle öneririz. Uygulamanız bulutta birden çok örneğe ölçeklendirilirse, aynı iş birden çok kez çalışabilir. Zamanlama mekanizmanız konağın yerel saat dilimini kullanıyorsa, bir uygulamayı bölgeler arasında ölçeklendirirken istenmeyen davranışlar olabilir.

Sanal ağ tümleştirmesi

Sanal ağınıza bir Java uygulaması dağıttığınızda, sanal ağın dışındaki hizmetlere giden bağımlılıkları olur. Yönetim ve işlemler için projenizin belirli bağlantı noktalarına ve tam etki alanı adlarına erişimi olmalıdır. Azure Sanal Ağ s ile Azure kaynaklarınızın çoğunu İnternet'e yönlendirilemeyen bir ağa yerleştirebilirsiniz. Sanal ağ tümleştirme özelliği, uygulamalarınızın sanal ağ içindeki veya sanal ağ üzerinden kaynaklara erişmesini sağlar. Sanal ağ tümleştirmesi, uygulamalarınızın özel olarak erişmesini sağlamaz.

Sunucusuz geliştirme modeli

Sunucusuz, geliştiricilerin sunucuları yönetmek zorunda kalmadan uygulama oluşturmasına ve çalıştırmasına olanak tanıyan buluta özel bir geliştirme modelidir. Sunucusuz uygulamalarda bulut hizmeti sağlayıcısı, kodu çalıştırmak için gerekli altyapıyı otomatik olarak sağlar, ölçeklendirir ve yönetir. Sunucular sunucusuz modelde hala var. Uygulama geliştirmeden soyutlanırlar.

Konteyner kullanımı

Kapsayıcıya alma, kitaplıklar, çerçeveler ve diğer bağımlılıklar gibi gerekli tüm bileşenleriyle yazılım kodunun birlikte paketlenmesidir. Uygulama kendi kapsayıcısında yalıtılır.

CI/CD

Sürekli tümleştirme ve sürekli teslim (CI/CD), uygulama geliştirme aşamalarına otomasyon getirerek müşterilere sık sık uygulama sunma yöntemidir. CI/CD'deki temel kavramlar sürekli tümleştirme, sürekli teslim ve sürekli dağıtımdır. Tüm Azure seçenekleri çoğu CI/CD aracını destekler. Örneğin, Azure Pipelines veya Jenkins gibi çözümleri kullanabilirsiniz.

Açık kaynak arama altyapısı

Aramalar herhangi bir uygulamanın ayrılmaz parçalarıdır. Hız, performans ve yüksek kullanılabilirlik kritikse, terabaytlar ve petabaytlar halinde yapılan veriler üzerinde yapılan aramalar zor olabilir. Java uygulamalarını Azure'da barındırırken, ilgili Solr ve Elasticsearch örneklerinizi barındırmayı planlayın. Alternatif olarak, Azure Bilişsel Arama geçiş yapmayı da göz önünde bulundurun.

Büyük veri araçları

Büyük veri araçları, yazılım sistemleri arasında veri akışının otomasyonunu sağlar. Ölçeklenebilir, sağlam ve kolaylaştırılmış veri yönlendirme grafiklerinin yanı sıra sistem aracılık mantığını destekler. Bunlar canlı veri akışı işlem hatları ve akış uygulamaları oluşturmak için kullanılır. Azure'da Nifi ve Apache Kafka'nın gereksinimlerinize nasıl uygun olabileceğini öğrenin.

Desteklenebilirlik seçenekleri

Uygulama türünüz için olası seçenekleri belirlemek için aşağıdaki tabloyu kullanın. AKS ve Sanal Makineler tüm uygulama türlerini destekler, ancak ekibinizin daha fazla sorumluluk almasını gerektirir.

Azure Spring Apps App Service Java SE App Service Tomcat App Service JBoss EAP Azure Container Apps AKS Sanal Makineler
Toplu iş veya zamanlanmış işler
Sanal ağ tümleştirmesi
Sunucusuz
Konteyner kullanımı
Azure bölgesi kullanılabilirliği Ayrıntılar Ayrıntılar Ayrıntılar Ayrıntılar Ayrıntılar Ayrıntılar Ayrıntılar

Ayrıca bu karar ağacına bakın.

Diyagramda Azure hizmetlerinde Java için bir karar ağacı gösterilmektedir.

Bu diyagramın Visio dosyasını indirin.

Java uygulamalarını derleme veya geçirme

Java uygulamalarını derlemek veya geçirmek için uygulamalarınızın Java platformunu tanımlayın. Bazı popüler platformlar Java SE, Jakarta EE ve MicroProfile'dır.

Java SE

Java Platformu, Standard Sürümü (Java SE), masaüstü ve sunucu ortamları için taşınabilir kod geliştirme ve dağıtmaya yönelik bir bilgi işlem platformudur. Java SE üzerinde oluşturulan popüler projeler arasında Spring Boot, Spring Cloud, Spring Framework ve Apache Tomcat bulunur.

Jakarta EE

Jakarta EE, buluta özel kurumsal Java'nın açık kaynak geleceğidir. Java SE'nin kapsamını dağıtılmış bilgi işlem ve web hizmetleri gibi kurumsal özelliklerle genişleten bir dizi belirtimdir. Jakarta EE uygulamaları başvuru çalışma zamanlarını çalıştırır. Bu çalışma zamanları mikro hizmetler veya uygulama sunucuları olabilir. Uygulamanın dağıttığı bileşenlerin işlemlerini, güvenliğini, ölçeklenebilirliğini, eşzamanlılığını ve yönetimini işler.

MicroProfile

MicroProfile projesi, geliştiricilerin Enterprise Java buluta özel mikro hizmetler oluşturmasına yardımcı olmak için tasarlanmış bir belirtim koleksiyonu sağlar. Quarkus ve Open Liberty , MicroProfile'ın popüler uygulamalarıdır.

Derleme veya geçirme özeti

Aşağıdaki tabloda uygulama türüne ve Azure hizmetine göre derleme veya geçiş bilgileri sağlanmaktadır.

Tür Java SE MicroProfile JarkartaSE
Sanal Makine IaaS
VMware Tanzu IaaS
Azure Kubernetes Service Kapsayıcı
Red Hat OpenShift Kapsayıcı
Azure Container App PaaS
JBoss EAP PaaS App Service
Apache Tomcat PaaS App Service
Java SE PaaS App Service
Azure Spring Apps PaaS

Katkıda Bulunanlar

Bu makale Microsoft tarafından yönetilir. Başlangıçta aşağıdaki katkıda bulunanlar tarafından yazılmıştır.

Asıl yazarlar:

Genel olmayan LinkedIn profillerini görmek için LinkedIn'de oturum açın.

Sonraki adımlar