Azure API Management'a Giriş

0 dakikada yazıldı

21388 defa okundu

Düzenle

Azure API Management olarak bundan bir süre önce hizmete açılan ürün
aslında Microsoft'un sonradan satın aldığı Apiphany firmasına ait.
Ürünün amacı elinde veri olan firmaların kolayca bu veriyi JSON REST
API'lar ile dışarıya açabilmesini sağlamak. Hali hazırda hiç API'nız
olmayabilir, WSDL'leriniz olabilir veya kafanıza göre yazdığınız API'lar
vardır :) tüm bunları toplayıp üzerine adam gibi bir dokümantasyon
portalı koymak, portal üzerinden lisans modelleri yaratıp verinizi o
modellere uygun fiyatlandırmalarla satmak, kullanım miktarlarını ölçmek
ve sınırlamak vs gibi elinizdeki API olarak hizmet formatında
kullandırmak istediğinize ihtiyacınız olabilecek neredeyse her şey API
Management ürünü içerisine yer alıyor. Ürün bir anlamda veriniz ile dış
dünya arasında proxy işlemi görürken transformasyon, ölçümleme,
authorization gibi bir çok ek işlevsellik sunuyor.

Azure API Management
Azure API Management

Her Azure ürününde olduğu gibi API Management için de Azure portalından
gibip bir service account edinebiliyorsunuz. Toplamda sadece iki tane
fiyatlandırma seviyesi var; Developer ve Standard. Developer sürümü ile
Standard arasında işlevsellik açısından bir farklılık yok. Sadece
kullanabileceğiniz kotalar ve ödeyeceğiniz rakam değişiyor. Standard
modelde Unit başında günlük 22$ ödeyerek aylık 200 Milyon API Request,
1TB veri transferi, 10GB önbellek sahibi oluyorsunuz. Şu an için dört
ünitenin üzerine çıkmak isterseniz doğrudan Support Ticket açmanız
gerekiyor. Eğer fazladan bandwidth kullanırsanız o durumda da standard
Azure bandwidth maliyetleri karşınıza çıkıyor.

Hello World!

Bu yazıda API Management'daki konseptler ve ürünün genel manzarasından
öte hızlı bir demo ile çok basit bir şekilde ürünün ne yaptığını kabaca
göstermek istiyorum. Detayları ve konseptleri sonraki yazılarda
inceleriz. Örneğimizde kullanacağımız servis internete açık bir hava
durumu servisi olacak. Bu servisi şirketiniz içerisinde, normal
şartlarda dışarıya açık olmayan bir servis olarak hayal edebilirsiniz.

http://api.openweathermap.org/data/2.5/forecast?q=istanbul&mode=xml

Yukarıda da gördüğünüz servis epey basit. Şimdi bu arkadaşı alıp hem
URLReWrite yapacağız, hem satılabilir bir API ürünün içine koyacağız,
hem önünde key based authentication alacağız :) Tüm bunları yaparken bu
API'yı bir de API Developer Portal sahibi haline getireceğiz. Tahmin
edeceğiniz üzere tüm bu işlemleri zaten API Management otomatik olarak
hallediyor.

API Management portalına geçelim.
API Management portalına geçelim.

API Management Service Account'unuzun provisioning işlemi sonrasında
ekrana karşınıza yukarıdaki görüntü gelecek. Buradan hemen Management
Console'a geçmenize fayda var. Tüm işimiz Management Console içerisinde
olacak.

Yeni bir API ekleyelim.
Yeni bir API ekleyelim.

Yeni API'mızı eklerken istediğimiz ismi ve URL'i tanımlayabiliriz. Daha
önce de dediğim gibi aslında en basit hali ile API Management API'lar
arası proxy görevi yapıyor. Proxy olmanın avantajı ile tabi ki var olan
bir API'ın üzerine bir çok özellik ekleyebiliyor. Bir sonraki adımda
karşınıza gelen sayfada API'mızın ana ayarlarını yapacağız.

API'mızın ana ayarları burada.
API'mızın ana ayarları burada.

API'ya verdiğimiz isin developer portalımızda gözükecek. Web Service URL
kısmına ise kullanacağımız servisi root URL'ini veriyoruz. Son olarak da
URL Suffix kısmına bizim API adresimizde bu API'ın barındırılacağı
konumu belirliyoruz. Zaten kabaca ekranın altında URL'in son halini
görebilirsiniz. "Save" diyerek devam ettiğiniz sıra gelecek bu API için
farklı operasyonları tanımlamaya. Hemen "Operations" tabından "Add
Operation" diyerek sonraki adıma geçebilirsiniz.

GET Operasyonumuzu tanımlıyoruz.
GET Operasyonumuzu tanımlıyoruz.

