Java uygulamalarını Azure'a geçirme

Bu makalede, Java uygulamalarını Azure'a geçirmek için önerilen stratejilere genel bir bakış sağlanır.

Bu geçiş kılavuzu, başlıca Azure üzerinde Java senaryolarını ele alıp yüksek düzey planlama önerileri ve önemli noktalar sunmak için tasarlanmıştır. Azure ekibinde Microsoft Java ile belirli bir Java uygulaması geçiş senaryosını tartışmak isterseniz aşağıdaki anketi doldurun; bir temsilci sizinle iletişime geçer.

Uygulama türünü tanımlama

Java uygulamanız için bir bulut hedefi seçmeden önce uygulamanın türünü belirlemeniz gerekir. Çoğu Java uygulaması aşağıdaki türlerden birine aittir:

Bu türler aşağıdaki bölümlerde açıklanmıştır.

Spring Boot/JAR uygulamaları

Yeni uygulamaların çoğu doğrudan komut satırından çağrılır. Bu uygulamalar da web isteklerini işler ancak HTTP isteği işlemek için bir uygulama sunucusu kullanmak yerine HTTP iletişimini ve diğer tüm bağımlılıkları doğrudan uygulama paketinde sunar. Bu tür uygulamalar genellikle Spring Boot, Dropwizard, Micronaut, MicroProfile ve Vert.x gibi çerçevelerle oluşturulur.

Bu uygulamalar .jar uzantılı arşivler (JAR dosyaları) halinde paketlenir.

Spring Cloud ara yazılım modüllerini kullanan Spring 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ş olanaklarına uygun şekilde oluşturulur ve tam otomatik dağıtım makineleri tarafından bağımsız olarak dağıtılabilir. Bu hizmetlerin merkezi yönetiminin minimum düzeyde olması, farklı programlama dillerinde yazılabilir ve farklı veri depolama teknolojilerini kullanabilir. Bu hizmetler genellikle Spring Cloud gibi çerçeveler kullanılarak oluşturulur.

Bu hizmetler .jar uzantılı (JAR dosyaları) çoklu uygulamalar halinde paketlenir.

Java EE uygulamaları

Java EE uygulamaları (J2EE uygulamaları veya daha yakın zamanda Jakarta EE uygulamaları olarak da adlandırılır) web uygulamalarının öğelerinin bazılarını, tümünü veya hiçbirini içeremez. Bu uygulamalar Jakarta EE belirtimi tarafından tanımlanan çok daha fazla bileşen de içerebilir ve kullanabilir.

Java EE uygulamaları .ear uzantılı arşivler (EAR dosyaları) veya .war uzantılı arşivler (WAR dosyaları) olarak paketlenebilir.

Java EE uygulamaları Java EE uyumlu uygulama sunucularına (Oracle WebLogic Server, IBM WebSphere, JBoss EAP, GlassFish, Payara ve diğerleri gibi) dağıtılmalıdır.

Yalnızca Java EE belirtimi tarafından sağlanan özellikleri (app-server-independent uygulamalar) kullanan uygulamalar bir uyumlu uygulama sunucusundan bir diğerine geçirilebilir. Uygulamanız belirli bir uygulama sunucusuna bağımlıysa (app-server-dependent), ilgili uygulama sunucusunu barındırmanıza izin veren bir Azure hizmeti hedefi seçmeniz gerekebilir.

Web uygulamaları

Web uygulamaları bir Servlet kapsayıcısında çalışır. Bu uygulamalardan bazıları doğrudan servlet API'lerini kullanırken, birçoğu Apache Struts, Spring MVC, JavaServer Faces (JSF) gibi servlet API'lerini kapsülleyen diğer çerçeveleri kullanır.

Web uygulamaları .war uzantılı arşivler (WAR dosyaları) halinde paketlenir.

Toplu/zamanlanan işler

Bazı uygulamalar kısa bir süre boyunca çalışacak, belirli bir iş yükünü yürütecek ve istek veya kullanıcı girişini beklemek yerine kapatılacak şekilde tasarlanır. Bu tür işlerin bazen bir kez veya zamanlanmış aralıklarla düzenli olarak çalışması gerekir. Şirket içinde bu tür işler genellikle bir sunucudan crontab komutuyla çağrılır.

