Uçtan uca güvenlik, izleme ve otomasyon ile ölçeklendirme

Uygulamaları tasarlarken iş yükündeki değişikliklere uyum sağlamayı, beklenmeyen hatalardan kurtarmayı, güvenlik risklerini en aza indirmeyi vb. belirlememiz gerekir. Deneme ve hata yaklaşımıyla başlanabilir ancak bu, diğer kuruluş hedeflerinden zaman alır ve itibarımızı olumsuz yönde etkileyebilir. Azure, işleri en baştan almak için gereken mimari yönergeleri sağlar. Ayrıca en yeni güvenlik ve otomatik ölçeklendirmeden veri, mesajlaşma, önbelleğe alma, performans izleme ve otomasyon için destekleyici hizmetlere kadar ölçeklenebilir bir uygulama oluşturmak için ihtiyacınız olan her şeye sahipsiniz. Bu destekleyici hizmetlerin çoğu PostgreSQL, Redis, JMS ve Kafka gibi popüler açık kaynak yazılımlarını da temel alır, böylece özel çözümlere kilitlenmezsiniz.

'Platform Hizmetleri' başlığı ve bu makalede açıklanan hizmetlerin logolarını içeren diyagram.

Şimdi bazı önemli Azure hizmetleri ve özelliklerine ve bunları ölçeklenebilir Java uygulamaları oluşturmak için nasıl kullanabileceğinize göz atalım.

Veritabanları ve mesajlaşma gibi Java uygulamalarının özelliklerini genişletme

Azure, Java kodunuzu çalıştırmak için çeşitli seçenekler sunmanın yanı sıra veritabanı gereksinimlerinizi desteklemek için PostgreSQL için Azure Veritabanı, MySQL için Azure Veritabanı, MongoDB Atlas, Azure Cosmos DB gibi çok çeşitli tam olarak yönetilen hizmetler sunar. Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği. Azure Service Bus, Azure Event Hubs ve Confluent Cloud için Apache Kafka gibi seçeneklerle mesajlaşma için de aynı durum geçerlidir.

Azure Service Bus Premium katmanı, Java Mesajlaşma Hizmeti programlama modeli JMS'yi destekler. Uygulamalarınızın VM'lerde, Kubernetes'te veya tam olarak yönetilen PaaS hizmetlerinde çalıştığından bağımsız olarak, açık kaynak istemcileri, Azure Java SDK'ları, Spring starter'ları ve uygulama sunucusu tümleştirmelerini kullanarak bu tam olarak yönetilen veri ve mesajlaşma hizmetlerini hızla sağlayabilir ve kullanabilirsiniz. Hepsi Microsoft ve Azure'dan beklediğiniz uyumluluk, kullanılabilirlik ve güvenilirlik garantilerini sağlar. Birçok Java ve Spring geliştiricisi tercih ettikleri bulut hizmetlerine bağlantıları basitleştirmek için idiomatic kitaplıkları kullanmak ister. Microsoft, azure hizmetleriyle veri, mesajlaşma, önbellek, depolama, olay, dizin ve gizli dizi yönetimi arasında kolayca etkileşim kurmanızı sağlayan kitaplıkların, sürücülerin ve modüllerin kapsamlı bir listesini tutar. Daha fazla bilgi için Spring Cloud Azure geliştirici kılavuzuna bakın.

Spring Cloud Azure'ın özelliklerini ve ilişkili Azure hizmetlerini listeleyen diyagram.

Çeşitli Java kitaplıkları, sürücüleri ve Spring modülleri tarafından desteklenen özellik kategorilerini ve ilişkili Azure platform hizmetlerini gösteren diyagram.

Sıfır Güven - Güvenli ağ

Java uygulamalarınızı Azure'da kendi özel ağlarınızın temel yapı taşı olan azure Sanal Ağ dağıtarak güvenli bir şekilde sağlayabilirsiniz. Sanal ağlar, birçok azure kaynağının birbiriyle, İnternet ile ve şirket içi ağlarınızla sistemlerinizle güvenli bir şekilde iletişim kurmasını sağlar. Uygulamalarınızı ve destek arka uç hizmetlerinizi İnternet'ten yalıtmak ve özel ağlarınıza yerleştirmek için bir sanal ağ kullanabilirsiniz. Uygulamalarınız ve arka uç sistemleriniz için giriş ve çıkış için tam denetime sahip olduğunuzu varsayabilirsiniz.

Azure Spring Apps başvuru mimarisinin diyagramı.

Sıfır Güven - Uçtan uca güvenli iletişim

