Ocelot, .NET ekosisteminde kullanılan popüler bir API Gateway çözümüdür ve mikroservislerin yönetilmesini kolaylaştırır. Reverse Proxy (Ters Proxy) gibi çalışarak gelen HTTP isteklerini yönlendirme, yük dengeleme, kimlik doğrulama, yetkilendirme, rate limiting gibi işlemleri yapar.
Şimdi Ocelot’un API Gateway yönlendirmesi nasıl çalışır adım adım detaylandıralım.
1. Ocelot’un Temel Yapısı
Ocelot, yönlendirme işlemlerini ocelot.json
adlı bir konfigürasyon dosyası üzerinden yapar. İstekleri alır ve ilgili mikroservise yönlendirir.
Temel Yapı:
- Client → API Gateway (Ocelot) → Mikro Servisler
- API Gateway, gelen isteği inceler ve konfigürasyon dosyasına göre yönlendirme yapar.
2. Ocelot Konfigürasyonu ile Yönlendirme (Routing)
Bir örnek üzerinden inceleyelim:
Senaryo:
- Kullanıcı API’yi çağırıyor:
https://api.example.com/users/1
- Ocelot, isteği ilgili mikro servise yönlendiriyor:
http://user-service/api/users/1
Bunu Ocelot’ta nasıl konfigüre ederiz?
ocelot.json dosyasında yönlendirme ayarları:
Bu Yapı Ne Anlama Geliyor?
- UpstreamPathTemplate: Kullanıcıdan gelen API isteği
https://api.example.com/users/{id}
olacak. - DownstreamPathTemplate: Ocelot bu isteği
http://user-service:5001/api/users/{id}
adresine yönlendirecek. - DownstreamHostAndPorts: Mikroservisin bulunduğu host ve port bilgisi.
- UpstreamHttpMethod: Sadece
GET
isteklerine izin verildiğini belirtiyor.
3. Ocelot’un Çalışma Mantığı
- Client (Örneğin bir frontend uygulaması), API Gateway’e istek atar:
- Ocelot,
ocelot.json
dosyasına bakar ve uygun yönlendirmeyi bulur. - İsteği, ilgili mikro servisin endpoint’ine yönlendirir:
- Mikro servis yanıtı döner, Ocelot bu yanıtı alıp istemciye iletir.
Sonuç: API Gateway tek giriş noktası olur, istemciler mikro servislerin iç yapısını bilmeden onlara ulaşır.
4. Birden Fazla Servis ile Kullanım
Birden fazla mikro servisi Ocelot üzerinden yönlendirmek için farklı rotalar ekleyebiliriz.
Örnek: Hem Kullanıcı Servisi Hem de Ürün Servisi Olsun
Sonuç:
https://api.example.com/users/1
→http://user-service:5001/api/users/1
https://api.example.com/products/2
→http://product-service:5002/api/products/2
5. Ocelot ile Load Balancing (Yük Dengeleme)
Aynı mikro servisten birden fazla instance çalıştırıldığında yük dengeleme yapılabilir.
Örneğin, User Service’in birden fazla instance’ı varsa, aşağıdaki gibi bir yapı kurabiliriz:
Yük Dengeleme Çalışma Mantığı
- Ocelot, gelen istekleri sırayla farklı instancelara yönlendirir.
- Round Robin yöntemi ile her yeni istek farklı bir servise gider.
- Böylece bir servis aşırı yüklenmez, tüm instance’lar dengeli çalışır.
6. Ocelot ile Authentication & Authorization (Kimlik Doğrulama ve Yetkilendirme)
Ocelot, JWT Token ile kimlik doğrulama (Authentication) ve yetkilendirme (Authorization) yapabilir.
Örneğin, yalnızca belirli yetkiye sahip kullanıcıların bir endpoint’e erişebilmesini sağlayabiliriz.
Kimlik Doğrulama Çalışma Mantığı
- Client önce bir kimlik doğrulama sunucusundan (IdentityServer) JWT token alır.
- API Gateway’e istek yaparken bu token’ı gönderir.
- Ocelot, token’ı kontrol eder ve yetkisi varsa isteği ilgili mikro servise yönlendirir.
Sonuç: Ocelot’un API Gateway Yönlendirmesi Ne Sağlar?
✔ Merkezi API Yönetimi → Tüm mikro servisleri tek bir noktadan yönetmeyi sağlar.
✔ Yük Dengeleme (Load Balancing) → Mikro servis instanceları arasında istekleri dengeler.
✔ Kimlik Doğrulama (Authentication & Authorization) → JWT token veya OAuth ile güvenli erişim sunar.
✔ Caching & Rate Limiting → Sık yapılan istekleri cache’leyerek performansı artırır.
✔ Logging & Monitoring → Gelen/giden istekleri loglayarak hata takibi yapmayı kolaylaştırır.
Sonuç olarak, Ocelot, .NET tabanlı mikroservis mimarisinde güçlü ve esnek bir API Gateway çözümüdür. 🚀
Hiç yorum yok:
Yorum Gönder