Technologia

Jak wybrać odpowiedni serwer dla www czy aplikacji?

Paweł Lipka
7 min czytania

Serwer i infrastruktura serwerowa, znane również jako hosting, umożliwiają publikację aplikacji czy strony www w internecie. Jak go wybrać, żeby wszystko działało płynnie? Przeczytaj prosty przewodnik, w którym posłużyłem się porównaniami obrazującymi złożone zagadnienia świata IT.

Co to jest serwer?

Serwer to komputer, który ‘serwuje’ Twoje dane osobom korzystającym z Twojej aplikacji lub strony internetowej. Możesz wyobrazić go sobie sobie jako kelnera w restauracji, który przynosi jedzenie na Twój stół.

Jakie są rodzaje serwerów?

  1. Serwer WWW (np. nginx, apache, IIS) – działa jako pośrednik między aplikacją a klientem. Odbiera żądania od użytkowników i przekierowuje je do aplikacji na serwerze. Można go porównać do drzwi do Twojej restauracji – kontroluje kto wchodzi.
  2. Serwer aplikacji (np. php, node.js, python) – platforma, która uruchamia kod aplikacji, obsługuje żądania przychodzące z serwera WWW i odpowiada na nie. To kucharz – przetwarza żądania i ‘gotuje’ odpowiedzi.
  3. Serwer bazy danych (np. mysql, postgresql, mongodb) – przechowuje dane używane przez aplikację. Nawiązując do naszej restauracji, są to składniki do oferowanych potraw – wszystkie dane.
  4. Serwer plików – miejsce przechowywania danych, które może być integralną częścią serwera aplikacji lub oddzielną usługą, jak np. Amazon S3. To szafka, gdzie trzymasz różne rzeczy, jak zdjęcia czy filmy.
  5. Serwer kolejek – pozwala na asynchroniczne przetwarzanie zadań, zwiększając efektywność. To jak lista oczekiwania w restauracji. Gdy jest dużo gości, pomaga obsłużyć ich w kolejności.
  6. Serwer cache (np. redis) – przechowuje dane, które są często używane, aby przyspieszyć dostęp do nich. To jak menu z popularnymi potrawami gotowymi od ręki, przyspiesza cały proces.

Aby w pełni obsłużyć aplikację, potrzebujesz co najmniej trzech z powyższych serwerów. Jednak w zależności od konkretnych wymagań aplikacji, może być ich więcej (jeśli aplikacja ma specyficzne wymagania bądź oferuje specyficzne możliwości).

Jakie są podstawowe rodzaje hostingów?

  1. Hosting współdzielony – najprostsze rozwiązanie dla małych projektów. Miejsce na serwerze jest dzielone z innymi użytkownikami, co ogranicza wydajność i możliwości konfiguracji. Jak mieszkanie na wynajem z wieloma wspólokatorami. Tanie, ale z istotnymi ograniczeniami.
  2. Serwer dedykowany – masz pełną kontrolę nad fizycznym sprzętem, co daje dużą elastyczność. To tak jakbyś miał własny dom. Pełna kontrola, ale też pełna odpowiedzialność.
  3. Serwer wirtualny (VPS) – część zasobów fizycznego serwera, ale działa jako niezależna jednostka. Trochę jak mieszkanie w bloku. Masz swoje ‘pomieszczenie’, ale dzielisz budynek.
  4. Chmura – serwisy są dostarczane przez dostawcę chmurowego, dając różne możliwości konfiguracji. Jak wynajmowanie pokoju w hotelu. Elastycznie dostosowujesz do swoich potrzeb.

Najtańszy i najbardziej ograniczony jest hosting współdzielony. Z kolei najdroższa i najbardziej elastyczna jest chmura. Najwięcej prac administracyjnych kosztować Cię będzie serwer dedykowany. Z kolei najmniej, serwer współdzielony.

Bezpieczeństwo serwera