Çözüm mimarisinin bir parçası olarak güvenli iletişim uygulamak zor olabilir. Birçok şirket, sağlama ve yapılandırmayı otomatikleştirmek için sertifikalarını el ile döndürür veya kendi çözümlerini oluşturur. Yine de yetkisiz kopyalama veya veri aktarımı gibi veri sızdırma riskleri vardır.

Azure ile iletişimlerin güvenliğini uçtan uca sağlayabilir veya herhangi bir iletişim noktasında aktarım düzeyi güvenliğini sonlandırabilirsiniz. Ayrıca, iletişimlerin güvenliğini sağlamak için gereken tüm Azure kaynakları için sağlama ve yapılandırmayı otomatikleştirebilirsiniz. Azure Spring Apps'te nasıl çalıştığını görmek için bkz. Sıfır Güven ortamında Spring Boot uygulamaları için uçtan uca güvenli iletişim. İşlem, Java uygulamalarınızı çalıştırmak için kullanabileceğiniz diğer Azure işlem hizmetleri için benzerdir.

"Hiçbir zaman güvenme, her zaman doğrulama ve kimlik bilgisi içermeyen" ilkesine bağlı olarak Sıfır Güven bilinmeyen ve yönetilmeyen sertifikaları ortadan kaldırarak ve yalnızca bu sertifikalara erişim izni vermeden önce kimlik doğrulamasıyla paylaşılan sertifikalara güvenerek tüm iletişimlerin güvenliğini sağlamaya yardımcı olur. Bir sertifika yetkilisi tarafından verilen sertifikalar, genişletilmiş doğrulama sertifikaları, herhangi bir sayıda alt etki alanı için destek içeren joker sertifikalar veya geliştirme ve test ortamları için otomatik olarak imzalanan sertifikalar dahil olmak üzere her tür TLS/SSL sertifikasını kullanabilirsiniz.

Java veya Spring Boot uygulamaları Azure Key Vault'tan sertifikaları güvenli bir şekilde yükleyebilir (bundan sonra açıklanmaktadır). Azure Key Vault ile yanlışlıkla sızıntıyı azaltmak için sertifikaların depolanmasını ve dağıtılmasını denetleyebilirsiniz. Uygulamalar ve hizmetler, yönetilen kimlikleri, rol tabanlı erişim denetimini ve en düşük ayrıcalık ilkesini kullanarak sertifikalara güvenli bir şekilde erişebilir. Bu güvenli yükleme, Azure Key Vault JCA (Java Şifreleme Mimarisi) Sağlayıcısı kullanılarak desteklenir.

Spring Boot uygulamaları için güvenli uçtan uca iletişim mimarisinin diyagramı.

Sıfır Güven - Gizli dizileri yönetme

Birçok Java uygulaması URL'leri ve kimlik bilgilerini kullanarak destekleyici hizmetlere bağlanır. Kullanıma sunulduğunda hassas verilere yetkisiz erişim elde etmek için kullanılabilecek bilgiler. Bu tür bilgilerin bir uygulamaya eklenmesi, kod deposu aracılığıyla bulma da dahil olmak üzere birçok nedenden dolayı büyük bir güvenlik riski oluşturur. Birçok geliştirici ortam değişkenlerini kullanarak bu tür kimlik bilgilerini dışlar, böylece birden çok uygulama bunları yükleyebilir, ancak bu yalnızca kodun kendisinden yürütme ortamına riski kaydırabilir.

'Sıfır Güven - Azure Key Vault kullanarak gizli dizileri yönetme' başlığıyla ve bu bölümde açıklanan özelliklerin özetini içeren diyagram.

Azure Key Vault , gizli dizileri korumak için daha iyi, daha güvenli ve daha güvenli bir yol sağlar. Rol Tabanlı Erişim Denetimi 'ni (RBAC) ve erişimi sınırlamak için en düşük ayrıcalık ilkesini kullanarak uygulama gizli dizilerinin depolanması ve dağıtımı üzerinde tam denetim sağlar. Uygulama gizli dizileriniz üzerinde denetim sahibi olursunuz; yalnızca uygulamalarınıza gerektiğinde bunları kullanma izni verin. Uygulama başlatıldığında, gizli dizilere erişim izni vermeden önce, uygulama Microsoft Entra Kimliği ile kimlik doğrulaması yapar ve Azure Key Vault, Azure RBAC kullanarak yetkilendirme yapar. Azure Key Vault tam denetim özellikleri içerir ve iki hizmet katmanına sahiptir: Yazılım anahtarıyla şifrelenen Standart ve donanım güvenlik modülü (HSM) korumalı anahtarları içeren bir Premium katmanı.

