Microsoft Yarp (Yet Another Reverse Proxy) Nedir ? Nasıl Uygulanır?
İçerik
- YARP NEDİR? + BONUS REVERSE PROXY NEDİR?
- YARP NEDEN KULLANILIR?
- DEMO UYGULAMA
Arkada Çalsın Müziği : https://open.spotify.com/track/63kd4m3VFxcJjPVVtbVNAu?si=52a679e0476747e1
YARP NEDİR ?
Öncelikle YARP nedir ? Türkçesi aslında “beni yine yeniden sev “ gibi yada “Bu başka bir şey” gibi çevirilebilir. Aslında bir reverse proxy muhabbetidir.
Peki reverse proxy nedir ?
Asıl konu reverse proxy’nin anlatımı olmadığı için aslında akılda kalıcı bir tanımlama yapacağım. Reverse proxy sanki bir süperkahraman ne bileyim işte bir güvenlik görevlisi hatta bir bodyguard gibi bir çalışandır. Client (istemci yada talepkar) bir gece klübüne girmek isterken yada uçağa binmesi gerektiğinde reverse proxy pasaport kontrolü yapar yada klübe sizi damsız almaz. Derki hop kimsin? kimlikleri göreyim bir TC söyler misiniz der. Aynı zamanda sunucunun kapısını korur ve içeriye girmek isteyen istenmeyen misafirleri uzaklaştırır. Yani hem içerdekileri korur hemde dışardakileri yol gösterir. Reverse proxy dostunuzdur.
Peki reverse Proxy’nin avantajları nelerdir?
- Sizi korur: reverse proxy hedef sunucları saldırılardan korur.
- Yük dengeleme mucizesi: istekleri trafik polisi trafigin hep açık ve akıcı olması için kavşaktaki bir polis gibi trafiği yönlendirir. trafik yükünü dengeler ve her aracın sorunsuz bir şekilde varış noktasına ulaşmasını sağlar. (istanbulda çok geçerli olmayabilir)
- Performans dansı: Kusursuz bir danscı gibi önbellekleme, sıkıştırma ve içerik optimizasyonu gibi yetenekleriyle, her bir isteği zarif bir şekilde işler her hareket internet sahnesinde birer adımdır ve hedef server reverse proxy’nin yönlendirdiği ritimle mükemmel bir performas sergiler.
- Şifreleme partisi: SSL termination ile reverse proxy, istemcilerden gelen şifreli istekleri hedef sunucuya çıplak gönderir. “SSL, elveda! Şifreler partide çıplak dolaşıyor!”
- Yetkilendirme: bir isteğin first class mı yoksa ekonomide mi uçacağına karar verir. Kimse kimsenin koltugunu kapamaz.
- Target Server koruma kalkanı: Kötü adamlara “gidin lan burdan” der.
- Yüzükleri Kardeşliği (birleştirme): birden çok sunucuyu yöneten tek bir yüzük ile reverse proxy elfleri, cüceleri, insanları, hobitleri hep birlikte çalıştırarak tek bir yüzük ile aynı hedefe ilerlemeyi sağlar. Tabi burda yoketmeye çalışmak hariç.
Bunların hepsi ayrı birer konudur reverse proxy’nın yazının devamında aklınızda kalması için gerek gerçek dünyadan, gerek güzel işlerden örnek vererek az çok reverse proxy’nin ne yaptığını birazda eğlenceli bir dille hafızanızda kaldıysa devam edebiliriz.
YARP NEDEN KULLANILIR
Çünkü elimizde böyle bir süper kahraman varken neden kullanmayalım?
Yarp açık kaynaklı reverse proxy çözümüdür. Burada yarp kullanımının en güzel avantajları şunlardır:
- Esneklik ve Özelleştirlebilirlik: Yarp, userların http isteklerini işlemek, yönlendirmek ve özelleştirmek için geniş bir kontrol sağlar. Özellikle karmaşık uygulamalarda ve micro servis mimarilerinde ihtiyaç duyulan esnekliktir. Bir şeftir, veganlara ayrı menü sunar, gluten alerjisi olanları ayırır.
- Modüler Mimari: Modüler bir mimari sunar, farklı bileşenleri uygulamanızın ihtiyaçlarına göre özelleştirme yeteneği sunar. Mesela WCF entegrasyonlarını Lego gibi birleştirerek bir şeyler inşa edebilirsiniz. Her lego blogunun hizmet ettiği şey farklıdır ve ihtiyaç duyulduğunda değiştirebilir, test edilebilir.
- Performans İyileştirmeleri: clientan gelen istekleri özelleştirmek, önbelleğe almak veya belirli koşullara göre yönlendirmek gibi özelliklerle performans sağlar. Önbelleği sayesinde partinize katılan clientlar sorunsuz bir şekilde hedefe ulaşır.
- Yük Dengeleme: Birden çok hedefe yönlendirme ve yük dengeleme yetenekleri sunar, bu durum uygulamanın performansını da haliyle etkileyecektir ve yüksek taleplerde dahi güzel güzel response vermek için uygundur. Açık hava konseri gibi herkes katılabilir herkes sahneye çıkabilir. Birlikte çalınabilen açık kaynak senfonisi gibi.
- .Net Ekosistemiyle Entegrasyon: 5+ ve core gibi modern sürümleriyle uyumludur.
- Gelişmiş Hata İzleme ve Teşhis: olası sorunları hızlı tespit etmeyi sağlar. şimdi bu işin nasılı çok ayrı bir konu. kısaca bahsetmek gerekirse, Log günlükleri, 500, 504 gibi hatalarını takip edebilir bu durumu kaydederek hata izleme mekanizmalarını devreye sokabilir.
Özellikle büyük ve karmaşık uygulama altyapıları ile çalışan geliştiriciler için kolaylık ve hız kazandırdığını söyleyebilirim. Tiyolarını yukarda belirtim kıps.
DEMO UYGULAMA
- PROJE OLUŞTURULMASI
ismine her şeyi söyleyebilirsiniz.
2. SÜRÜM SEÇMECE
yukarıda bahsettik 5+ yeterlidir, son sürüm kullanmak daha iyidir.
3. YARP kütüphanesini projeye eklemek.
Nuget paketi ile yarp nugetini yükleyeceğiz. Projeyi açtıktan sonra Solution file’a sağ click atarak “Manage Nuget Packages” diyelim ve açılan sayfada “Browse” sekmesi içerisinden input alanına “yarp” yazalım. ne kadar zor değil mi?
Kebak gibi en tepede duranı install edelim.
Eh bide kontrol olsun double check hesabı csproj a bakalım iki defa sağdan proje ismine tıkladığımızda mucizevi şekilde açılan kod sayfasında sürüm ve ismi görüyorsanız her şey yolunda demektir.
4. Yarp Projesini Yapılandırmak
Program.cs dosyasını açalım ve aşağıdaki değişikliği yapalım.
appsettings.development dosyasını açalım ve aşağıdaki kodu yapıştıralım.
5. İstek oluşturmak.
yarp projesini ayaga kaldırdığımızda benim projem https://localhost:7066/ adresinde ayaga kalktı bu aşamada SSL ile ilgili gelen sorulara yes diyerek devam edebilirsiniz. Postman üzerinden istek gönderdiğimde ise aynen şu şekilde:
Geri dönüşleri projenin içerisi bomboş olduğu için bad requestler göreceksiniz. Fakat visual studio ile açılan CLI Pencesinde şunları bulacaksınız.
Buda aslında yarpın “https://localhost:7066/example/” a attıgı istekleri trafige göre yönlendirdiğini gösteren bir ibare, peki nasıl düzeltebiliriz.
Hops New Project!
Seriden yeni bir boş proje oluşturalım.
adresinde hemen bir proje oluşturdu bize canına yandıgımın dotneti.
gidelim bunu bizim yarp projemiz içerisindeki cluster’a ekleyelim.
appsetting.development.cs bu şekilde değiştikten sonra yarp uygulamamızı çalıştıralım.
sample backend e gitmek için postmandan belirtiğimiz adrese istek yollayalım.
iki projemizde ayakta ve daha önce aldıgımı yahu ben bunu bulamadım hatası yerine başka bir şey var.
oda yahu ben burda hiç bir şey bulamadım hatası. birde 5002'ye atalım bakalım.
Mazallah ne olduk hatası geri aldık…
Demekki reverse proxymiz istek atıyor fakat adreslerdeki uygulamarımız ya hiç yok yada varlar fakat ne döneceğini bilmiyor. işte boş projemiz burda ne döneceğini anlamadığı bir endpoint dışarıya vermediği için 404 bulamadım hatası alırken. Hiç olmayan projemize yönlendirmemiz diyo ki yahu baglantı bile kuramadım.
Özetle ne yaptık;
Bahsetiğimiz her şeyi tabi ki uygulayamadık fakat basitce bir reverse proxy kurmuş ve çalıştırmış olduk gerisi ne yapmak istediğinize nasıl yapmak istediğinize göre değişiklik gösteren konular. Faydaları, Zararları, Nasıl basitce oluşturulduğu gördük.
Kullanmak yada kullanmamak ne kadar micro servis kullandığınıza göre değişir. Kendinize çok iyi bakın bol REVERSLER.