Podczas wyboru serwera kluczowym kryterium jest bezpieczeństwo. Obejmuje to ochronę serwera, aplikacji oraz przechowywanych danych. Do głównych zagrożeń należą:

  • Ataki DDoS: Mogą zablokować działanie aplikacji. Wybierając dostawcę, warto szukać takiego, który oferuje ochronę przed DDoS w swojej ofercie. Jeśli takiej ochrony nie ma, musimy sami ją zapewnić.
  • Włamania: Grożą kradzieżą danych lub instalacją złośliwego oprogramowania. Ochronę przed nimi można zapewnić samodzielnie, szczególnie na serwerach dedykowanych lub VPS. Jednakże dobry dostawca powinien też pomagać w tej kwestii. Sprawdzajmy czy oprogramowanie jest aktualizowane, czy używane są klucze SSH (zamiast haseł) oraz czy połączenie służące do przesyłania plików jest szyfrowane (najlepiej przez SFTP/SCP/RSYNC).

Ponadto, warto mieć możliwość ustawienia firewalla przez panel zarządzania hostingiem. W przypadku serwerów współdzielonych i niektórych chmurowych, ważne jest także łatwe dodawanie certyfikatu SSL/TLS. Jeśli dostawca nie pozwala na samodzielną instalację certyfikatu i dodatkowo pobiera za to opłatę, warto rozważyć innych (dyskwalifikacja).

Skalowalność serwera

Wraz z rosnącym ruchem i rozwijaniem aplikacji należy dbać o płynne działanie i nadążanie za rozwojem. 

  • Hosting współdzielony właściwie nie jest skalowalny. Jeśli Twoja aplikacja zaczyna zdobywać popularność, szybko zastanów się nad przejściem na inny typ serwera.
  • Najłatwiej skaluje się rozwiązania chmurowe, dają one mozliwość ustalenia z góry automatycznego dodawania / zabierania zasobów w zależności od obciążenia serwera. 
  • Skalowanie VPS i serwerów dedykowanych to w gruncie rzeczy podobne zagadnienie. Po prostu dokupujemy i uruchamiamy kolejny serwer w razie potrzeby (przy założeniu, że architektura aplikacji na to pozwala). W przypadku VPS mamy też możliwość skalowania pionowego czyli zamiany VPSa na większy – wiąże to się z koniecznością przerwy w działaniu. PS. warto upewnić się, że Twój dostawca hostingu oferuje taką opcję. 

Kiedy rozważyć zmianę z VPS/serwera dedykowanego do chmury bądź w przeciwnym kierunku? Najlepiej policzyć wszystkie koszty – sam serwer, administracja aplikacją, administracja serwerami lub chmurą, możliwość automatyzacji niektórych operacji czy prędkość skalowania (np. chmura przeskaluje nam się znacznie szybciej niż jakiekolwiek inne rozwiązanie).

Równoważenie obciążenia

Inaczej load balancing. Występuje gdy używamy więcej niż jednego serwera aplikacji. To jak kelnerzy w restauracji, którzy dzielą się obsługą klientów.

Ważne parametry, poza ceną, to przepustowość i ilość możliwych do obsłużenia żądań (requestów) do serwera. Można tu opierać się o rozwiązania dostarczone przez hostingodawcę lub stosować własne (w przypadku VPS i serwera dedykowanego). W chmurze najlepiej użyć chmurowego.

Backupy

Utrata danych w przypadku awarii bądź włamania to wielkie utrudnienie dla naszego biznesu, a w skrajnym przypadku jego koniec. Aby zapobiec przykrym niespodziankom warto robić kopie naszych danych i trzymać je w bezpiecznym miejscu. W zależności od charakteru aplikacji, dane powinniśmy backupować minimum raz na dobę, a przy sporym ruchu częściej – nawet co godzinę. Rzadziej – raz w tygodniu lub tylko przy zmianach należy backupować konfigurację serwera/chmury. Hostingi współdzielone zwykle oferują nam backup danych do 14 lub do 30 dni, czasem do 90. Brak backupu lub krótszy niż 14 dni to przesłanka, żeby zrezygnować z takiego hostingodawcy. W przypadku serwerów VPS czasem dostawca oferuje backup w postaci obrazu całego serwera. Warto rozważyć użycie takiego backupu, o ile nie generuje zbyt dużych kosztów. Jeśli jednak potrzebujemy backupować częściej niż raz na dobę to najlepiej skorzystać z własnego rozwiązania. Przy serwerze dedykowanym właściwie nie mamy innego wyboru i sami musimy zadbać o kopie bezpieczeństwa. Rozwiązania chmurowe najczęściej oferują nam taką usługę – musimy jednak pamiętać o uruchomieniu i skonfigurowaniu, gdyż domyślnie często nie jest włączona (czasem działa automatycznie dla wybranych usług np. bazy danych). 

