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.

0 Komentarzy

Nie ma jeszcze komentarzy

Twój komentarz