API Gateway (Ağ Geçidi) Nedir?

Hakan Kaymaz
7 min readSep 15, 2021

--

Bir çok projede kullandığımız api, REST api vb. çağırımlarının her birinin yaptığı işlevi göz önüne alırsak ne kadar önemli olduğu kuşkusuz bir gerçek. Ancak bir o kadar önemli konu daha var. Güvenlik ve orkestrasyon. Kullandığımız bu apileri tek bir yerden yönetmek, yönlendirmek eve giriş kapısının bir yerden olduğu gibi önemlidir. Evin içerisine kimin girdiği ne yaptığını ilk aşamada kontrol ederiz. Bu sebeple api ağ geçidi bu konuda bizlere yardımcı oluyor. Ne olduğunu açıklamaya başlayalım.

API ağ geçidi, sisteme tek giriş noktası olan bir sunucudur. Bir apinin (Uygulama Programlama Arayüzü- kullanıcıların kullandığı uygulama yazılımları) önünde bulunan uygulamaya tek bir giriş noktası sağlar. Bu sayede ağ geçidi, koruyucu görevi görerek güvenliği sağlar. Basitçe söylemek gerekirse, API ağ geçidi bir istemciden (web,mobil vb) gelen tüm API isteklerini alır, hangi hizmetlerin gerekli olduğunu belirler ve bunları kullanıcı için birleştirilmiş, sorunsuz bir deneyimde birleştirir. Sonraki katmanlara ilgili yönlendirmeyi yapar.

API ağ geçidi, dahili sistem mimarisini kapsar ve her istemciye göre uyarlanmış bir API sağlar. Kimlik doğrulama, izleme, yük dengeleme, önbelleğe alma, istek şekillendirme ve yönetimi ve statik yanıt işleme gibi başka sorumlulukları olabilir.

Aşağıdaki şema, bir API ağ geçidinin tipik olarak mimariye nasıl uyduğunu gösterir.

Aşağıdaki görsellerde farklı ağ geçidi mimarisi örnekleri görülmektedir.

API Ağ Geçidi Neden Önemlidir?

Bir API, tutarlı kalitede teslim edilmediği sürece işe yaramaz. Bir ağ geçidi, uygulamaların trafik yönetimi, dönüştürme ve sistem entegrasyonu dahil olmak üzere tek tip destek hizmetleriyle teslimatı başlatmasını sağlayarak apilerin performansının, yüksek kullanılabilirliğinin ve esnek ölçeklenebilirliğinin sağlanmasına yardımcı olmak için kritik öneme sahiptir.

Ağ geçidi, yalnızca güvenilen iletilerin (kimlik doğrulama ve yetkilendirme) geçebileceği uygulama yeteneği sağlar. Tıpkı bir ülkeye girdiğinizde sınır kontrolünün uygun belgeleri oluşturmanızı gerektirmesi gibi. Örneğin, kimliğinizi doğrulamak için bir pasaport ve belki de sınırı geçmenize izin verildiğini kanıtlamak için bir vize gibi. Ağ geçidi, API tüketicilerinin kimlik doğrulaması yapması ve API kaynaklarına erişmesi için birden çok yol sağlar.

Ağ geçidi, bir API tüketicisinin (OAuth, JWT belirteçleri, API Anahtarı, HTTP Temel/Özet, SAML, vb.) geçerliliğini belirleme anlamına gelen birçok açık standarttan birini destekleyebilir veya standart olmayan araçları kullanabilir.

API Ağ Geçidi Nasıl Çalışır?

Apileri bir çok uygulamamızda kullanırız. Verileri sağlama ya da aktarma konusunda bizlere kolaylıklar sağlar. Ayrı uygulamaların birbirleriyle iletişim kurmasına olanak sağlar. API ağ geçidi, bu etkinlikleri gerçekleştirmek için bir odak noktası ve standart arabirim sağlar.

İstemcilerden gelen tüm istekler önce API ağ geçidinden geçer. Ardından istekleri uygun mikro hizmete yönlendirir. API ağ geçidi, genellikle birden çok mikro hizmeti çağırarak ve sonuçları toplayarak bir isteği işler. HTTP ve WebSocket gibi web protokolleri ile dahili olarak kullanılan web dostu olmayan protokoller arasında çeviri yapmada yardımcı olabilir.

API ağ geçidi, tek bir noktada olabildiği gibi her istemci için de farklı bir API sunabilir.

Bu örnekte üç tür istemci vardır. Web uygulaması, mobil uygulama ve harici 3. taraf uygulaması. Üç farklı API ağ geçidi vardır. Her biri, müşterisi için bir API sağlar.

API ağ geçidinin güzel bir örneği Netflix API ağ geçidi’dir. Netflix API ağ geçidi, her istemciye gereksinimlerine en uygun apiyi sağlayan istemciye özel bağdaştırıcı kodu çalıştırır.

Örneğin, ürün ayrıntıları senaryosunu düşünelim. API ağ geçidi, mobil istemcinin tüm ürün ayrıntılarını tek bir istekle almasını sağlayan bir uç nokta ( /productdetails?productid= xxx) sağlayabilir.

