Pontiac Trans-Am burnout

Aplikacje, aby mogły funkcjonować w środowisku klastrowym, muszą spełniać pewne warunki. Mając świadomość jak funkcjonuje klaster serwerów, warto również stosować tzw. dobre praktyki, aby uzyskać najlepsze efekty i uniknąć błędów podczas użytkowania. W tym wpisie postaramy się przybliżyć temat w oparciu o aplikacje napisane w PHP.

Przez klaster rozumiemy infrastrukturę, która umożliwia jednoczesne działanie aplikacji z kilku serwerów, przy czym awaria któregokolwiek z nich nie powoduje awarii całej infrastruktury.

Podstawowym warunkiem takiej infrastruktury jest wspólna przestrzeń dyskowa dla każdego serwera. Fakt ten prowadzi do wniosku, że należy oszczędzać operacje wejścia/wyjścia na takiej przestrzeni. Operacje odczytu przeważnie są buforowane i nie wpływają tak znacząco jak operacje zapisu. Należy zatem ograniczyć wszystkie możliwe operacje zapisu do minimum. Tymczasowe pliki być może lepiej przechowywać na lokalnym serwerze klastra, lub jeszcze lepiej na ramdysku serwera. To pozwoli nam na uniknięcie problemu ‚wąskiego gardła’ w obszarze wydajności wspólnej przestrzeni dyskowej.

Pliki sesji można przechowywać na wiele sposobów: na lokalnym systemie plików, w bazie danych, w serwerze cache. Lokalny czy też wspólny system plików odpada ze względu na wydajność. Baza danych jest już lepszym rozwiązaniem, lecz najlepsze efekty uzyskamy stosując serwer cache. Wdrażając to ostatnie, uzyskujemy wspólną usługę do przechowywania sesji, która jest najbardziej wydajna i w dodatku posiada mechanizmy do automatycznego zarządzania przeterminowanymi sesjami.

Dobrą praktyką jest wydzielenie treści statycznej od dynamicznej. To pozwala nam na zastosowanie odrębnych serwerów WWW, przystosowanych do odpowiedniej treści. Mając do dyspozycji skalowalny klaster, możemy spokojnie przerzucić funkcjonalność kompresji dynamicznej zawartości z PHP na odpowiedni serwer WWW, który zrobi to ‚w locie’, a treść statyczna może zostać skompresowana automatycznie i jednorazowo. Użycie kompresji pozwala nam zaoszczędzić na przepustowości internetowej i sprawia, że końcowy użytkownik wyraźnie odczuwa krótsze ładowanie stron i szybszą responsywność na kliknięcia.

Dla uniknięcia przeciążenia serwerów baz danych, stosuje się mechanizm buforowania wyników zapytania, które nie zmieniają się często. Klasyfikacja takich zapytań jest ściśle związana z budową aplikacji. Dodatkowo dla usprawnienia wyszukiwarek zaimplementowanych w aplikacji, stosuje się specjalne serwery indeksacji danych. Zastosowanie tych technologii w odczuwalny sposób poprawiają wydajność baz danych i tym samym aplikacji.

Stosując powyższe praktyki, nasza aplikacja będzie przygotowana na naprawdę duże obciążenie i unikniemy efektu ‚pana gąbki’ z serwisu nasza-klasa.pl


Copyright © InnerVision Sp. z o.o.. All rights reserved.