Bu uygulamalar .jar uzantılı arşivler (JAR dosyaları) halinde paketlenir.

Not

Uygulamanız, zamanlanmış görevleri çalıştırmak için bir zamanlayıcı (Spring Batch veya Quartz gibi) kullanıyorsa bu tür görevleri uygulamanın dışına almanız önerilir. Uygulamanızın bulutta birden fazla örnek olacak şekilde ölçeklendirilmesi halinde aynı iş birden fazla kez çalışacaktır. Ayrıca zamanlama mekanizmanız konağın yerel saat dilimini kullanıyorsa uygulamanız farklı bölgelerde ölçeklendirildiğinde istenmeyen davranışlarla karşılaşabilirsiniz.

Hedef Azure hizmeti hedefini seçme

Aşağıdaki bölümlerde uygulama gereksinimlerinizi karşılayan hizmet hedefleri ve kapsadıkları sorumluluklar gösterilmektedir.

Barındırma seçenekleri kılavuzu

Uygulama türünüz için olası hedefleri belirlemek için aşağıdaki kılavuzu kullanın. Gördüğünüz gibi Azure Kubernetes Service (AKS) ve Azure Sanal Makineler tüm uygulama türlerini destekler, ancak bir sonraki bölümde gösterildiği gibi ekibinizin daha fazla sorumluluk almasını gerektirir.

Hedef →

Uygulama türü ↓
Uygulama
Hizmet
Java SE
Uygulama
Hizmet
Tomcat
Uygulama
Hizmet
JBoss EAP
Azure
Spring
Uygulamalar
Azure Container Apps AKS Sanal
Makineler
Spring Boot/JAR uygulamaları
Spring Cloud uygulamaları
Web uygulamaları
Java EE uygulamaları
Ticari uygulama sunucuları
(Oracle WebLogic Server veya IBM WebSphere gibi)
Yerel dosya sisteminde uzun süreli kalıcılık
Uygulama sunucusu düzeyinde kümeleme
Toplu/zamanlanan işler
Sanal Ağ Tümleştirmesi/Karma Bağlan
Azure bölgelerine göre kullanılabilirlik Ayrıntılar Ayrıntılar Ayrıntılar Ayrıntılar Ayrıntılar Ayrıntılar Ayrıntılar

Devam eden sorumluluk tablosu

Her bir hedefin geçiş sonrasında ekibinize yüklediği sorumluluğu anlamak için aşağıdaki tabloyu kullanın.

ile Azure belirtilen görevler tamamen veya çoğunlukla Azure tarafından yönetilir. Ekibiniz ile 👉belirtilen görevlerde sürekli olarak sorumludur. Bu tür sorumlulukların yerine getirilmesi için sağlam ve yüksek oranda otomatikleştirilmiş bir süreç tasarlamanız önerilir.

Not

Sorumluluklar bu listeyle sınırlı değildir.

Hedef →

Görev ↓
Uygulama
Hizmet
Azure
Spring
Uygulamalar
Azure
Kapsayıcı
Uygulamalar
AKS Sanal
Makineler
Kitaplıkları güncelleştirme
(güvenlik açığı düzeltmesi dahil)
👉 👉 👉 👉 👉
Uygulama sunucusunu güncelleştirme
(güvenlik açığı düzeltmesi dahil)
Azure Azure 👉 👉 👉
Java çalışma zamanını güncelleştirme
(güvenlik açığı düzeltmesi dahil)
Azure Azure 👉 👉 👉
Kubernetes güncelleştirmelerini tetikleme
(Azure tarafından el ile tetikleyici ile gerçekleştirilir)
Yok Azure Azure 👉 Yok
Olağanüstü Durum Kurtarma Azure Azure 👉 👉 Azure
Geriye dönük uyumluluk sağlamayan Kubernetes API değişikliklerini düzeltme Yok Azure 👉 👉 Yok
Kapsayıcı temel görüntüsünü güncelleştirme
(güvenlik açığı düzeltmesi dahil)
Yok Azure 👉 👉 Yok
İşletim sistemini güncelleştirme
(güvenlik açığı düzeltmesi dahil)
Azure Azure Azure Azure1 👉
Başarısız örnekleri algılama ve yeniden başlatma Azure Azure Azure Azure 👉
Güncelleştirmeler için boşaltma ve yeniden başlatma uygulama Azure Azure Azure Azure 👉
Altyapı yönetimi Azure Azure 👉 👉 👉
İzleme ve uyarı yönetimi 👉 👉 👉 👉

