API – kalendarz adwentowy #9

Gdy korzystamy z komputerów i internetu czasem możemy odnieść wrażenie, że jest to całkiem kompletny i spójny system, który zachowuje się tak, jak przewidujemy. Przez większość czasu odnosimy jednak wrażenie (a przynajmniej ja tak mam), że jest to raczej potwór Frankensteina, który działa tylko dlatego, że wszystkie nadgniłe elementy są w miarę szybko wymieniane. Tak jakbyśmy mieli bardzo wiele programów i usług, które są zupełnie do siebie niepodobne, a połączone są ze sobą grubymi szwami. I te szwy to w mojej wizji świata jest coś, co formalnie nazywamy API.

API — co to takiego?

Skrót API pochodzi od angielskiego wyrażenia application programming interface, czyli po polsku interfejs programowania aplikacji. Nazwa może nie jest zbyt intuicyjna dla laika, ale da się ją rozszyfrować. Jest to taki sposób tworzenia aplikacji, żeby te aplikacje mogły się komunikować z systemem operacyjnym i ze sobą nawzajem. Czyli żeby wszystko działało tak, jak należy.

Po co mi API?

Definicja definicją, ale po co mi w ogóle coś takiego? No bo jak piszę swoją aplikację, to dlaczego miałbym się komunikować w jakiś specjalistyczny sposób z systemem albo innymi aplikacjami? Okazuje się, że taka komunikacja za pomocą API odbywa się cały czas, jest tylko sprytnie zamaskowana przed naszymi oczami do absolutnego minimum. I całe szczęście, bo średnio porywające wydaje mi się głowienie nad tym, jak sprawić, żeby mój „print” faktycznie dotarł do systemu operacyjnego i wyświetlił się w konsoli tekstowej.

Mikroserwisy

Jest jednak jeszcze jeden powód, dla którego powinniśmy znać słówko API — mikroserwisy. Mikroserwisy to taki sprytny sposób na komunikację wewnątrz aplikacji. Taka sytuacja: mamy pomysł na jakąś aplikację wykorzystującą uczenie maszynowe. Kodujemy sobie swobodnie, ale z czasem nasza aplikacja zaczyna się rozrastać. Dzielimy ją więc na kawałki: jakieś wczytywanie danych, jakieś trenowanie, jakieś predykcje. Zauważamy, że niektóre kawałki rozwijamy mocniej, niektóre mniej. No i chcielibyśmy, żeby np. predykcje były błyskawiczne, nawet jeśli wiele osób korzysta z aplikacji. Wydzielamy więc moduł predykcyjny jako osobną aplikację. Resztę też dzielimy na osobne mini aplikacje. W ten sposób budujemy powoli zbiór aplikacji, których zadaniem jest robienie tylko jednej rzeczy. Taka architektura to mikroserwisy właśnie. Pozostaje jednak pytanie, jak będą komunikować się te aplikacje?

I tutaj właśnie przyda się koncepcja API. Każda aplikacja będzie samoistna i mająca jedno zadanie do zrealizowania. A dzięki zdefiniowaniu API każda z tych aplikacji będzie mogła wysyłać zadanie do innej i odebrać od niej wynik. W ten sposób wystarczy poświęcić relatywnie mało czasu i zasobów na zdefiniowanie API, a więcej czasu można poświęcić na optymalizację działania poszczególnych aplikacji/mikroserwisów.

WebAPI?

Oprócz API do komunikacji między aplikacjami bardzo popularne są też WebAPI. Są to API powiązane często z serwisami internetowymi, z którymi nasze aplikacje mogą się komunikować. Takie API na przykład dostarcza GIOŚ (więcej tutaj). Możemy więc stworzyć aplikację, która co jakiś czas zapyta się GIOŚ, jaką mamy jakość powietrza. Aplikacja ta, na podstawie uzyskanej odpowiedzi podejmie dalsze działania. Co więcej, różne usługi internetowe mogą odpytywać inne usługi internetowe. Powstaje więc cała sieć komunikacji M2M, czyli komunikacji maszyny z maszyną. A to wszystko właśnie dzięki API.

API — Podsumowanie

Mam nadzieję, że czujesz już, czym jest to API. Ciekaw jestem, czy również masz takie odczucie jak ja (wspomniany potwór Frankensteina). Faktem jest, że powstało wiele różnych inicjatyw mających na celu wprowadzenie jakiejś standaryzacji w tworzeniu API. Faktem jest również to, że takie interfejsy są definiowane na ogół przez twórców danej aplikacji bądź serwisu i często robione jest „na odpiernicz”, bo fajnie byłoby je mieć. Albo jest udostępnione bez żadnej dokumentacji. Wtedy niby jest, ale nie da się go użyć. Więc w praktyce go nie ma. Tak czy siak, API stało się stałym elementem wytwarzania oprogramowania, nawet w uczeniu maszynowym. Warto więc może się do niego przyłożyć?

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *