Blue/Green Deployment Tekniği İle Zero Downtime Deployment

Merhabalar, bu makalede biraz DevOps’ un Deploy aşaması ile konuşarak bir Zero Downtime stratejisi olan Blue/Green hakkında bir anlatım yapmak istiyorum. Ayrıca isteyenler için A/B Testing ve Canary Releases stratejilerinin de en azından adını paylaşarak makaleye başlayalım.

Yapılan geliştirmeleri canlı ortama almak özellikle yoğun trafikli sistemlerde ve son kullanıcıya yönelik sistemlerde sorun olabiliyor. Çünkü kısa süreliğine de olsa sisteme erişimi keserek bu işlemi gerçekleştirmek durumunda kalıyoruz. Bu da istenmeyen bir durum olarak karşımıza çıkabiliyor. Tabi eğer bir Zero Downtime stratejisi uygulamıyorsak. Bu stratejiye göre sessionlarda bir kayıp yaşamadan ve sistemimizi erişime kapatmadan sistemi güncelleyebiliyoruz. Gelin şimdi öncelikle bu stratejinin çalışma prensibine değinelim ve sonrasında IIS yapılandırmasını yapalım.

Çalışma Prensibi

Bu stratejide isteklerin karşılandığı bir katman ve bu katmana bağlı, onun arkasında çalışan 2 tane site(bu 2 site aslında birbirinin kopyasıdır) vardır. İsteklerin karşılandığı bu ara katmanımızda herhangi bir site içeriği barındırılmıyor sadece arkasında çalışan 2 siteye yönlendirme işlemi yapılıyor. Peki bu yönlendirme işlemi nasıl yapılıyor? Basit mantıkla bir siteye güncelleme attığınızı düşünün öncelikle o siteyi pasif hale getirir. Sonrasında içeriği kopyalar ve siteyi tekrar aktif hale getirirsiniz. Blue-Green Deployment stratejisinde de bu işlemi 2 defa yaptığımızı hayal edebiliriz. Yani katmanımızın arkasındaki 2 siteden birinin(A sitesi yani live) durumunu “Offline” yapıyoruz ve güncelleme işlemini yapıyoruz. Tabi bu sırada diğer sitemizin(B sitesi yani staging) durumunu “Online” olarak ele alıyoruz. A sitesindeki güncelleme gerçekleşirken bu sırada gelen istekler B sitesine yönleniyor. Daha sonrasında B sitesini “Offline” A sitesini “Online” yaparak bu işlemin tersini yapıyoruz ve işlemi tamamlıyoruz.(Makalenin görseli aslında buraya kadar olan kısmı ifade ediyor.) Şimdi dilerseniz IIS yapılandırması ile asıl işlemlerimize başlayalım.

1.Web Platform Installer kurulumu yapılır
Web Platform Installer’ ı indirerek kurulum işlemini gerçekleştiririz. Bu işlem Application Request Roting(ARR) için yani isteklerimizi karşılayabilmek ve yönlendirebilmek için gereklidir.

127.0.0.1 siteadi.com-blue
127.0.0.1 siteadi.com-green

3.Server Farm oluşturulur
Bu aşamada isteklerimizi yönlendirecek olan ara katmanın kurulum işlemini ve arkasındaki 2 sitenin kurulum işlemini gerçekleştiriyoruz. İlk adım olarak “Server Farm” üzerinde sağ tıklayarak “Create Server Farm” diyoruz. Açılan pencerede Server Farm Name girilir. Bu gireceğimiz ad resimdeki “siteadicomfarm”’ a karşılık geliyor. İleri diyerek sonraki yani görseldeki aşamaya geliyoruz. Burada hangi site üzerinde bu işlemi gerçekleştirmek istiyorsak “Server Adress” kısmını bu şekilde dolduruyoruz(Bizim için siteadi.com). Onun dışında portlarda bir değişiklik yapmıyoruz ve “Son” butonuna tıklayarak ilk aşamayı gerçekleştiriyoruz.

Server Farm kurulumunu tamamladıktan sonra farmın üzerine sağ tıklayarak “Add Server” diyoruz. Açılan pencerede ilk olarak “Server Adress” olarak siteadi.com-blue tanımlamasını yapıyoruz. Önemli nokta olarak httpPort seçeneğinde çalışacağı portu belirtiyoruz(Bu anlatımda blue için 8001 portu kullanılacaktır). Onun dışında diğer ayarlar aynı bırakarak blue sunucu kurulumunu tamamlıyoruz. Aynı işlemi sadece “Online” seçeneğindeki işareti kaldırarak siteadi.com-green için gerçekleştiriyoruz(Green içinde 8002 portu kullanılacaktır).

