API Management jako gateway dla Twojej aplikacji

Posted by Maciej Gos on Monday, July 22, 2019

Czy usługa Azure API Management może być głównym wejście do systemu?

Obecnie w dobie architektury micro usług (microservices), oraz tworzenia API do wszystkiego wiele systemów boryka się z problemem w jaki sposób udostępniać swoje API, zarządzać dostępem do niego lub też ograniczać jego użycie.

Z pomocą przychodzi nam jedna z usług działająca w chmurze Microsoft Azure o nazwie API Management.

W niniejszym artykule głównie skupię się na wersji serverless w której płacimy tylko za faktyczne wykorzystanie, ale usługa ta posiada również inne plany użycia.

Od 29 Maja API Management w planie konsumpcyjnym jest oficjalnie dostępne (GA).

Czym jest API Management?

API Management helps organizations publish APIs to external, partner, and internal developers to unlock >the potential of their data and services. Businesses everywhere are looking to extend their >operations as a digital platform, creating new channels, finding new customers and driving deeper&>nbsp;engagement with existing ones. API Management provides the core competencies to ensure a successful&>nbsp;API program through developer engagement, business insights, analytics, security, and protection. You can >use Azure API Management to take any backend and launch a full-fledged API program based on >it.

About API Management

API Management jest usługą działającą w chmurze, która ma pomóc organizacjom w udostępnianiu swoich wewnętrznych zasobów za pomocą API dla partnerów lub też programistów. Usługa ta może działać w kilku modelach Consumption, Developer, Basic, Standard oraz Premium. Każdy z modeli różni się między sobą udostępnionymi zasobami, funkcjonalnością, wydajnością oraz sposobem rozliczania. Ze szczegółami każdego z modeli możemy się zapoznać w dokumentacji.

Poniżej zajmiemy się konfiguracją usługi w wersji serverless.

Konfiguracja

W portalu Azure wybieramy opcję tworzenia nowej usługi, gdzie szukam “API Management”. Możemy to również zrobić poprzez wbudowane w portal wyszukiwanie.

Tworzenie usługi

  1. W kolejnym kroku podajemy wymagane dane.

Konfiguracja usługi API Management

  1. Ważnym krokiem na tym etapie jest wybór odpowiedniego “Pricing tier” w naszym wypadku będzie to Consumption.

  2. W kolejnym kroku usługa rozpoczyna proces tworzenia zasobu

Deployment

  1. Gdy usługa jest już gotowa możemy przejść do dodawania naszej “Function App”. (Tak tak udostępniane przez nas API również będzie serverless).

  2. W tym celu przechodzimy do sekcji “API Management” gdzie wybieramy opcję API.

Tworzenie API

  1. Następnie wybieramy “Function App”

Function App

  1. Na kolejnym ekranie mamy możliwość podania wszystkich parametrów naszej aplikacji lub też jej wyszukania

  1. Po poprawnym przejściu tego etapu mamy zdefiniowane wszystkie parametry naszej aplikacji

  1. Finalnie konfiguracja naszej usługi API Management będzie prezentowała się następująco

Funkcjonalność API Management

Polisy Polityki

Usługa API Management posiada zaawansowany mechanizm polis polityk który pozwala modyfikować zachowanie naszego API lub też je dodatkowo zabezpieczyć. Dzięki polisom politykom możemy w prosty sposób dodać np. obsługę CORS do naszych końcówek API co jest częstym problemem w aplikacjach SPA pisanych za pomocą Angular lub React.

Przykłady polis polityk jakie można definiować możemy znaleźć w dokumentacji Microsoft https://docs.microsoft.com/en-us/azure/api-management/policy-samples

Subskrypcje, czyli prosty sposób na zabezpieczenie dostępu do API

Mechanizm subskrypcji pozwala na zabezpieczenie w prosty sposób dostępu do naszego API tylko dla klientów posiadających nasz unikalny klucz. Może on być przekazywany w nagłówku żądania bądź też query string.

Klucz ten może być również unikalny dla każdego z naszych klientów.

Niestety nie ma róży bez kolców API Management w wersji Consumption nie udostępnia nam portalu dla programistów z tego też względu nie możemy udostępnić naszego API w prosty sposób dla naszych “klientów”.

Monitoring

Jeżeli będzie nas interesowało monitorowanie poprawności działania naszego API to usługa ta integruje się z inną usługą działającą w chmurze o nazwie Application Insights dzięki temu możemy mieć zgromadzone w jednym miejscu wszystkie dane o działaniu naszego API, oraz o wszystkich żądaniach i odpowiedziach jakie do niego przychodzą lub wychodzą.

Monitoringiem API i konfiguracją zajmiemy się w oddzielnym artykule.

Wersjonowanie API

API Management pozwala również na wersjonowanie naszego API poprzez zastosowanie mechanizmu rewizji i wersjonowania.

Definicja Microsoft pochodząca z blog zespołu API Management mówi.

What are Versions & Revisions?It helps to first explain what we mean by these terms – as they are two distinct, yet related, features:– Versions allow you to present groups of related APIs to your developers. Versions differentiate themselves through a version number (which is a string of any value you choose), and a versioning scheme (path, query string or header).

– Revisions allow you to make changes to your APIs in a controlled and safe way. When you want to make changes, create a new revision. You can then edit and test API without disturbing your API consumers. When you are ready, you can then make your revision current – at the same time, you can post an entry to the new change log, to keep your API consumers up to date with what has changed.

Versions & Revisions

Innymi słowy mechanizm rewizji możemy wykorzystać gdy:

  • chcemy szybko przetestować zmiany
  • chcemy przetestować zmiany przed publikacją w produkcyjnym API
  • zmiany są nieduże

Mechanizm wersjonowania przyda nam się gdy:

  • chcemy mieć dostęp do wielu wersji API w tym samym czasie
  • chcemy udostępnić nową wersję API tylko dla pewnej grupy odbiorców

Koszty

Jako, że wybrana przez nas konfiguracja działa w modelu serverless/konsumpcyjnym to płacimy tylko za wykorzystane faktycznie zasoby. Wygląda to następująco.

Czyli za milion wywołań naszego API zapłacimy ~3€ przy czym pierwszy milion w danym cyklu rozliczeniowym jest za darmo.

Podsumowanie

Jest to dopiero wprowadzenie do usługi, która w wersji serverless jest dość mocno okrojona funkcjonalnie ale jest również tania w wykorzystaniu (przynajmniej w zastosowaniach do których jej używałem). Kolejny plus już bardziej związany z planami typu consumption to opłaty za faktyczne wykorzystanie usługi.

W kolejnych artykułach chciałbym trochę bardziej rozwinąć temat tworzenia polis, zarządzania dostępem oraz wersjonowania API.

Photo by Zetong Li on Unsplash

Maciej Gos

真诚赞赏,手留余香

使用微信扫描二维码完成支付


comments powered by Disqus