1 Bazı güvenlik güncelleştirmeleri otomatik olarak yapılmayan düğüm yeniden başlatmaları gerektirebilir. Daha fazla bilgi için bkz . Azure Kubernetes Service'te (AKS) Linux düğümlerine güvenlik ve çekirdek güncelleştirmelerini uygulama.

Servlet kapsayıcısını (Spring Boot gibi) uygulamanızla birlikte dağıtırsanız bunu bir kitaplık olarak kabul etmeniz gerekir ve sorumluluk her zaman size aittir.

Şirket içi bağlantıyı sağlama

Uygulamanızın şirket içi hizmetlerinizden birine erişmesi gerekiyorsa Azure’ın bağlantı hizmetlerinden birini sağlamalısınız. Daha fazla bilgi için bkz. Şirket içi ağını Azure'a bağlamak için bir çözüm seçme. Alternatif olarak şirket içi kaynaklarınızın kullanıma sunduğu genel kullanıma açık API’leri kullanmak için uygulamanızı yeniden düzenlemeniz gerekir.

Bu işlemi geçişi başlatmadan önce tamamlamalısınız.

Geçerli kapasiteyi ve kaynak kullanımını belirleme

Hem geçerli üretim sunucularının donanımını hem de ortalama ve en yüksek istek sayılarını ve kaynak kullanımını belgeleyin. Hizmet hedefinde kaynak sağlamak için bu bilgilere ihtiyacınız olacaktır.

Geçiş kılavuzu

Uygulama türüne ve hedeflenen Azure hizmeti hedefine göre geçiş yardımına ulaşmak için aşağıdaki tabloları kullanın.

Java uygulamaları

Java uygulamanızın türünü bulmak için satırları, uygulamanızı barındıracak Azure hizmeti hedefini bulmak için de sütunları kullanın.

Bir JBoss EAP uygulamasını App Service'te Tomcat'e geçirmek istiyorsanız, önce Java EE uygulamasını Tomcat üzerinde çalışan Java Web Apps'e (servlets) dönüştürün, ardından aşağıda belirtilen yönergeleri izleyin.

Tomcat'te bir Web uygulamasını Azure Spring Apps'e geçirmek istiyorsanız, önce uygulamayı Spring Cloud uygulamalarına dönüştürün, ardından aşağıda belirtilen yönergeleri izleyin.

Hedef →

Uygulama türü ↓
Uygulama
Hizmet
Java SE
Uygulama
Hizmet
Tomcat
Uygulama
Hizmet
JBoss EAP
Azure
Kapsayıcı
Uygulamalar
Azure
Spring
Uygulamalar
AKS Sanal
Makineler
Spring Boot/
JAR uygulamaları
Yok Yok Yok Yok kılavuz Yok Yok
Spring Cloud/
uygulamalar
Yok Yok Yok Yok kılavuz kılavuz
planlandı
kılavuz
planlandı
Web uygulamaları
Tomcat üzerinde
Yok kılavuz Yok kılavuz Yok kılavuz kılavuz
planlandı

Java EE uygulamaları

Belirli bir uygulama sunucusunda çalışan Java EE uygulamanızın türünü bulmak için aşağıdaki satırları kullanın. Uygulamanızı barındıracak Azure hizmeti hedefini bulmak için sütunları kullanın.

Hedef →

Uygulama sunucusu ↓
Uygulama
Hizmet
Java SE
Uygulama
Hizmet
Tomcat
Uygulama
Hizmet
JBoss EAP
Azure
Kapsayıcı
Uygulamalar
Azure
Spring
Uygulamalar
AKS Sanal
Makineler
WildFly/
JBoss AS
Yok Yok kılavuz Yok Yok kılavuz kılavuz
planlandı
Oracle WebLogic Server Yok Yok kılavuz Yok Yok kılavuz kılavuz
IBM WebSphere Yok Yok kılavuz Yok Yok kılavuz kılavuz
planlandı
Red Hat JBoss EAP Yok Yok kılavuz Yok Yok kılavuz kılavuz

Ayrıca bkz.