Netflix akış hizmeti; televizyonlar, set üstü kutular, akıllı telefonlar, oyun sistemleri, tabletler vb. dahil olmak üzere yüzlerce farklı türde cihazda kullanılabilir. Netflix, başlangıçta akış hizmetleri için herkese uyan tek bir API sağlamaya çalıştı. Ancak, farklı cihaz yelpazesi ve benzersiz ihtiyaçları nedeniyle bunun iyi çalışmadığını keşfettiler. Bugün, cihaza özel adaptör kodu çalıştırarak her cihaz için uyarlanmış bir API sağlayan bir API ağ geçidi kullanıyorlar. Bir bağdaştırıcı genellikle her isteği ortalama altı ila yedi arka uç hizmetini çağırarak işler. Netflix API ağ geçidi, günde milyarlarca isteği işliyor.

API Ağ Geçitleri Ne Sağlar?

API çalışma zamanı ortamı olarak görülür ve şu temel hizmetleri sağlar:

· API güvenliği

· API protokolü bağlantısı

· API sanallaştırma

· API ölçeklenebilirliği ve esnekliği

· Yüksek kullanılabilirlik

· Yönetilebilirlik

· Geliştirme basitliği

Yukarıdaki işlemleri sağlayan ağ geçidi, uygulamanın çekirdek API altyapısını sağladığından, geliştiriciler uygulama mantığını sağlamaya, kod geliştirmeye odaklanabilir ve artık bu hizmetleri uygulamalarına eklemelerine gerek kalmaz.

AP Ağ Geçitlerini Kimler Neden Kullanır?

API ağ geçidi, API etkinliğini ve dahili ve harici müşterilerle alışverişi düzenlemek ve kolaylaştırmak için API mesajlaşmasının odak noktasıdır. Bu yöntem, bir projenin apileri tek tek takip etmeye ve yönetmeye çalışmak yerine, geniş bir API entegrasyon kapsamını merkezi olarak görmesini ve kontrol etmesini de sağlar .

Mikro hizmet tabanlı bir mimariyi benimseyen projeler, benzer şekilde bu hizmetler arasındaki iletişimi kolaylaştırmak için API ağ geçitlerini kullanır.

API ağ geçitleri, elektronik veri değişim hizmetleri gibi eski yaklaşımlara alternatif olarak B2B entegrasyonunu kolaylaştırmaya yardımcı olmada da rol oynar.

API ağ geçidi, API tüketicileri ve sağlayıcıları arasındaki güvenliği sağlayan kale gibidir.

API Ağ Geçidi Kısmi Arızaların Ele Alınması

API ağ geçidi uygularken ele almanız gereken bir sorun, kısmi başarısızlık sorunudur. Bu sorun, tüm dağıtılmış sistemlerde, yavaş yanıt veren bir hizmet veya kullanılamayan başka bir hizmeti aradığında ortaya çıkar. API ağ geçidi, bir alt akış hizmetini sonsuza kadar beklemeyi asla engellememelidir. Ancak, hatayı nasıl ele aldığı, belirli senaryoya ve hangi hizmetin başarısız olduğuna bağlıdır. Örneğin, ürün ayrıntıları senaryosunda öneri hizmeti yanıt vermiyorsa, API ağ geçidi, ürün ayrıntılarının geri kalanını, kullanıcı için hala yararlı olduklarından istemciye döndürmelidir. Öneriler ya boş olabilir ya da örneğin bir ilk on liste ile değiştirilebilir. Ancak, ürün bilgi hizmeti yanıt vermiyorsa, API ağ geçidi istemciye bir hata döndürmelidir.

API ağ geçidi, varsa önbelleğe alınmış verileri de döndürebilir. Örneğin, ürün fiyatları nadiren değiştiğinden, fiyatlandırma hizmeti kullanılamıyorsa API ağ geçidi önbelleğe alınmış fiyatlandırma verilerini döndürebilir. Veriler, API ağ geçidinin kendisi tarafından önbelleğe alınabilir veya Redis veya Memcached gibi harici bir önbellekte saklanabilir. API ağ geçidi, varsayılan verileri veya önbelleğe alınmış verileri döndürerek, sistem arızalarının kullanıcı deneyimini etkilememesini sağlar.

API Ağ Geçidi Yönetim Yaşam Döngüsünde Beş Ana Aşama Vardır

1. API ağ geçidi sistemi planlama

2. API ağ geçidi bileşenlerini yükleme

3. Etki alanı yapılandırma

4. API ağ geçidini çalıştırma ve yönetme

5. API ağ geçidini yükseltme

API Ağ Geçidinin Avantajları ve Dezavantajları

