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:
- Spring uygulamaları:
- Java EE uygulamaları
- Web uygulamaları
- Toplu/zamanlanan işler
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 Container Apps | AKS | Sanal Makineler |
---|---|---|---|---|---|---|
Spring Boot/JAR uygulamaları | ✔ | ✔ | ✔ | ✔ | ||
Spring Cloud uygulamaları | ✔ | ✔ | ✔ | ✔ | ✔ | |
Web uygulamaları (WAR) | ✔ | ✔ | ✔ | ✔ | ✔ | |
Java EE uygulamaları (WAR | EAR) | ✔ | ✔ | ✔ | ✔ | ||
Ticari uygulama sunucuları (Oracle WebLogic Server veya IBM WebSphere gibi) |
✔ | ✔ | ✔ | |||
Uygulama sunucusu düzeyinde kümeleme | ✔ | ✔ | ✔ | |||
Toplu/zamanlanan işler | ✔ | ✔ | ✔ | |||
Sanal Ağ Tümleştirmesi/Karma Bağlantı | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
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 |
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 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) |
👉 | 👉 | 👉 | |
Java çalışma zamanını güncelleştirme (güvenlik açığı düzeltmesi dahil) |
👉 | 👉 | 👉 | |
Kubernetes güncelleştirmelerini tetikleme (Azure tarafından el ile tetikleyici ile gerçekleştirilir) |
Yok | 👉 | Yok | |
Olağanüstü Durum Kurtarma | 👉 | 👉 | ||
Geriye dönük uyumluluk sağlamayan Kubernetes API değişikliklerini düzeltme | Yok | 👉 | 👉 | Yok |
Kapsayıcı temel görüntüsünü güncelleştirme (güvenlik açığı düzeltmesi dahil) |
Yok | 👉 | 👉 | Yok |
İşletim sistemini güncelleştirme (güvenlik açığı düzeltmesi dahil) |
👉 | |||
Başarısız örnekleri algılama ve yeniden başlatma | 👉 | |||
Güncelleştirmeler için boşaltma ve yeniden başlatma uygulama | 👉 | |||
Altyapı yönetimi | 👉 | 👉 | 👉 | |
İ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ğı Azure’a bağlama. 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.
Hedef → Uygulama türü ↓ |
Uygulama Hizmet Java SE |
Uygulama Hizmet Tomcat |
Uygulama Hizmet JBoss EAP |
Azure Kapsayıcı Uygulamalar |
AKS | Sanal Makineler |
---|---|---|---|---|---|---|
Spring Boot/ JAR uygulamaları |
Yok | Yok | Yok | Yok | Yok | Yok |
Spring Cloud/ uygulamalar |
Yok | Yok | Yok | Yok | kılavuz planlandı |
kılavuz planlandı |
Web uygulamaları Tomcat üzerinde |
Yok | kılavuz | Yok | kılavuz | kılavuz | kılavuz planlandı |
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 |
AKS | Sanal Makineler |
---|---|---|---|---|---|---|
WildFly/ JBoss AS |
Yok | Yok | kılavuz | Yok | kılavuz | kılavuz planlandı |
Oracle WebLogic Server | Yok | Yok | kılavuz | Yok | kılavuz | kılavuz |
IBM WebSphere | Yok | Yok | kılavuz | Yok | kılavuz | kılavuz planlandı |
Red Hat JBoss EAP | Yok | Yok | kılavuz | Yok | kılavuz | kılavuz |