Azure App Service, Microsoft'un bulut platformu Azure üzerinde web uygulamaları, API'ler ve mobil uygulamaları barındırmak için kullanılan yönetilen bir hizmettir. Esnek, ölçeklenebilir ve kullanımı kolay olan bu hizmet, geliştiricilere uygulamalarını hızlı bir şekilde dağıtmaları ve yönetmeleri için kapsamlı araçlar sunar. Neden Kullanılır ve Avantajları
Yönetilen Hizmet: Sunucu yönetimi, yama yönetimi gibi işletim sistemine özgü görevlerden Microsoft sorumludur. Bu, geliştiricilerin uygulama koduna odaklanmalarını sağlar. Otomatik Ölçekleme: Trafik artışına göre otomatik olarak kaynaklar artırılır ve azaltılır. Bu, performansı maksimize ederken maliyeti optimize eder. Birden Çok Dil ve Çerçeve Desteği: .NET, .NET Core, Java, Ruby, Node.js, PHP, Python gibi popüler programlama dilleri ve çerçeveleri destekler. Kolay Entegrasyon: Azure SQL Database, Azure Active Directory ve diğer Azure hizmetleri ile entegrasyon sağlar. DevOps Desteği: Azure DevOps, GitHub gibi popüler devops araçları ile entegrasyon, sürekli entegrasyon ve sürekli dağıtım (CI/CD) işlemlerini kolaylaştırır. Küresel Dağıtım: Microsoft’un küresel veri merkezi ağı sayesinde uygulamaları dünya genelinde kolayca dağıtma ve yönetme imkanı sunar.
Azure App Service Nasıl Kullanılır?
Azure App Service kullanarak bir web uygulaması barındırmak için aşağıdaki adımlar genel bir rehber olarak işlev görür:
-
Kaynak Oluşturma
Azure portalına giriş yapın. "portal.azure.com" Menüden yada Search bölümünden App Services seçeneğini bulup seçin. "Create" seçeneğine tıklayın ve Web App seçiniz Subscription seçiniz, Resource Group Seçin yada oluşturun. Uygulama için bir ad, yayın türü (Code veya Container) seçiniz. Bu örnek de Code üzerinden devam edeceğim, runtime stack, işletim sistemi ve bölge gibi temel bilgileri girin. Pricing Plans bölümünde sizin için uygun donanım ve özeliklere sahip planı seçiniz. (Plan seçimi yaparken sadece uygulamanız için ihtiyacınız olan kaynak miktarını göz önünde bulundurunuz. Scale bir yapıya ihtiyacınzı olacak ise scale opsiyonu olan plan seçmek önemli olacaktır. Planların her biri farklı kaynak ve özeliklere sahip olduğu için backup gibi ihtiyaçlarınız var ise plan seçiminde yine önemli tercih karar sürecinde göz önünde bulundurulmalıdır. Private network üzerinde çalışacaksanız seçtiğiniz planın vnet entegrasyonun olması önemli plan seçimi karar süreçlerinden olabilir.) Seçtiğiniz plan kapsamında Zone redundancy özelliği var ise Zone redundancy terchinizi seçiniz. Recommended services (preview) bölümünde Web App ile birlikte Database yada Redis gibi ek servislerin deploy işlemlerini eş zamanlı gerçekleştirebilirsiniz. (Bu bölümde yaptığınız deployment yöntemleri sonrası Database yada redis için ek yapılandrıma süreçlerini deploy sonrası yapmayı unutmayınız) Deployment adımında Continuous deployment sürecinide tamamlamak isterseniz GitHub Action kullanarak deployment gerçekleştrirebilirsiniz.Continuous deployment Enable duruma getiriniz. GitHub Settings bölümünde GitHub Accountunuz ile giriş yapınız. Organization, Repository ve Branch seçimlerinizi gerçekleştirebilirsiniz. Authentication settings bölümünde Basic authentication enable duruma getirmeyi unutmayınız. Bu çalışma sırasında GitHub repolarımda fork olarak eklediğim my-spring-app uygluması kullanılmıştır. Java8 de hazırlanan bu uygulama için Runtime Stack bölümünde Java8 ve Java SE seçmemin sebebi bu yüzdendir.
Networking adımında seçmiş olduğunuz plan özelikleri doğrultusunda Enable network injection kullanabilirsiniz. Bu özellik uygulamanızın private network üzerinde çalışmasına imkan sağlayacaktır. Bunun için VNET ve Subnet ihtiyaçlarınız bulunmaktaıdr. Uygulamanızı direk Public olarak erişime sunmak isterseniz Enable public access seçeneğini on duruma getiriniz. Monitoring adımında Applicaiton Insights kullanabilirsiniz. Application Insights, Azure tarafından sunulan bir performans izleme hizmetidir. Uygulamaların gerçek zamanlı olarak izlenmesini sağlar, hata teşhisleri ve kullanım analizleri yapar. Kullanıcıların uygulama performansını optimize etmelerine, sorunları hızlı bir şekilde tespit etmelerine ve çözümlerine yardımcı olur. Ayrıca, çeşitli programlama dilleri ve platformlarla entegre çalışabilme yeteneği sunarak esnek bir izleme çözümü sağlar. Tags adımında etiketlerimizi girebiliriz. Review + Create ekranında tüm yaptığımız seçimleri kontrol ettikten sonra artık sol alt bölümde bulunan Create butonuna basabiliriz.
Önemli Not-1: üst bölümde gördüğünüz ekran görüntüsündeki fiyatlar bölgelere göre değişiklik gösterebilir.
Önemli Not-2: üst bölümde gördüğünüz ekran görüntüsünün sağ alt bölümünde bulunan Download a template for automation linki sayesinde mevcut yapılandırma ve seçimleriminizi ARM template halinde sonraki deploy işlemleri kullanabilir. İş süreçlerinizi otomatize edebilirsiniz.
Deployment ekranını kontrol ediyoruz. Tüm süreçler sorunsuz tamamlandığından emin olunuz.
GitHub Action kullandığımız için CI/CD sürecini kontrol etmek için GitHub'daki repoma gidiyourm ve Action bölümünü kontrol ediyourm. Yeni bir workflow oluşturdu ve Action Başladımı Kontrol Ediyorum
İlgili yml dosyasını incelemek ve düzenlemek istersniz workflow dizinindne kontrol edebilirsiniz. (Genelde değişiklik yapmaya gerek kalmayacak şekilde işlem başarı ile tamamlanır)
Aynı Kontrol işlemini Azure App Sevices içerisinde oluşturduğumuz Web App'in Overview ekranında sağ alt bölümde bulunan Deploymnet Center detaylarında bulabilirsiniz
-
Uygulama Yayınlama
Yayınlamak istediğiniz uygulamayı geliştirin. Visual Studio veya başka bir IDE kullanarak Azure App Service'e bağlanın ve uygulamanızı doğrudan yayınlayın. Alternatif olarak, Azure CLI veya PowerShell gibi komut satırı araçları kullanarak uygulamanızı yayınlayabilirsiniz.
-
Yönetim ve İzleme
Azure Portal üzerinden uygulamanızın performansını izleyebilir, log kayıtlarına erişebilir ve ölçekleme ayarlarını yönetebilirsiniz. Azure Application Insights, uygulama performansını ve hata izlemeyi sağlayan bir izleme aracını kullanabilrsiniz. Otomatik ölçeklendirme, yedekleme ve diğer pek çok yönetim özelliğini konfigüre edebilirsiniz.
Azure App Service, özellikle çeşitli programlama dilleri ve çerçeveleri desteklemesi ve kolay entegrasyon imkanlarıyla geliştiricilere geniş bir esneklik alanı sunar, böylece geliştirme sürecini hızlandırır ve yönetim yükünü azaltır. Bu özellikler, özellikle dinamik uygulamalar ve çoklu dil desteği gerektiren projeler için idealdir.