Son kullanıcı kimlik doğrulaması ve yetkilendirme

Çoğu kurumsal Java uygulaması, tümleşik güvenlikle eksiksiz bir kimlik ve erişim yönetimi çözümü olan Microsoft Entra Id kullanarak uygulayabileceğiniz kullanıcı kimlik doğrulaması ve yetkilendirmesi gerektirir. Son kullanıcı hesapları, Microsoft Entra Id ve Azure Active Directory B2C kullanarak Facebook, Twitter veya Gmail'den kuruluş kimlikleri veya sosyal kimlikler olabilir. Java için Microsoft Kimlik Doğrulama Kitaplığı'nı veya Microsoft Entra için Spring Boot Starter'u kullanarak Microsoft Entra ID tabanlı çözümler uygulayabilirsiniz. ForgeRock, Auth0, Ping veya Okta gibi istediğiniz herhangi bir kimlik sağlayıcısını da kullanabilirsiniz.

Uçtan uca izleme

Azure ile Java uygulamalarınızı herhangi bir araç ve platformu kullanarak uçtan uca izleyebilirsiniz. Alternatif olarak, Azure İzleyici'nin bir özelliği olan Uygulama Analizler kullanarak uygulama performansı izleme (APM) dahil olmak üzere tam olarak yönetilen, yerel izleme uygulayabilirsiniz. Java, Spring ve Micrometer ve Spring Boot gibi çerçeveler için güçlü destek sağlayarak sorunları hızla belirleyip gidermenizi sağlar. Özellikler arasında canlı ölçüm akışı, istek hızı ve yanıt süresi izleme, olay izleme ve dış bağımlılık oranları bulunur. Azure'da veya şirket içinde çalışan Java uygulamalarınızın kullanılabilirliğini, performansını, güvenilirliğini ve kullanımını izlemek için ihtiyacınız olan her şey.

Azure portalında Azure İzleyici'deki günlükler ve ölçüm verileri üzerinde sorguları düzenlemek ve çalıştırmak için kullanılabilen Log Analytics'te günlükleri ve ölçümleri toplayarak uçtan uca izleyebilirsiniz. Bir kayıt kümesi döndüren bir sorgu yazabilir ve sonra bunları sıralamak, filtrelemek ve çözümlemek için Log Analytics'i kullanabilirsiniz. Alternatif olarak, istatistiksel analiz gerçekleştirmek ve sonuçları grafikte görselleştirmek için daha gelişmiş bir sorgu yazabilirsiniz; örneğin, belirli bir eğilimi tanımlamak için gerekebilir. Sorgularınızın sonuçlarıyla etkileşimli olarak çalışıyor veya günlük sorgusu uyarıları veya çalışma kitapları gibi diğer Azure İzleyici özellikleriyle kullanıyor olun, Log Analytics sorgularınızı yazmak ve test etmek için kullanabileceğiniz iyi bir araçtır.

Bu nedenle, Java uygulamalarını Azure'a getiren müşterilerin şirket içi uygulamalarını izlemek için kullandıkları APM araçlarını kullanmaya devam etmek isteyebileceğini fark ettik. Bu kullanımı desteklemek için New Relic, AppDynamics, Dynatrace ve Elastic ile işbirliği yaparak izleme çözümlerini Azure Uygulaması Service ve Azure Spring Apps ile tümleştirdik. İzleme aracıları kodunuzla yan yana çalışır ve aracıları sizin için yükler ve güncel tutarız. Azure Container Apps' e, Azure Kubernetes Service'e veya Sanal Makineler dağıttığınızda, uygulamalarınızla birlikte bu aracılardan herhangi birini (New Relic, AppDynamics, Dynatrace, Elastic ve Datadog dahil) çalıştırabilirsiniz, ancak bunları kendi başınıza yükleyip yönetmeniz gerekir. Benzer şekilde, Elastik ve Splunk'ta günlükleri ve ölçümleri toplayarak uçtan uca izleyebilirsiniz.

'Herhangi bir araç ve platformu kullanarak uçtan uca izleme' başlığı, örnek bir ekran görüntüsü ve bu makalede açıklanan araçlar için logolar içeren diyagram.

