Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, Java uygulamalarını değerlendirmek, düzeltmek, kapsayıcıya almak ve Azure Container Apps'e dağıtmak için GitHub Copilot uygulama modernleştirmesini kullanmayı öğreneceksiniz. GitHub Copilot uygulama modernleştirmesi, GitHub Copilot'ı karmaşık yükseltme ve geçiş adımlarını otomatikleştirme gibi OpenRewrite açık kaynak araçlarla birleştiren yapay zeka destekli bir yardımcıdır.
Araç hem Maven hem de Gradle projelerini destekler, 8, 11, 17 ve 21 Java sürümleri arasındaki yükseltmeleri hedefler ve Spring Boot uygulamalarını modernleştirmeye odaklanır. Yaygın geçiş senaryoları için önceden tanımlanmış görevler sağlar ve Azure Container Apps'te uygulama çalıştırmaya yönelik en iyi yöntemleri içerir.
Önkoşullar
- Aktif bir aboneliğe sahip bir Azure hesabı. Ücretsiz bir tane oluştur.
- Herhangi bir plan kapsamında etkin GitHub Copilot aboneliğine sahip bir GitHub hesabı.
- Aşağıdaki düzenleyicilerden biri:
-
Visual Studio Code en son sürümü. Sürüm 1.106 veya üzeri olmalıdır.
- Visual Studio Code'da GitHub Copilot. Kurulum yönergeleri için bkz. Visual Studio Code'da GitHub Copilot'ı ayarlama. Visual Studio Code'da GitHub hesabınızda oturum açtığınızdan emin olun.
- GitHub Copilot uygulama modernleştirme. Yüklemeden sonra Visual Studio Code'un yeniden başlatılması.
-
IntelliJ IDEA'nın en son sürümü. Sürüm 2023.3 veya üzeri olmalıdır.
- GitHub Copilot. Sürüm 1.5.59 veya üzeri olmalıdır. Daha fazla yönerge için bkz. IntelliJ IDEA'da GitHub Copilot'ı ayarlama. IntelliJ IDEA'da GitHub hesabınızda oturum açtığınızdan emin olun.
- GitHub Copilot uygulama modernleştirme. Yüklemeden sonra IntelliJ IDEA'nın yeniden başlatılması.
-
Visual Studio Code en son sürümü. Sürüm 1.106 veya üzeri olmalıdır.
- Java 21 veya üzeri.
- Java projeleri oluşturmak için Maven veya Gradle.
- Docker yüklü ve çalışıyor (kapsayıcıya alma için).
- Azure CLI yüklü ve yapılandırılmış.
Uyarı
Gradle kullanıyorsanız yalnızca Gradle sarmalayıcı sürüm 5 veya üzeri desteklenir. Kotlin Etki Alanına Özgü Dil (DSL) desteklenmez. İşlev My Tasks henüz IntelliJ IDEA için desteklenmiyor.
JDK ve çerçeve sürümlerini yükseltme
Azure Container Apps'e geçmeden önce Java uygulamanızın desteklenen ve güncel bir JDK sürümünde çalıştığından emin olun. JDK'nizi ve çerçevelerinizi yükseltmek önce sonraki geçiş adımlarının modern bir kod tabanını hedeflemesini sağlar.
JDK sürümünüzü yükseltmenin iki yolu vardır. Her iki yol da Visual Studio Code'daki kenar çubuğundan erişebileceğiniz GitHub Copilot uygulama modernleştirme bölmesini kullanır.
- HIZLI BAŞLANGıÇ bölümünde Çalışma Zamanını Ve Çerçeveleri Yükselt'i seçin.
- Alternatif olarak, GÖREVLER - Yükseltme Görevleri bölümünde Yükseltilmiş Java Çalışma Zamanı görevini çalıştırın.
Spring çerçevesini veya Microsoft dışı bir bağımlılığı yükseltmek için GÖREVLER - Yükseltme Görevleri bölümünde Java Framework'e Yükseltme görevini çalıştırın.
Azure Container Apps için bulut hazırlığını değerlendirme
Değerlendirme, kod tabanınızdaki buluta hazır olma güçlüklerini tanımlar ve bunların etkisini oranlar. Azure Container Apps için belirli öneriler sağlar.
Değerlendirmeyi yapılandırma
Değerlendirmeyi çalıştırmadan önce GitHub Copilot uygulama modernleştirme Değerlendirmesi bölmesinde Değerlendirmeyi Yapılandır'ı seçerek yapılandırın.
Azure Container Apps için aşağıdaki yapılandırmayı kullanın:
appcat:
- target:
- azure-container-apps
os:
- linux
mode: source-only
Değerlendirmeyi çalıştırma
Değerlendirmeyi çalıştırmak için aşağıdaki adımları kullanın:
Kenar çubuğunda GitHub Copilot uygulama modernleştirme bölmesini ve ardından DEĞERLENDIRME bölümünde Azure'a Geçir veya Değerlendirmeyi Çalıştır'ı seçin.
Aracı moduyla GitHub Copilot sohbet penceresi açılır ve modernleştirme değerlendiricisi çağrılır. Onaylamak için Devam'ı seçin.
Modernleştirme değerlendiricisi önce yerel ortamınızı doğrular. AppCAT ve bağımlılıkları yüklü değilse aracı bunları yüklemenize yardımcı olur. Yüklemeden sonra aracı, projenizi değerlendirmek için AppCAT'i çağırır. Bu adımın tamamlanması birkaç dakika sürebilir.
Değerlendirme tamamlandığında, modernleştirme değerlendiricisi Değerlendirme Raporu'nda buluta hazır olma sorunlarının kategorilere ayrılmış bir görünümünü oluşturur.
Değerlendirme raporunu yorumlama
Değerlendirme raporu kapsamlı analiz sonuçları sağlar. Rapor birkaç önemli bölümden oluşur:
- Uygulama Bilgileri: Java sürümü, çerçeveler, derleme araçları, proje yapısı ve hedef Azure hizmeti gibi temel bilgiler.
- Sorun Özeti: Kritiklik yüzdelerine sahip etki alanına göre kategorilere ayrılmış geçiş sorunlarına genel bakış.
- Dört sekme halinde düzenlenmiş Ayrıntılı Analiz:
- Sorunlar: Çözmeniz gereken buluta hazır olma ve Java yükseltme sorunlarının kategorilere ayrılmış listesi.
- Bağımlılıklar: Uygulama içinde bulunan tüm Java paketlenmiş bağımlılıkları.
- Teknolojiler: Analiz edilen uygulamada bulunan işleve göre gruplandırılmış teknolojiler.
- İçgörüler: Algılanan teknolojileri anlamanıza yardımcı olacak dosya ayrıntıları ve bilgileri.
Rapor, sorunları aşağıdaki kritiklik düzeylerine göre kategorilere ayırır:
| Kritiklik | Açıklama |
|---|---|
| Zorunlu | Azure Container Apps'e geçiş için düzeltmeniz gereken sorunlar. |
| Potansiyel | Geçişi etkileyebilecek ve gözden geçirilmesi gereken sorunlar. |
| Opsiyonel | Düşük etkili sorunlar. Bunların düzeltilmesi önerilir ancak isteğe bağlıdır. |
Bildirilen her sorunu genişleterek etkilenen dosyaların listesini ve sorun, bilinen çözümler ve destekleyici belgeleri içeren ayrıntılı bir açıklama görebilirsiniz.
Değerlendirme raporlarını yönetme
Uzantı, bulguları ekibinizle paylaşabilmeniz veya çalışma alanınızı düzenli tutabilmeniz için değerlendirme raporlarını içeri aktarmayı, dışarı aktarmayı ve silmeyi destekler.
- İçeri Aktarma: AppCAT CLI sonuçlarından, dışarı aktarılan rapordan veya uygulama bağlam dosyasından raporları içeri aktarmak için değerlendirme bölümünde İçeri Aktar'ı seçin.
- Dışarı Aktarma: Değerlendirme Raporu'na sağ tıklayın ve raporları başkalarıyla paylaşmak için Dışarı Aktar'ı seçin.
- Sil: Değerlendirme Raporu'na sağ tıklayın ve sil'i seçerek raporu kaldırın.
Geçiş sorunlarını düzeltme
Değerlendirmeyi tamamladıktan sonra, önceden tanımlanmış veya özel görevleri kullanarak tanımlanan sorunları düzeltin. GitHub Copilot uygulama modernleştirmesi iki yaklaşım sunar: yaygın geçiş desenlerini ele alan önceden tanımlanmış görevler ve kuruluşunuzun özel gereksinimleri için tanımladığınız özel görevler.
AppModernization aracısını seçin
AppModernization aracısı, Java uygulama geçişi ve modernleştirme görevleri için en iyi deneyimi sağlar. Bunu seçmek için:
- Etkinlik Çubuğu'ndaki sohbet simgesini seçerek Copilot sohbet penceresini açın.
- Sohbet penceresinde, sohbet giriş kutusunun üst kısmındaki aracı seçici açılan menüsünü bulun ve listeden AppModernization'ı seçin.
Uyarı
Visual Studio Code'da uygulama modernleştirmesi, en iyi sonuçlar için varsayılan olarak önerilen modelin seçili olduğu özel aracıyı kullanır AppModernization . Aracı menüsünden Özel Aracıları Yapılandır'ı seçerek modeli değiştirebilirsiniz.
AppModernization aracısı seçiliyken, geçiş görevlerini gerçekleştirmek için basit, doğal dil istemlerini kullanın:
-
Veritabanı geçişi:
migrate to Managed Identity for Azure SQL Database -
Depolama geçişi:
migrate from AWS S3 to Azure Storage Blob -
Mesajlaşma geçişi:
migrate from RabbitMQ to Azure Service Bus -
Gizli yönetimi:
migrate secrets to Azure Key Vault -
Kimlik doğrulaması geçişi:
migrate to Microsoft Entra ID authentication
Önceden tanımlanmış geçiş görevlerini çalıştırma
GitHub Copilot uygulama modernleştirme özelliği, Azure Container Apps geçişleri için önceden tanımlanmış aşağıdaki görevleri destekler:
| Görev | Açıklama |
|---|---|
| Spring RabbitMQ'dan Azure Service Bus'a | RabbitMQ ile Spring AMQP/JMS'yi Azure Service Bus'a dönüştürerek mesajlaşma desenlerini korur ve güvenli kimlik doğrulaması sağlar. |
| Veritabanı Geçişi için Yönetilen Kimlikler | Kod tabanınızı, Azure SQL Server, Azure MySQL Veritabanı, Azure PostgreSQL Veritabanı, Azure Cosmos DB üzerindeki Cassandra API ve Azure Cosmos DB'deki MongoDB ile Yönetilen Kimlik doğrulaması için hazırlar. |
| Kimlik Bilgisi Geçişi için Yönetilen Kimlikler | Java uygulamalarınızı Azure Event Hubs ve Azure Service Bus gibi mesajlaşma hizmetleri için Azure Yönetilen Kimlik kimlik doğrulamasını kullanacak şekilde dönüştürerek bağlantı dizelerini ortadan kaldırır. |
| AWS S3'tan Azure Blob Depolama'ya | AWS S3 ile etkileşim kuran kodu Azure Depolama Blobu ile çalışan koda dönüştürür ve aynı semantiği korur. |
| Yerel dosyada günlüğe kaydetme | Dosya tabanlı günlüğü konsol tabanlı günlüğe dönüştürerek Azure İzleyici ile tümleştirmeye hazır hale getirir. |
| Azure Depolama Dosya paylaşım birimlerine yerel dosya G/Ç işlemleri | Yerel dosya okuma ve yazma işlemlerini birleşik bağlama yolu erişimine dönüştürerek Azure Container Apps'te Depolama Dosya paylaşımı dağıtımlarını etkinleştirir. Daha fazla bilgi için bkz. Azure Container Apps depolama bağlamalarını kullanma. |
| Java Mail'den Azure İletişim Hizmeti'ne | SMTP üzerinden posta gönderen uygulamaları, Azure Container Apps barındırma ile tam olarak uyumlu olan Azure İletişim Hizmetleri'ni kullanacak şekilde dönüştürür. |
| Azure Key Vault'a Gizli Bilgiler ve Sertifikaların Yönetimi | Sabit kodlanmış gizli dizileri ve yerel TLS/mTLS sertifikalarını Azure Key Vault'a geçirir. Daha fazla bilgi için bkz: Azure Container Apps'te gizli bilgileri yönetme. |
| Microsoft Entra Id kullanıcı kimlik doğrulaması | Kimlik doğrulaması için yerel kullanıcı kimlik doğrulama mekanizmalarını (LDAP tabanlı gibi) Microsoft Entra Id'ye geçirmektedir. Daha fazla bilgi için bkz . Azure Container Apps'te kimlik doğrulaması ve yetkilendirme. |
| SQL Diyalekt: Oracle-PostgreSQL | Oracle'a özgü SQL sorgularını, veri türlerini ve özel işlevleri PostgreSQL için Azure Veritabanı ile kullanılmak üzere PostgreSQL eşdeğerlerine dönüştürür. |
| AWS Secret Manager'dan Azure Key Vault'a | Gizli bilgi yönetiminin tüm yönleri AWS Secrets Manager'dan Azure Key Vault'a dönüştürülür. |
| ActiveMQ'den Azure Service Bus'a | ActiveMQ ileti üreticilerini, tüketicilerini, bağlantı fabrikalarını ve kuyruk/konu etkileşimlerini Azure Service Bus eşdeğerlerine dönüştürür. |
| AWS SQS'den Azure Service Bus'a | SQS'ye özgü kod yapılarını Azure Service Bus karşılıklarına çevirerek mesajlaşma semantiğini korur. |
Değerlendirmeden önceden tanımlanmış bir görevi uygula
- Değerlendirme Raporu'nda, algılanan bir sorun altında istenen çözümü seçin ve Görevi Çalıştır'ı seçin.
- Agent Modu ile Copilot sohbet penceresi açılır. Aracı
plan.mdveprogress.mdoluşturur, devam etmeden önce planı gözden geçirebilirsiniz. - Geçiş işlemini onaylamak ve başlatmak için el ile giriş
continueyapın. - Kod değişiklikleri yapmadan önce, aracı sürüm kontrol sistemi durumunu denetler ve yeni bir dal oluşturur.
- Araç kullanımını onaylamak ve kod değişikliklerinin bitmesini beklemek için art arda Devam'ı seçin veya girin.
Doğrulama sonuçlarını gözden geçirme
Kod değişikliklerini tamamladıktan sonra aracı, aşağıdaki denetimleri içeren bir otomatik doğrulama döngüsü çalıştırır:
- Validate-CVE'ler: Geçerli bağımlılıklardaki Yaygın Güvenlik Açıklarını ve Etkilenmeleri algılar ve bunları düzeltir.
- Build-Project: Derleme hatalarını düzeltmeye çalışır.
- Tutarlılık Doğrulama: İşlevsel tutarlılık için kodu analiz eder.
- Çalıştırma Testi: Birim testlerini çalıştırır ve hataları düzeltmek için otomatik olarak bir plan oluşturur.
- Tamlık-Doğrulama: İlk kod geçişinde kaçırılan geçiş öğelerini yakalar ve bunları düzeltir.
Tüm denetimler tamamlandıktan sonra geçiş özetini oluşturmak için girin continue . Kod değişikliklerini gözden geçirin ve Koru seçerek onaylayın.
Özel görevler oluşturma
Önceden tanımlanmış görevlere ek olarak, kuruluşunuzun belirli geçiş desenlerine göre özel görevler oluşturabilirsiniz. Özel görevler, geçiş aracısını yönlendirmek için Git commit'lerinden, dış bağlantılardan veya metin dosyalarından başvuruları kullanır.
Git commit'lerinden özel görev oluşturma
Etkinlik kenar çubuğunda GitHub Copilot uygulama modernleştirme uzantısı bölmesini açın, GÖREVLER bölümünün üzerine gelin ve Özel Görev Oluştur'u seçin.
Açılan
task.mddosyaya görev adını ve görev istemini girin.Referans Ekle'yi ve ardından açılır iletişim kutusunda Git taahhütlerini seçin.
İlgili işlemeyi arayıp seçin ve ardından Tamam'ı seçin.
Kaydetseçeneğini seçin. Özel göreviniz artık GÖREVLER - Görevlerim bölümünde görünür.
Dış bağlantılardan ve metin dosyalarından özel görev oluşturma
task.mdDosyayı açın ve görev adını ve istemini girin. Örneğin:-
Görev Adı:
Expose health endpoint via Spring Boot Actuator -
Görev İstemi:
You are a Spring Boot developer assistant, follow the Spring Boot Actuator documentation to add basic health endpoints for Azure Container Apps deployment.
-
Görev Adı:
Başvuru Ekle'yi seçin, Dış bağlantılar'ı seçin ve ardından URL başvuruyu yapıştırın. Başvuru Ekle'yi yeniden seçin, Metin Dosyaları'na tıklayın ve ardından ek yönergeler içeren bir dosya ekleyin.
Görevi oluşturmak için Kaydet'i seçin.
Özel görevleri paylaşma
Görev klasörünü paylaşarak özel görevleri diğer ekip üyeleriyle paylaşabilirsiniz.
Özel bir görevi paylaşmak için altındaki klasörü .github/appmod/custom-tasks kopyalayın ve hedeflenen alıcıyla paylaşın. Alıcı görev klasörünü dizine .github/appmod/custom-tasks yapıştırır ve uzantı bölmesinde Görevi Yenile'yi seçer.
Özel görev çalıştırma
Görev dosyasının alt kısmındaki Çalıştır'ı seçin veya GÖREVLER - Görevlerim bölümünde görevinizi bulun ve Görevi Çalıştır'ı seçin. Copilot sohbet penceresi Aracı Modu'nda açılır ve geçiş iş akışını otomatik olarak çalıştırır.
Uygulamanız oracle veritabanı kullanıyorsa sonraki bölüme geçin. Aksi takdirde uygulamanızı kapsayıcıya alma bölümüne atlayın.
Oracle'dan PostgreSQL'e geçiş
Uyarı
Bu bölüm yalnızca uygulamanız oracle veritabanı kullanıyorsa geçerlidir. Uygulamanız Oracle kullanmıyorsa Uygulamanızı kapsayıcıya alma bölümüne atlayın.
GitHub Copilot uygulama modernleştirmesi, Oracle'dan PostgreSQL için Azure Veritabanı senaryosuna aşağıdakiler gibi ayrılmış bir geçiş görevi sağlar:
- Yapay zeka destekli veritabanı geçiş araçları: Daha fazla bilgi için bkz. Visual Studio Code için PostgreSQL uzantısı nedir?.
- Uygulama kodunda akıllı SQL dönüştürme: GitHub Copilot uygulama modernleştirmesinde yerleşik SQL dönüştürme işlevselliği, birleşik bir görev iş akışının parçası olarak sorunsuz bir şekilde tümleştirilir.
Oracle to PostgreSQL geçiş görevini kullanma
Uygulama değerlendirmesini Azure Container Apps için bulut hazırlığını değerlendirme bölümünde açıklandığı gibi çalıştırın.
Değerlendirme tamamlandıktan sonra raporu gözden geçirin. Uygulamanız Oracle kullanıyorsa rapor, Oracle DB'den PostgreSQL'e geçiş varsayılan çözümüyle Oracle ile ilgili bir Veritabanı Geçişi (Oracle) sorunu gösterir.
İsteğe bağlı olarak,
coding_notes.md'nin.github/postgre-migrations/*/results/application_guidance/klasöründe bulunup bulunmadığını denetleyin. Varsa, uygulama modernleştirmesi daha kaliteli SQL dönüştürmesi için bu notlara başvurur. Değilse, PostgreSQL Visual Studio Code uzantısını kullanarak bunları oluşturmak için veritabanı ekibinize başvurun.Geçişi yürütmek için Görevi Çalıştır'ı seçin.
Uygulamanızı konteynerleştirin
Kod geçişini tamamladıktan sonra Java uygulamanızı azure container apps'e dağıtıma hazırlamak için kapsayıcıya ekleyin.
Docker'ın yüklü ve çalışır durumda olduğundan emin olun.
Visual Studio Code'da taşınmış projenizi açın.
Etkinlik kenar çubuğunda GitHub Copilot uygulama modernleştirme uzantısı bölmesini açın.
Görevler bölümünde Java'yı açın, ardından Görevleri Kapsayıcıya Alma'yı açın ve Uygulamayı Kapsayıcıya Ekle'yi seçin.
İstendiğinde Devam'ı seçerek her araç eylemini onaylayın.
Copilot aşağıdaki adımları izler:
- Docker'ın yüklenip yüklenmediğini ve çalıştığını denetler.
- Uygulama kodunun bir kapsayıcıda çalışmaya hazır olup olmadığını denetler.
- Her proje için bir Dockerfile oluşturur.
- Her proje için Docker görüntüleri oluşturur.
- Konteynerleştirme sonuçlarının özetini oluşturur.
Uyarı
En iyi sonuçlar için uzantının aracı ayarlarında gösterilen en son önerilen modeli kullanın. Kapsayıcı oluşturma hatalarını düzeltmek için Copilot'un birkaç yinelemesi gerekebilir.
Kapsayıcı araçları hakkında daha fazla bilgi için GitHub'daki kapsayıcılaştırma yardımı deposuna bakın.
Azure Container Apps'a dağıtım
Uygulamanızı kapsayıcıya aldıktan sonra Azure Container Apps'e dağıtın.
Visual Studio Code'da taşınmış projenizi açın.
Etkinlik kenar çubuğunda GitHub Copilot uygulama modernleştirme uzantısı bölmesini açın.
Görevler bölümünde Java'yı açın, ardından Dağıtım Görevleri'ni açın ve aşağıdaki dağıtım seçeneklerinden birini belirleyin:
- Mevcut Azure Altyapısına Dağıtma: Copilot mevcut kaynak grubunuzu ister ve ilgili kaynaklara dağıtır.
- Altyapı Sağlama ve Azure'a Dağıtma: Copilot yeni Azure kaynakları oluşturur ve projenizi dağıtır.
İstendiğinde Devam'ı seçerek her araç eylemini onaylayın ve abonelik ve kaynak grubu gibi gerekli bilgileri sağlayın.
Copilot aşağıdaki adımları izler:
- Dağıtım hedefi, proje bilgileri, Azure kaynak mimarisi, Azure kaynakları ve yürütme adımlarını içeren bir dağıtım planı markdown dosyası oluşturur.
- Plandaki yürütme adımlarını izler.
- Dağıtım hatalarını düzeltir.
- Dağıtımın sonuçlarını açıklayan bir özet dosyası oluşturur.
Uyarı
En iyi sonuçlar için uzantının aracı ayarlarında gösterilen en son önerilen modeli kullanın. Copilot'ın dağıtım hatalarını düzeltmesi birkaç yineleme alabilir.
Geçiş sonrası en iyi yöntemler
Java uygulamanızı Azure Container Apps'e geçirdikten sonra aşağıdaki en iyi yöntemleri göz önünde bulundurun:
- Sistem durumu yoklamalarını yapılandırma: Azure Container Apps'in uygulamanızın durumunu izlemesini sağlamak için sistem durumu yoklamalarını ayarlayın.
- Günlüğü ayarlama: Merkezi günlük toplama ve analiz için Azure İzleyici ile tümleştirmek üzere konsol tabanlı günlüğü yapılandırın.
- Ölçeklendirme kurallarını yapılandırma: Değişen iş yüklerini işlemek için HTTP trafiğine, CPU'ya, belleğe veya özel ölçümlere göre ölçeklendirme kuralları ayarlayın.
- Gizli dizileri yönetme: Hassas yapılandırma değerlerini güvenli bir şekilde depolamak ve bu değerlere erişmek için Azure Container Apps gizli dizi yönetimini veya Azure Key Vault'ı kullanın.
- CI/CD işlem hatlarını ayarlama: Sürekli tümleştirme ve teslim için GitHub Actions'ı veya Azure Pipelines'ı kullanarak dağıtım işlem hattınızı otomatikleştirin.
- Mavi-yeşil dağıtımları etkinleştir: Sıfır kesinti süresi dağıtımlarını uygulamak için revizyonları ve trafik bölmeyi kullanın.
- Özel etki alanlarını yapılandırma: Üretim trafiği için özel etki alanları ve sertifikalar ayarlayın.
- Ölçümler ve uyarılarla izleme: Uygulama durumunu ve performansını proaktif olarak izlemek için ölçümleri ve uyarıları kullanın.
- Alanlar arası yedekliliği etkinleştirme: Kullanılabilirlik alanları arasında yüksek kullanılabilirlik için bölge yedekliliğini yapılandırın.