4.Site klasör ve içeriklerinin oluşturulması
Bir üstteki resimde kırmızı okun üzerindeki “Siteler” menüsünü göreceksiniz. Burada siteadi.com adlı sitemizin yolunu açıyoruz ve bu dizinin altında 2 klasör oluşturuyoruz. Sırasıyla bu klasörler bizim blue ve green sitelerimiz olacak. Yani aşağıdaki gibi 2 farklı klasörü siteadi.com adlı dizinimizin içerisinde oluşturuyoruz. 

siteadi.com-blue
siteadi.com-green

NOT: Burada siteadi.com adlı sitenin içeriğinin bulunmasına ihtiyaç yoktur. Bu sitemiz sadece gelen istekleri yukarıda oluşturduğumuz siteadicomfarm adlı server farma yönlendirme işlemi yapacaktır.

Blue ve green sitelerimiz için klasörleri oluşturduktan sonra içeriklerini oluşturuyoruz. Basit olması açısından blue sitemiz için index.html oluşturulur ve içerik olarak “Blue Page” yazılır. Green sitemiz için aynı şekilde index.html oluşturulur ve içerik olarak “Green Page” yazılabilir.

5.Sitenin oluşturulması
Blue ve green sitelerimizin klasöre içeriklerini oluşturduk. Şimdi bu sitelerin IIS üzerinde oluşturulması kalıyor. IIS’ te sol tarafta yer alan “Siteler” üzerinde sağ tıklayarak “Web Sitesi Ekle” diyoruz. Açılan pencerede öncellikle blue için yapılandırmamızı yapıyoruz. Yani site adı kısmını siteadi.com-blue olarak dolduruyoruz. Fiziksel yolu yukarıda siteadi.com adlı dizinin içerisinde oluşturduğumuz siteadi.com-blue klasörünü gösteriyoruz. Hatırlayacak olursanız burada index.html ile blue sitemizin içeriğini oluşturmuştuk. Yani aslında bu içeriği kullanacağımızı belirtiyoruz. Son aşama olarak yukarıda blue sitemiz için belirttiğimiz 8001 portunu giriyoruz. Tamam butonuna tıklayarak blue sitemizi oluşturma işlemini tamamlıyoruz. Aynı işlemi green sitemiz için yapıyor yolunu siteadi.com adlı dizinin içerisinde oluşturduğumuz siteadi.com-green olarak gösteriyor ve portunuda 8002 olarak giriyoruz ve son aşama olan yönlendirme kısmına geçiyoruz.

6.Yönlendirme işleminin yapılması
Resimde kırmızı okla gösterilen sunucu adına tıklayarak sağ taraftan “URL Rewrite” kuralını açıyoruz. Burası yönlendirmelerimizi oluşturacağımız pencere oluyor. Açılan pencerede sağ tarafta “Add Rule” seçeneğine tıklıyoruz.

Tıkladıktan sonra açılan pencerede “Blank Rule” diyerek işleme devam ediyoruz.

Gelen ekranda name kısmını açıklayıcı olmak kaydıyla istediğimiz şekilde dolduruyoruz ( Bu yazıda siteadicom http yonlendirme kullanılacaktır).

pattern kısmını (.*) olarak dolduruyoruz. Conditions kısmında Add butonunta tıklayarak Condition input kısmını {HTTP_HOST} ve Pattern kısmını ^siteadi.com$ şeklinde dolduruyoruz. Tekrar add butonuna tıklayarak bu defa Condition input kısmını {SERVER_PORT} ve Pattern kısmını ^80$ şeklinde dolduruyoruz. Son olarak alttaki Action tabına gelerek “Action Type”’ ı Route to Server Farm scheme değerini http:// server farm değerini ise yukarıda oluşturduğumuz siteadicomfarm olarak belirtiyoruz. Hemen sağında yer alan Path inputunu /{R:0} olarak dolduruyoruz. Aynı şekilde Add Rule diyerek bir kural oluşturma işlemi daha yapıyoruz. Bu kez farklı olarak sadece name kısmını siteadicom https yonlendirme ve Condition kısmında ^80$ olarak girdiğimiz port değerini ^443$ olarak giriyoruz.

Ve artık uygulamamıza adres çubuğuna siteadi.com yazarak istekte bulunuyoruz. Ekranınıza siteadi.com-blue içeriği olan Blue Page yazısının geşdiğini göreceksiniz. Aynı şekilde Server Farm üzerinde sağ tıklayarak Blue sunucumuzu Offline Green sitemizi online yapınca içeriğin Green Page olarak değiştiğini göreceksiniz.

Uzun bir makale oldu bu yüzden sonlara doğru daha fazla uzatmamak adına mümkün olduğunca kısa tutmaya çalıştım. Bu anlamda gözümden kaçan nokta, ekleme yapmak isteyen, problem yaşayan varsa sosyal ağlar üzerinden iletişime geçerseniz sevinirim. Sonraki makalelerde görüşmek üzere.

Related Post

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir