SDK

Zestaw narzędzi, bibliotek i dokumentacji ułatwiający tworzenie aplikacji na daną platformę lub z daną usługą.

SDK (Software Development Kit) to gotowy zestaw narzędzi, bibliotek, dokumentacji i przykładów kodu, który dostawca platformy lub usługi daje Ci po to, żebyś nie musiał pisać wszystkiego od zera. Zamiast samodzielnie ogarniać surowe API, autoryzację i tysiąc szczegółów po drodze, dostajesz gotowe klocki w języku, którego używasz, i budujesz aplikację szybciej. W skład SDK wchodzą zwykle biblioteki do wpięcia w projekt, narzędzia (kompilatory, emulatory, debuggery), dokumentacja oraz przykładowe projekty pokazujące, jak to spiąć.

Do czego to służy

SDK jest zawsze powiązane z konkretną platformą lub usługą. Android SDK pozwala pisać aplikacje na telefony z Androidem, AWS SDK gada z chmurą Amazona, a Stripe SDK obsługuje płatności. Idea jest ta sama: ktoś już rozwiązał trudne i powtarzalne rzeczy (komunikacja sieciowa, obsługa błędów, format danych), a Ty wywołujesz to jedną metodą.

Warto rozróżnić SDK od API. API to interfejs, czyli kontrakt mówiący „co” możesz wywołać. SDK to natomiast zestaw narzędzi, który najczęściej opakowuje to API w wygodne funkcje i dorzuca całą resztę potrzebną do pracy. W skrócie: API to lista dostępnych komend, a SDK to walizka z narzędziami, w której często siedzi też klient do tego API.

Przykład z praktyki

Załóżmy, że dorzucasz do aplikacji w Pythonie wysyłanie plików na Amazon S3. Zamiast ręcznie budować podpisane żądania HTTP, instalujesz oficjalne SDK (boto3):

pip install boto3

I dalej w kodzie wystarczy mniej więcej tyle:

s3 = boto3.client("s3")

s3.upload_file("raport.pdf", "moj-bucket", "raport.pdf")

Dwie linijki zamiast godziny walki z autoryzacją. To właśnie sens SDK.

Na co uważać

  • Wersje się zmieniają. SDK żyje, a aktualizacja major (np. z v2 na v3) potrafi wywrócić Twój kod. Czytaj changelog i przypinaj wersje w zależnościach.
  • SDK to nie magia. Pod spodem i tak siedzi API z limitami zapytań i błędami sieci. Obsłuż wyjątki, nie zakładaj, że zawsze działa.
  • Vendor lock-in. Im głębiej wsiąkniesz w jedno SDK, tym trudniej później przesiąść się na innego dostawcę.
  • Bierz oficjalne SDK, a nie pierwszą lepszą bibliotekę „od społeczności”, chyba że ma świeże commity i sensowną liczbę użytkowników.

Pojęcia powiązane

API, biblioteka, framework, IDE, REST, dependency (zależności), package manager (npm, pip), wrapper.