Azure API Management'a Giriş

0 dakikada yazıldı

21349 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
ManagementAzure 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.