Przejdź do treści

Programowanie po stronie serwera — język działający za kulisami

Bezstanowy HTTP, sesje, zmienne środowiskowe i wydajność serwera WWW

Wstęp

Programowanie po stronie serwera to kod, który działa na serwerze, a nie w przeglądarce użytkownika. Tu mieszka logika biznesowa: sprawdzanie, czy użytkownik może zobaczyć stronę, pobieranie i zapisywanie danych w bazie oraz dostarczanie odpowiedzi do frontendu. Regulamin kształcenia web developera wymaga w przedmiocie Programowanie po stronie serwera, aby uczeń samodzielnie umiał programować po stronie serwera przy tworzeniu rozwiązań internetowych i łączeniu ich ze źródłami danych i systemami zaplecza.

Język ma mniejsze znaczenie niż myśli się

Istnieje wiele języków i środowisk do programowania po stronie serwera — na przykład JavaScript w środowisku serwerowym, PHP, Python, Java i C#. Różnią się w składni i ekosystemie, ale rozwiązują zasadniczo te same podstawowe zadania: odbierają żądanie, rozmawiają z bazą danych, stosują reguły biznesowe i wysyłają odpowiedź z powrotem. Zrozumienie zasad w jednym języku czyni znacznie łatwiejsze wdrożenie się w inny, gdy miejsce pracy tego wymaga.

HTTP jest bezstanowy — dlatego istnieją sesje

HTTP, protokół leżący u podstaw praktycznie całego ruchu sieciowego, jest bezpaństwowy: serwer z natury nic nie pamięta z jednego żądania na następne. Bez czegoś dodatkowego serwer nie wiedziałby, czy dwa żądania pochodzą od tego samego zalogowanego użytkownika. Rozwiązaniem jest pozwolenie serwerowi wydać coś, co przeglądarka wysyła z powrotem za każdym razem — typowo plik cookie sesji lub token — który serwer może wyszukać i rozpoznać. Dlatego użytkownik jest 'zalogowany', chociaż każde indywidualne żądanie HTTP w rzeczywistości jest samodzielne.

  • 01Sesja: serwer przechowuje stan i daje klientowi tylko numer referencyjny
  • 02Token (np. podpisany klucz dostępu): stan leży w samym tokenie, który serwer może zweryfikować bez wyszukiwania
  • 03Obie części muszą być chronione przed kradzieżą lub złamaniem, i muszą móc wygasnąć

Zmienne środowiska i sekrety

Serwer musi często znać tajemnice: hasło bazy danych, klucze do usług zewnętrznych, wartość używaną do podpisywania sesji. Nigdy nie powinny one być bezpośrednio w kodzie źródłowym ani w systemie kontroli wersji, gdzie mogą być przeczytane przez każdego mającego dostęp do repozytorium. Zamiast tego są ustawiane jako zmienne środowiskowe na serwerze, na którym działa kod, poza tym, co jest commitowane do Gita — ta sama filozofia, którą artykuł na temat GDPR i bezpieczeństwa sieci podkreśla.

Wydajność serwera WWW

Regulamin kształcenia wymaga też znajomości serwerów WWW, w tym ich wydajności i funkcjonalności. Serwer WWW musi obsłużyć wiele jednoczesnych żądań, nie uginając się pod obciążeniem. O wydajności zwykle decyduje to, jak szybko odpowiada się na każde żądanie (np. jak wydajne są zapytania do bazy danych), czy odpowiedzi, które rzadko się zmieniają, są buforowane zamiast obliczane za każdym razem od nowa, i czy serwer może się skalować, uruchamiając równolegle kilka instancji, gdy rośnie obciążenie.

Od kodu do działającej usługi

Kod strony serwera nie jest gotowy, dopóki nie działa tam, gdzie go mogą osiągnąć użytkownicy. Wymaga to spakowania kodu, ustawienia z właściwymi zmiennymi środowiskowymi i monitorowania, aby błędy zostały wykryte, zanim sami użytkownicy je znajdą — temat, następny artykuł o wdrażaniu i eksploatacji będzie kontynuować.

“Frontend to to, co widzi użytkownik. Backend to to, co określa, czy to, co widzi użytkownik, jest w ogóle prawdziwe i bezpieczne.”

— Zwykła reguła nauczania w tworzeniu stron internetowych