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 zamiast w przeglądarce użytkownika. To jest tutaj, gdzie żyje logika biznesowa: sprawdzanie, czy użytkownik może zobaczyć stronę, pobieranie i zapisywanie danych w bazie danych oraz dostarczanie odpowiedzi do frontendu. Rozporządzenie do szkolenia web dewelopera wymaga, aby uczeń mógł niezależnie pracować z programowaniem po stronie serwera w odniesieniu do produkcji rozwiązań sieciowych i połączenia ze źródłami danych i systemami wstecz.

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

Rozporządzenie wymaga również znajomości serwerów internetowych, w tym wydajności i funkcjonalności. Serwer internetowy powinien być w stanie obsługiwać wiele jednoczesnych żądań bez upadku. To, co zwykle decyduje o wydajności, to szybkość odpowiadania na każde żądanie (na przykład jak efektywne są wyszukiwania bazy danych), czy odpowiedzi, które nie zmieniają się często, są buforowane zamiast być przeliczane za każdym razem, i czy serwer może skalować się, uruchamiając wiele instancji równolegle, gdy obciążenie rośnie.

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