3 min czytania
Back-end, czyli zaplecze techniczne aplikacji
Back-end to część aplikacji internetowej osadzona na serwerze dostawcy aplikacji. Z reguły składają się na niego dwie warstwy – baza lub bazy danych oraz kod właściwiej aplikacji. O ile w przypadku front-endu można mówić o pewnej standaryzacji wykorzystywanych narzędzi, w dużym stopniu narzuconej przez dostępne na rynku przeglądarki internetowe, o tyle na back-endzie swoboda w doborze narzędzi, takich jak języki programowania lub rodzaje baz danych, jest dużo większa.
Popularne zestawy narzędzi gromadzone są w postaci tzw. frameworków, czyli środowisk obejmujących gotowe implementacje wybranych rozwiązań wraz z modułami rozszerzającymi ich funkcjonalność (bibliotekami), umożliwiając szybsze rozpoczęcie pracy nad właściwą aplikacją.
Niezależnie od wyboru frameworku lub indywidualnych narzędzi, back-end jako całość musi spełnić pewne zadania w kontekście działania aplikacji. Wśród tych zadań można wyróżnić:
- obsługę zapytań otrzymywanych ze strony aplikacji klienta – w tym weryfikację ich poprawności oraz udzielenie odpowiedzi dostosowanej do treści zapytania
- wymianę informacji z bazą danych – kod aplikacji musi umożliwiać zarówno pobieranie danych (na przykład: listę ostatnio oglądanych filmów), jak również ich zapis (np. zarejestrowanie nowego użytkownika) lub edycję (np. zmianę hasła)
- wygenerowanie struktury strony internetowej, w oparciu o dostępne szablony oraz informacje z bazy danych, który umożliwi jej wyświetlenie przez aplikację klienta
Popularnym rozwiązaniem stosowanym przez wielu twórców aplikacji jest przypisanie dedykowanego modułu aplikacji do realizacji każdego z tych zadań. Na takich założeniach opiera się m.in. prawdopodobnie najpowszechniej stosowany w aplikacjach internetowych wzorzec projektowy o nazwie MVC (ang. model-view-controller).
W jego przypadku za kontakt z aplikacją klienta oraz zarządzanie całym procesem przygotowywania odpowiedzi odpowiada kontroler, natomiast za generowanie struktury strony internetowej oraz kontakt z bazą danych są odpowiedzialne podporządkowane mu moduły: widok oraz model.
Czy to koniec?
Oczywiście, że nie! Wiele zaawansowanych aplikacji w istocie wykorzystuje inne, mniejsze aplikacje podczas swojego działania, wymieniając z nimi informacje lub wykorzystując zaimplementowane w nich funkcjonalności. Aby było to możliwe, oprócz standardowego połączenia pomiędzy klientem a serwerem, twórcy aplikacji przygotowują tak zwane API (ang. application programming interface) – dedykowane interfejsy pozwalające na obsługę zapytań generowanych przez inne aplikacje.
Działają one w zbliżony sposób do połączenia pomiędzy back-endem a front-endem – w celu ich prawidłowego funkcjonowania konieczne jest określenie pewnych standardów – protokołu oraz procedur, które pozwolą dwóm aplikacjom na wzajemne rozumienie wysyłanych sobie pytań i odpowiedzi.
Z wykorzystaniem API można dodać do swojej aplikacji wiele gotowych, istniejących na rynku rozwiązań, wykorzystywanych na przykład do identyfikacji użytkownika lub realizowania płatności internetowych.
Zbiór wszystkich technologicznych rozwiązań zastosowanych w danej aplikacji – narzędzi oraz frameworków wykorzystanych w back-endzie oraz front-endzie, a także dodatkowych modułów połączonych poprzez API – nazwa się „stosem technologicznym”.
Przykładowe stosy wykorzystywane przez popularne aplikacje internetowe można znaleźć pod adresem:
https://stackshare.io/
W kontekście aplikacji internetowych warto też wspomnieć o „ciasteczkach” – niewielkich plikach przechowywanych na urządzeniu użytkownika, które zawierają informacje przesyłane do serwera wraz z częścią zapytań. Dzięki nim możliwe jest na przykład pozostanie zalogowanym w aplikacji pomimo zamknięcia okna przeglądarki – informacja o aktywnym użytkowniku jest przechowywana w pliku cookie i podczas kolejnej sesji łączenia się z serwerem umożliwia jego identyfikację i wygenerowanie spersonalizowanej odpowiedzi.
Stosunkowo nowym trendem jest tworzenie aplikacji internetowych z możliwością zainstalowania na urządzeniu użytkownika oraz działania bez połączenia z siecią – wybrane dane niezbędne do prawidłowego funkcjonowania aplikacji są wówczas przechowywane w pamięci podręcznej (ang. cache) i synchronizowane z serwerem po przywróceniu połączenia z siecią. Jednym z prekursorów takiego rozwiązania jest Google ze swoją propozycją aplikacji nowej generacji – PWA (ang. Progressive Web Application). Więcej na temat tego projektu można przeczytać na jego stronie:
https://web.dev/progressive-web-apps/