Ukryte koszty

  1. Ukryte opłaty: Nie daj się zwieść niskim cenom w ofertach. Sprawdź dokładnie limity transferu danych i koszty za ich przekroczenie.
  2. Usługi dodatkowe: Funkcje jak codzienny backup czy load balancing mogą generować dodatkowe koszty.
  3. Rozwiązania chmurowe: Jeżeli wybierasz hosting w chmurze, określ zakres dostępu do plików (lokalnie, kontynentalnie czy globalnie). To wpłynie na cenę.
  4. Opłaty chmurowe: Usługi chmurowe mają wiele składników cenowych, które mogą być skomplikowane do oszacowania. Regularnie kontroluj rachunki, by wiedzieć, co generuje koszty.
  5. Administracja: Pamiętaj o kosztach związanych z zarządzaniem. Chmura, VPS i serwery dedykowane mają różne wymagania co do umiejętności i czasu pracy.

Lokalizacja

Warto zwrócić uwagę gdzie fizycznie znajduje się datacenter (DC) w którym zlokalizowany jest nasz serwer. Dla wydajności aplikacji ważna jest przepustowość i czas odpowiedzi. Ten drugi zwłaszcza jest pochodną fizycznej odległości, gdyż zależy od tego ile kilometrów światłowodów i przewodów ma do pokonania informacja. Najlepiej więc używać DC znajdującego się w kraju, będącym celem naszej aplikacji, lub w kraju sąsiednim, jeśli mamy z nim dobre połączenie (dla Polski będą to DC w Niemczech). Warto też pamiętać o kwestiach prawnych np. RODO – korzystając z usługodawcy z terenów UE mamy właściwie pewność, że spełnia on wymogi, natomiast jeśli chcemy skorzystać z usług dostawcy spoza EOG należy sprawdzić czy posiada on tzw. GDPR Compliance.

Podsumowanie

Wybór odpowiedniego serwera dla aplikacji www lub innej aplikacji online to kluczowy aspekt funkcjonowania projektu w internecie. Istnieje kilka rodzajów serwerów, w tym serwery WWW, aplikacji, bazy danych, plików, kolejek i cache. Aby efektywnie obsłużyć aplikację, niezbędne jest wykorzystanie co najmniej trzech z nich. Typy serwerów to hosting współdzielony, serwer dedykowany, serwer wirtualny (VPS) oraz chmura, z różnymi poziomami kosztów, administracji i elastyczności. Bezpieczeństwo jest priorytetem, z zagrożeniami takimi jak ataki DDoS czy włamania. Skalowalność jest kluczowa w miarę wzrostu aplikacji, a różne typy serwerów oferują różne poziomy skalowalności. Równoważenie obciążenia, czyli „load balancing”, jest ważne przy korzystaniu z wielu serwerów aplikacji. Backupy są niezbędne do ochrony przed utratą danych, a ukryte koszty mogą się pojawić w postaci dodatkowych opłat i usług. Lokalizacja centrum danych jest istotna dla wydajności aplikacji, ze względu na przepustowość i czas odpowiedzi. Wybierając serwer, warto mieć na uwadze wszystkie te aspekty, aby zapewnić optymalną wydajność, bezpieczeństwo i efektywność kosztową.

Paweł Lipka
DevOps / Backend Developer

Porozmawiajmy o Twoim projekcie