URL Template kısmında gördüğünüz operasyon tipi bizim dışarıya
açacağımız ve aynı anda hava durumu servisine de göndereceğimiz HTTP
operasyonu olan GET. Template'ın diğer kısmı ise bizim dışarıya
açacağımız şablon. Biz dışarıdan sadece şehir bilgisi verilmesini ve
bunun bir QueryString parametresi olarak değil de URL'in bir parçası
olarak gelmesini istiyoruz. Bir alt adımda Url ReWrite Template ise ana
kaynağımız olan API'ya nasıl gidileceğini tanımlıyoruz. Her iki template
içerisinde de aynı "{sehir}" parametresini neden kullandığımı sanırım
tahmin edebilmişsinizdir :) Son olarak "Display Name" e developer
portalında bu API'ın nasıl gözükeceğini yazıyoruz.

Şimdilik bu kadarı yeter. API Management'ı daha fazla mıncıklamadan bu
hazırladığımız API'yı nasıl kullanabiliriz ona göz atalım. İlk olarak bu
API'yı bir ürüne eklememiz gerek. Doğru okudunuz; "Bir Ürün" dedim.
API'larınızı dışarıya açıyorsanız bunlar bir ürün olarak düşünülmeli. En
azından API Management konseptinde belirli API setlerininin beraber
gruplanarak bir ürün olarak açılacağı düşünülmüş. O nedenle hemen
Management portalında "Products" sekmesine geçiyoruz. Bu bölümde
"Unlimited" ve "Starter" diye iki ürünün hali hazırda tanımlı olduğunu
göreceksiniz. Bu ürünlerden "Unlimited"'ı seçerek "Add API to Product"
dediğinizde karşınıza "Hava Durumu" API'mız gelecek. Seçip "Save"
derseniz söz konusu API'yı Unlimited adındaki API ürünümüze eklemiş
olacağız. Hemen ekranın sağ üstünde "Developer Portal" linki
göreceksiniz. Tıklayın!

API Management Developer Portal karşınızda.
API Management Developer Portal karşınızda.

Portala girdiğinizde üst kısımdan "API" sekmesine tıklarsanız tüm
API'larımız bir listesi gelecek. Oradan "Hava Durumu"nu seçin ve "Open
Console" diyin. Karşınıza API'nızı çağırabileceğiniz bir test ortamı
gelecek. Bu sayfadaki bilgilere dikkat ederseniz bizim kaynak olarak
kullandığımız API'n adı bile geçmiyor. Tabiri caiz ise API'yı API ile
wrap ettik :) Üzerine farkında olmaran subscription base authentication
bile koyduk. Nasıl mı? Şu an bu API'yı konsoldan çalıştırmaya
kalkarsanız çalışmadığını göreceksiniz çünkü size özel verilecek
subscription key olmadan API'lara ulaşamazsınız. Bunun için normalde
kullanıcının yani developerın portalınıza kayıt olması vs gerekiyor ama
biz kendimiz için hızlıca key alabiliriz. Hemen portalın sonuna
/developer yazın (benim örneğimde
https://darontest.portal.azure-api.net/developer)
ve o adresten key'inizi alın. Key'i aldıktan sonra konsol kısmında uygun
yerleri doldurursanız istediğiniz şehrin adını da yazıp API'yı
çağırabilirsiniz. Siz bu API'yı kendi keyiniz ile çağırdığınız API
Management arkada bizim kaynak API'yı kullanarak veriyi alıp verecek.

İşte böyle....

Sanırım az çok Azure API Management'ın nasıl bir sorunu çözmeye
çalıştığını anlatabilmişimdir. Konuyu konsept olarak anlatmaktansa bir
örnek üzerinden gitmenin daha iyi olacağını düşündüm. Tabi ki bu yazıda
anlatmadığım milyon tane şey var. API Management basit bir proxy olmanın
çok ötesinde. Diğer yandan API Management "API Yazmamıza gerek yok mu
artık?" gibi bir sorunun nedeni de olamaz. API Management'ı bir anlamda
API'nızı enstrümante eden bir ürün olarak görebilirsiniz. Kurum olarak
dışarıya açacağınız API'ların güzel bir şekilde kontrolü,
transformasonu, throttle işlemlerini vs yapmak istiyorsanız API
Management süper bir çözüm olacaktır. API yazanlar bilir :) API yazmakla
bitmiyor, monitorin, caching, throttling, billing vs derken işler iyice
karışabiliyor ve esas yapmak istediklerinizden, sunmak istediğiniz
değerden bir süre uzaklaşmanıza neden olabiliyor. API Management bu
sorunların çözümü olabilir.

Görüşmek üzere.