Ayrıca birçok müşterinin ölçümlerini sorgulamak, görselleştirmek, uyarmak ve anlamak için Grafana'yı kullanmaya devam etmek istediğini de fark ettik. Bu nedenle Müşterilerin Grafana'yı Azure'da yerel olarak çalıştırmasına olanak tanıyan tam olarak yönetilen bir hizmet olan Azure Yönetilen Grafana'yı sunmak için Grafana Labs ile işbirliği yaptık. Hizmet, güvenli ve ölçeklenebilir Grafana örneklerini dağıtmayı ve görselleştirme ve analiz için açık kaynak, bulut ve üçüncü taraf veri kaynaklarına bağlamayı kolaylaştırır. Hizmet, Azure İzleyici ve Azure Veri Gezgini gibi Azure'a özel veri kaynakları için iyileştirilmiştir ve Azure Uygulaması Hizmeti, Azure Spring Apps, Azure Kubernetes Service, Splunk, Datadog ve Azure Sanal Makineler gibi Azure işlem hizmetleriyle uygulama performansı izleme (APM) tümleştirmeleri içerir.

Önbelleğe alma kullanarak Java uygulamalarını hızlandırma

Java uygulamalarınızın iş yükleri büyüdükçe sorgu sonuçları, oturum durumları ve statik içerik için bellek içi önbelleğe alma katmanı uygulamak üzere Redis için Azure Cache kullanarak performansı artırabilirsiniz. Temel veritabanınızı yeniden oluşturmak zorunda kalmadan uygulama aktarım hızını geliştirmenin ve gecikme süresini azaltmanın harika bir yoludur. Redis ile ortaklaşa geliştirilen ve Microsoft tarafından tam olarak yönetilen Redis için Azure Cache Enterprise katmanları, Etkin coğrafi çoğaltma, dışlaştırılmış oturum yönetimi ve yüksek hızlı arama ve dizin oluşturma gibi özellikler dahil olmak üzere Azure'da Redis'i çalıştırmak için en yüksek oranda kullanılabilir ve ölçeklenebilir dağıtım seçeneğidir.

'Redis Cache ile Java uygulamalarını hızlandırın ve ölçeklendirin' başlığıyla ve bu bölümde açıklanan özelliklerin özetini içeren diyagram.

Otomatik ölçeklendirme

Java uygulamalarını çalıştırmaya yönelik tüm Azure "işlem" hizmetleri, maliyet verimliliğini en üst düzeye çıkarmanıza ve ihtiyacınızdan daha fazla kapasite ödemeden değişen iş yüklerine uyum sağlamanıza yardımcı olabilecek otomatik ölçeklendirmeyi (otomatik ölçeklendirme) destekler. Etkinleştirildikten sonra, temel altyapınızı ve uygulama iş yüklerinizi otomatik ölçeklendirmenin dikkate aldığından emin olabilirsiniz.

'Otomatik Ölçeklendirme ile uygulamaların daha yüksek kullanımını sağlayın' başlığıyla ve bu bölümde açıklanan özelliklerin özetini içeren diyagram.

Yüke veya zamanlamaya göre ölçeği otomatik olarak daraltabilir veya genişletebilirsiniz. Yük tabanlı (veya ölçüm tabanlı) modda, uygulamalarınızın ölçeği, ayarladığınız sınırlara kadar yükü işlemek için gereken kaynaklara yatay olarak genişletilir. Benzer şekilde, yük azaldığında kaynaklar yatay olarak ölçeklendirilir ve ayarladığınız minimum değerlerin altına düşmez.

Zamanlama tabanlı modda, uygulamalarınız tanımlı bir zamanlamaya ve sınırlara göre ölçeklendirilir ve ölçeklendirilir. Zamanlama tabanlı mod, tahmin edilebilir bir deseni izleyen iş yükleri için kullanışlıdır ve daha fazla yük tabanlı ölçeklendirme için temel oluşturmak için kullanılabilir.

Fikirden üretime otomasyon

Uygulamalarınızı buluta taşırken, kurumsal ölçekte Java geliştirme için gereken her şeyi otomatikleştirmek istiyorsunuz. Daha önce açıklandığı gibi uygulama iş yüklerini ele almak için otomatik ölçeklendirmeyi göz önünde bulundurmanız gerekir. Ancak test, Soru-Cevap, üretim, mavi/yeşil dağıtımlar, coğrafi genişletme vb. için yeni ortamların hızla sağlanması dahil olmak üzere, ideal olarak fikirden üretime kadar bulut ortamınızı bir bütün olarak ölçeklendirmeniz ve otomatikleştirmeniz gerekir.

Bu bölümde açıklanan araçlar için ilişkili logolara sahip Sağlama, Derleme ve Dağıtma kategorilerini gösteren diyagram.

