Co jest kluczem?
Technologia to tylko narzędzie. Najbardziej zaawansowane technologie komercyjne, czy też topowe rozwiązania Open Source – mogą stać się pułapką. Jeśli nie mamy dobrego projektu. Aplikacji.
Jedyną pewną rzeczą jest … zmiana!
Jeśli nasz projekt nie będzie wystarczająco elastyczny i nie zostaną w nim uwzględnione potencjalne problemy wynikające ze skali, nie łudźmy się, że technologia rozwiąże nasze problemy. To nie moja teoria ;) Tak wskazuje praktyka (zobacz też: ciekawa seria wpisów na Antyweb.pl)
Czym jest dobry projekt aplikacji?
Sądz, że warto zwrócić uwagę na następujące elementy:
- podział aplikacji na warstwy (chociażby MVC!). Bardzo rzadko wąskim gardłem są wszystkie elementy systemu ;) Jeśli chcemy mieć możliwość niezależnego rozwijania, wymieniania, optymalizacji poszczególnych komponentów aplikacji warto pomyśleć o dobrej modularyzacji. Jeśli komponenty naszej aplikacji będą wystarczająco luźno powiązane zmiana DBMSa ograniczy się do wymiany modeli (wg. mnie warto iść z modelami jeszcze dalej – zobacz ganglib), jeśli generowanie wyników będzie czasochłonne – zmodyfikujemy tylko widoki itd. Proste, podstawowe, tyle.
- jeśli dzielisz aplikację na warstwy – podziel i środowisko (nawet wirtualnie). Oddzielenie klastra baz danych od klastra serwerów aplikacji pozwala lepiej utylizować sprzęt i dłużej pozostawać przy skalowaniu pionowym środowiska aplikacji. Ale warto pamiętać o tym już od samego początku, nawet gdy storage, bazę danych i aplikację mamy na jednej maszynie
- projektując i kodując – stawaj na ramionach gigantów. Wzorce projektowe i frameworki są twoimi przyjaciółmi :) … o ile są stosowane z rozwagą. Co jest do wszystkiego jest do niczego ;) Warto pamiętać o ograniczeniach technologii której używamy. Barokowa obiektowość w niektórych technologiach (PHP + Zend Framework? Magento?) nie jest szybka. Coś za coś. Parcie na elastyczność powinno być zawsze weryfikowane przez zdrowy rozsądek (wspomina sie o tym, ale mało – m.in. Cal Henderson i architektura Flickr) …
- … poparty testami. (Profiluj, testuj, optymalizuj)*. Ale nie za wcześnie. Na wstępnym etapie projektowania, gdy jeszcze dużo wymagań się zmienia optymalizacja może niebezpiecznie zmniejszyć elastyczność.
- wykrywaj wąskie gardła i eliminuj je…
- … chociażby korzystając odpowiednio z Cache (Memcached?)
To tyle? Tak :)
Jeśli projekt naszej aplikacji jest odpowiedni nic nie stoi na przeszkodzie aby spokojnie rozwijać środowisko w którym ona pracuje.
O tym już w kolejnych wpisach.
Komentarze (0)