Tahmin edebileceğimiz gibi, bir API ağ geçidi kullanmanın hem avantajları hem de dezavantajları vardır. API ağ geçidi kullanmanın en büyük yararı, uygulamanın iç yapısını kapsamasıdır. Belirli hizmetleri çağırmak yerine, istemciler ağ geçidiyle konuşurlar. API ağ geçidi, her tür istemciye belirli bir API sağlar. Bu, istemci ile uygulama arasındaki gidiş-dönüş sayısını azaltır. Ayrıca müşteri kodunu basitleştirir.

API ağ geçidinin bazı dezavantajları da vardır. Geliştirilmesi, devreye alınması ve yönetilmesi gerekmektedir. Geliştiriciler, her bir mikro hizmetin uç noktalarını ortaya çıkarmak için API ağ geçidini güncellemelidir. API ağ geçidini güncelleme işleminin mümkün olduğunca hafif olması önemlidir. Aksi takdirde, geliştiriciler ağ geçidini güncellemek için sırada beklemek zorunda kalacaklardır. Ancak bu dezavantajlara rağmen, çoğu gerçek dünya uygulaması için bir API ağ geçidi kullanmak mantıklıdır.

API ağ geçidi, bazı istekleri uygun arka uç hizmetine yönlendirerek işler. Birden çok arka uç hizmetini çağırarak ve sonuçları toplayarak diğer istekleri işler. Ürün ayrıntıları isteği gibi bazı isteklerde, arka uç hizmetlerine yönelik istekler birbirinden bağımsızdır. Yanıt süresini en aza indirmek için API ağ geçidi, bağımsız istekleri eşzamanlı olarak gerçekleştirmelidir. Ancak bazen istekler arasında bağımlılıklar olabilir. API ağ geçidinin, isteği bir arka uç hizmetine yönlendirmeden önce bir kimlik doğrulama hizmetini arayarak isteği doğrulaması gerekebilir. Benzer şekilde, bir müşterinin istek listesindeki ürünler hakkında bilgi almak için API ağ geçidi, önce müşterinin bu bilgileri içeren profilini almalı ve ardından her ürün için bilgileri almalıdır.

Geleneksel asenkron geri arama yaklaşımını kullanarak API kompozisyon kodu yazmak, bizi hızlı bir şekilde geri arama zorluğuna götürür. Kod karışık, anlaşılması zor ve hataya açık olacaktır. Çok daha iyi bir yaklaşım, reaktif bir yaklaşım kullanarak API ağ geçidi kodunu bildirimsel bir tarzda yazmaktır. Reaktif soyutlama örnekleri arasında Scala’da Future , Java 8'de CompletableFuture ve JavaScript’te Promise bulunur. Ayrıca Reaktif Uzantılar (Rx veya ReactiveX olarak da adlandırılır), orijinal olarak Microsoft tarafından .NET platformu için geliştirildi. Netflix, JVM için özel olarak API ağ geçidinde kullanmak üzere RxJava’yı yarattı. Hem tarayıcıda hem de Node.js’de çalışan JavaScript için RxJS de vardır. Tepkisel bir yaklaşım kullanmak, basit ama etkili API ağ geçidi kodu yazmanıza olanak tanır.

Api Ağ Geçidi Hizmeti Sağlayan Şirketler

Bir tür API ağ geçidi işlevi içeren API yönetim platformu satıcılarına örnekler arasında Akana, Mulesoft, Postman, Tibco, Workato ve diğerleri sayılabilir.

Müşteriler ayrıca belirli API ağ geçidi araçlarını ayrı ayrı alabilir ve kullanabilir. Örnekler arasında Apigee (artık Google Cloud’un bir parçası), Express Gateway, Kong Gateway, Oracle API Gateway ve Tyk API Gateway sayılabilir.

Başlıca genel bulut sağlayıcıları API yönetim platformları sunar: AWS API Gateway, Microsoft Azure API Management ve Google Cloud Endpoints. Ayrıca platformlarına özel API ağ geçidi araçları da sunarlar: Amazon API Gateway, Azure API Gateway ve Google Cloud API Gateway (Ocak 2021 itibarıyla beta sürümünde).

Özet

Bu yazımızda API ağ geçidi nedir? Hangi projelerde uygulamak daha doğrudur? Kullanımı önemli midir? Nasıl çalışır? Neler sağlar? Avantajları ve dezavantajları nelerdir? Ağ geçidi sağlayan şirketler hangileridir vb. konularına cevap bulmaya çalıştık.

Kısaca hatırlamak gerekirse;

Çoğu mikro hizmet tabanlı uygulama için, bir sisteme tek bir giriş noktası görevi gören bir API ağ geçidi uygulamak mantıklıdır. API ağ geçidi, istek yönlendirme, oluşturma ve protokol çevirisinden sorumludur. Uygulamanın istemcilerinin her birine özel bir API sağlar. API ağ geçidi, önbelleğe alınmış veya varsayılan verileri döndürerek arka uç hizmetlerindeki hataları da maskeleyebilir. Bu sayede projemizde yer alan kodlarımız daha stabil, hataya kapalı ve tek bir yerden kontrol edilebilir duruma getirilir.

Bir dahaki yazımızda görüşmek dileğiyle.

Hoşça kalın…

--

--