Azure, çok çeşitli araçlar ve platformlar kullanarak fikirden üretime kadar otomatikleştirmenizi sağlar. Yüksek düzeyde, bu tür otomasyon işlem hatları üç kategoriye ayrılabilir:

  • İşlem hatlarını sağlama - Terraform, Azure Resource Manager (ARM) şablonları, Bicep şablonları veya Azure CLI kullanarak Azure kaynaklarını sağlayabilirsiniz. Gerektiğinde sürekli olarak dönen ve dönen ortamlar için yinelenebilir betikler oluşturabilirsiniz.

  • derleme işlem hatları - Bu belgenin önceki bölümlerinde açıklandığı gibi Maven veya Gradle gibi araçlara dayalıdır.

  • Dağıtım işlem hatları - Kod güncelleştirmelerini dağıtırken kritik sistemleri üretimde tutan mavi/yeşil dağıtımlar dahil olmak üzere kod dağıtımlarını otomatikleştirmek için GitHub Actions, Azure Pipelines, Jenkins Pipelines, GitLab Pipelines veya Azure CLI kullanabilirsiniz.

Mevcut uygulamaları ve sistemleri kullanmaya devam etme

Java uygulamalarınızı Azure'da geçirirken veya derleyip ölçeklendirirken ağ, izleme, otomasyon, kimlik sağlayıcıları, şirket içi sistemler, geliştirme ve derleme aracı ve uygulama kitaplıklarına yönelik mevcut yatırımlarınızı kullanabilirsiniz. Aşağıdaki tabloda bazı örnekler verilmiştir:

Kategori Java ekosistemi ürünleri ve hizmetleri
F5, Palo Alto, Cloudflare, Checkpoint, Infoblox
İzleme New Relic, Dynatrace, AppDynamics, Elastic, Splunk
Otomasyon GitHub Actions, Azure Pipelines, Jenkins, GitLab
Kimlik sağlayıcıları Microsoft Entra ID, ForgeRock, Auth0, Ping, Okta
Şirket içi sistem Veritabanları (Oracle DB veya IBM DB2 gibi), mesajlaşma (IBM MQ veya TIBCO EMS gibi), olay oluşturma (Kafka gibi), dizinler (Microsoft Entra ID, OpenLDAP veya IBM ID gibi)
Geliştirme araçları IntelliJ, Visual Studio Code, Eclipse, Spring Tool Suite, Maven, Gradle

Başvuru mimarileri

Azure Mimari Merkezi, bu özelliklerin nasıl kullanılacağı da dahil olmak üzere yerleşik desenleri ve uygulamaları kullanarak Azure'da çözüm oluşturmaya yönelik rehberlik sağlar. Bu başvuru mimarileri, maliyet iyileştirme, operasyonel mükemmellik, performans verimliliği, güvenilirlik, ölçeklenebilirlik, güvenlik, izleme, duman testi ve daha fazlasını göz önünde bulundurarak müşteri etkileşimlerinden öğrendiklerimizden faydalanmaktadır. Ayrıca, Java uygulama geçişlerini ve kurumsal ölçekte yeşil alan geliştirmeyi etkinleştirmek için gerektiğinde kod olarak altyapı aracılığıyla önceden sağlanan iş yüklerinizi barındırma ortamları olan Azure giriş bölgeleri gibi çözüm tasarımı bileşenlerini de ele alır.

Örneğin, Azure Spring Apps için giriş bölgesi hızlandırıcısı, Azure Spring Apps'in hub'da barındırılan paylaşılan hizmetlere bağımlı tek bir uçta dağıtıldığı merkez-uç tasarımının nasıl uygulandığını gösterir. Bu proje, Microsoft Azure İyi Tasarlanmış Çerçeve'de kümelere ulaşmak için bileşenlerle oluşturulmuş. Bu mimarinin bir uygulamasını keşfetmek için GitHub'daki Azure Spring Apps Giriş Bölgesi Hızlandırıcısı deposuna bakın. Azure Uygulaması Hizmeti, Azure Container Apps veya Azure Kubernetes Service gibi herhangi bir Azure "işlem" hedefine dağıtılan tüm Java uygulamalarına aynı yaklaşımı uygulayabilirsiniz. Ayrıca, mevcut Java uygulamalarını Azure'a geçirmeyi düşünüyorsanız kapsamlı bir geçiş kılavuzları ve önerilen stratejiler kümesine sahibiz.

Bu makalede açıklanan araçlar için 'Uçtan uca güvenlik, izleme ve otomasyon ile ölçeklendirme' başlığı ve logolar içeren diyagram.

Sonraki adım

Java uygulamalarınız için doğru Azure hizmetlerini seçme