Cloud üzerinde global(çok bölgeli) düzeyde bir web uygulaması geliştiriyorsak ve ayrıca uygulamanın performanslı, scalable ve highly available olmasını istiyorsak, iyi bir uygulama giriş noktasına ihtiyacımız var demektir.
Bu kapsamda, Microsoft‘un uzun zamandır scalability ve security gibi konular için kendi hizmetleri içerisinde de kullanıyor olduğu bir web uygulama giriş noktası olan Azure Front Door Service, ihtiyaçlarımızı oldukça karşılamaktadır.
Azure Front Door Service için kısaca, global web uygulamalarımızın performans ve high availability gibi endişelerini göz önüne alarak, routing işlemlerini WAF(Web Application Firewall) ve CDN gibi ihtiyaçlarla birlikte gerçekleştiren global bir web application acceleration platform’udur diyebiliriz.
Azure Front Door, son kullanıcının uygulamaya erişmeye çalışırken network’de geçirdiği round-trip süresini minimize etmektedir ve son kullanıcıyı, ona en yakın ve en hızlı olan backend pool’una yönlendirmektedir. Bunun için ise, Anycast protocol’ünden yararlanmaktadır.
Tıpkı bir CDN‘in gelen trafiği, en yakın olan noktaya yönlendirildiği gibi, Front Door da gelen trafiği, resilient bir şekilde en hızlı ve en uygun olan noktaya yönlendirmektedir.
Bu işlemler için ise, Microsoft Global Network altyapısını kullanmaktadır. Böylece daha iyi bir network performansı ve reliability sunmaktadır.
NOT: Microsoft kendi datacenter’ları arasında kullandığı, yüksek kapasiteli bir private global network’e sahiptir.
Azure Front Door ile bir örnek gerçekleştirebilmek için, öncelikle “West Europe” ve “UK South” bölgelerinde aşağıdaki gibi birer Azure Web App oluşturalım.
Ardından ilgili Web App‘lere, uygulamanın hangi lokasyonda konumlandığı bilgisini içeren basit birer ASP.NET Core Web App projesi oluşturup, deploy edelim.
Deployment işlemi başarıyla tamamlandıysa, Front Door oluşturma aşamasına geçebiliriz.
İlk olarak Azure Portal üzerinden Front Door oluşturma ekranına girelim ve “Basics” sekmesinde ilgili resource group’u seçerek, ardından “Configuration” sekmesine geçelim.
Bu sekmede, ilk olarak uygulamamıza bir giriş noktası oluşturmamız gerekmektedir. Bunun için, “Frontend hosts” kısmında bulunan + işaretine tıklayarak, aşağıdaki gibi bir host oluşturalım.
Şimdi ise, bir backend pool’u oluşturmamız gerekiyor. Bunun için, “Backend pools” kısmında bulunan + işaretine tıklayarak, aşağıdaki ekrana gelelim.
Burada öncelikle “Name” kısmına unique bir isim verelim. Ardından ilgili backend’leri ekleyebilmek için, “BACKENDS” sekmesi altındaki “+ Add a backend” butonuna tıklayalım.
Burada ise “Backend host type” olarak, “App service” seçeneğini seçelim. Ardından “Backend host name” kısmında ise daha önce oluşturmuş olduğumuz ilgili App Service‘i seçelim.
NOT: Bu işlemi oluşturmuş olduğumuz host’a backend olarak eklemek istediğimiz ilgili her bir App Service için, tek tek gerçekleştirmemiz gerekmektedir.
Burada dikkat etmemiz gereken iki parametre ise, “Priority” ve “Weight” parametreleri.
Bu noktada, “Priority” parametresini tüm backend’ler için aynı olarak ayarlarsak, trafik ayarlanmış olan “Weight” parametresine göre dengeli bir şekilde backend’ler arasında yönlendirilecektir.
Parametreleri configure ettikten sonra ise, “Add” butonuna basarak ekleme işlemini gerçekleştirelim.
Her iki bölgedeki backend’leri ekledikten sonra ise, “HEALTH PROBES” ve “LOAD BALANCING” kısımlarını default değerleri ile bırakalım.
Şimdi ise routing rule’larını tanımlama kısmına geçebiliriz. Bunun için “Routing rules” kısmında bulunan + işaretine tıklayalım ve aşağıdaki gibi configure edelim.
Bu ekranda ise kısaca, route mapping işlemini gerçekleştiriyoruz. Yukarıdaki değerlerle root URL‘e gelecek olan her bir request’in, oluşturmuş olduğumuz “mytodoapp-bpool” isimli backend pool’una yönlendirilmesini sağladık.
Bu konu hakkında daha detaylı bilgiye ise, buradan erişebilirsiniz.
Bu işlemlerin ardından, “Review + create” butonuna basarak Front Door‘un oluşturulma işlemini tamamlayalım.
Front Door ile bir örnek gerçekleştirebilmek için Azure üzerinde, “West Europe” ve “UK South” bölgelerine test amaçlı iki adet Web App deploy ettik. Ardından bu Web App‘lere bir giriş noktası olacak olan bir Azure Front Door hizmeti oluşturduk.
Örnek amaçlı Front Door‘dan beklentimiz ise, bizi en yakın yani en hızlı olan backend pool’una yönlendirmesi. Ayrıca herhangi bir hata anında da, failover işlemini gerçekleştirmesi. Tabi bu failover işlemi sadece hata anında değil, bölgesel maintanance işlemlerinde de operasyonun sıfır kesintili gerçekleşebilmesi için önemli.
Şimdi test için uygulamaya Front Door adresi üzerinden erişelim. Ben “West Europe” bölgesinde yaşadığım için, Front Door’un beni “West Europe” da oluşturmuş olduğumuz backend’e yönlendirmesi gerekmektedir.
Beklediğimiz gibi FD beni en yakın olan noktaya yönlendirdi.
Şimdi herhangi bir VPN tool’u ile konumumuzu “UK” bölgesine çevirelim ve tekrar siteye girelim.
Gördüğümüz gibi bu sefer beni, “UK South” bölgesinde konumlandırdığımız backend noktasına yönlendirdi. Tıpkı asset’ler için bir CDN kullanmak gibi.
Şimdi failover senaryosunu test edebilmek için ise, VPN‘i kapatıp (eğer sizde “West Europe” bölgesindeyseniz) ardından “West Europe” bölgesinde oluşturmuş olduğumuz Web App‘i durduralım.
Bu sefer de bizi, sağlıklı olan “UK South” bölgesine yönlendirmesini gerekmektedir.
Beklediğimiz gibi sağlıklı olan “UK South” bölgesine yönlendirme işlemini gerçekleştirdi.
Bunların dışında Application Insights hizmeti ile de, canlı metric’leri izleyebilmek mümkün. Ayrıca WAF özelliğini configure ederek, rate limiting veya geo-based access control gibi işlemleri de gerçekleştirebilmekteyiz.
https://docs.microsoft.com/en-us/azure/web-application-firewall/afds/afds-overview?WT.mc_id=AZ-MVP-5003382
https://docs.microsoft.com/en-us/azure/frontdoor/front-door-overview?WT.mc_id=AZ-MVP-5003382
https://docs.microsoft.com/en-us/azure/frontdoor/front-door-routing-architecture?WT.mc_id=AZ-MVP-5003382
https://docs.microsoft.com/en-us/azure/frontdoor/front-door-backend-pool?WT.mc_id=AZ-MVP-5003382
{:tr} Makalenin ilk bölümünde, Software Supply Chain güvenliğinin öneminden ve containerized uygulamaların güvenlik risklerini azaltabilmek…
{:tr}Bildiğimiz gibi modern yazılım geliştirme ortamında containerization'ın benimsenmesi, uygulamaların oluşturulma ve dağıtılma şekillerini oldukça değiştirdi.…
{:tr}Bildiğimiz gibi bir ürün geliştirirken olabildiğince farklı cloud çözümlerinden faydalanmak, harcanacak zaman ve karmaşıklığın yanı…
{:tr}Bazen bazı senaryolar vardır karmaşıklığını veya eksi yanlarını bildiğimiz halde implemente etmekten kaçamadığımız veya implemente…
{:tr}Bildiğimiz gibi microservice architecture'ına adapte olmanın bir çok artı noktası olduğu gibi, maalesef getirdiği bazı…
{:tr}Bir önceki makale serisinde Dapr projesinden ve faydalarından bahsedip, local ortamda self-hosted mode olarak .NET…