Zgrubny schemat architektury najnowszego dużego projektu, w który byłem zaangażowany.
Jest to tylko podstawowy zarys, zaadaptowany z faktycznych dokumentów architektury i przedstawiony w sposób przypominający typowe podejście n-tier w połączeniu z typowym podejściem MVC . Jak widać, logika i warstwy danych są połączone za pośrednictwem warstwy usługi, a dokładniej interfejsu API REST , zainspirowanego przez Recess , mniej znany framework PHP.
Nie wymyślaj koła na nowo
Pracuję z trzema ramami:
Zend Framework
Potwór frameworków PHP z imponująco dobrze napisaną bazą kodu i obszerną listą funkcji. W aplikacjach na dużą skalę częściej modyfikujesz framework, a baza kodu ZF jest dla mnie najłatwiejsza do pracy. Ale uwaga, to nie jest podstawowa platforma .
Kohana
Kohana zaczynał jako rozwidlenie CodeIgniter, i to był wystarczający powód, dla którego początkowo go nie używałem. Obecnie rozwinęło się w solidną i elegancką platformę, która wyróżnia się od innych dzięki hierarchicznemu podejściu do MVC . HMVC pozwala na większy zakres modularyzacji niż MVC . W projekcie na schemacie dostosowałem HMVC Kohany do ZF, ale zacząłem używać Kohany do mniejszych projektów i rozważać go także do większych.
CodeIgniter
Używam go tylko ze względu na odziedziczony przeze mnie projekt, unikaj, jeśli to możliwe.
Jak wskazały inne odpowiedzi, ORM zawsze się przydaje. Używam Doctrine intensywnie i powinieneś spojrzeć na jej nowe mapery dla CouchDB i MongoDB . Skalowalność jest koniecznością w aplikacjach na dużą skalę i należy oceniać rozwiązania NoSQL .
Należy jednak pamiętać, że większe aplikacje zwykle mają wyjątkowe wyzwania. Powinieneś ocenić każde popularne rozwiązanie innej firmy i prawdopodobnie wiele zyskasz z kilku niejasnych. Kiedy po raz pierwszy oceniłem Recess, nie był on jeszcze gotowy do produkcji, ale jego podejście w zasadzie znalazło się w projekcie.
Występ
W typowych witrynach internetowych można uniknąć prostego buforowania danych wyjściowych i buforowania kodów operacyjnych, ale w aplikacjach na dużą skalę należy naprawdę rozważyć buforowanie pamięci, które najczęściej opiera się na memcached .
xdebug jest znany głównie jako debugger, ale może również służyć jako profiler . Niedawno zacząłem używać Zend Server i absolutnie uwielbiam jego funkcje śledzenia kodu . Niestety nie są one dostępne w wersji Community Edition , ale xdebug jest całkiem przyzwoitą alternatywą.
Jeśli używasz Apache, upewnij się, że zoptymalizowałeś to do diabła . nginx i lighttpd to pozornie lepsze wybory , pod względem wydajności, ale nie używałem ich zbyt często i nie mogę powiedzieć.
Jeśli chodzi o bazę danych, buforowanie zapytań i wyników Doctrine działa cuda, szczególnie w połączeniu z memcached . I oczywiście nie możemy zapomnieć o interfejsie. Zespół wyjątkowej wydajności Yahoo opracował obszerną listę najlepszych praktyk . Nie jestem naprawdę programistą, ale widziałem niesamowite wyniki w projektach solowych.
Wreszcie PHP ma zupełnie nowy mechanizm wyrzucania elementów bezużytecznych , na który warto zwrócić uwagę.
Bezpieczeństwo
Świat bezpieczeństwa PHP jest co najmniej chaotyczny. Nie jestem ekspertem, dlatego traktuj poniższe wskazówki jako ogólne wskazówki:
Otwórz projekt bezpieczeństwa aplikacji sieci Web
Jest tam wiele dobrych rzeczy, ale dla szybkiego przeglądu powinieneś zacząć od pierwszej dziesiątki . I badaj rozwiązania PHP dla tych typowych luk.
Stosuj luki w zabezpieczeniach
Dobrym nawykiem jest okresowe monitorowanie otwartych błędów PHP . Nawet jeśli sam nie jesteś ekspertem, prawie zawsze istnieją wskazówki dotyczące obejścia zagrożeń bezpieczeństwa. I oczywiście powinieneś rozszerzyć ten nawyk na każdą inną część stosu, szczególnie te najbardziej wrażliwe, takie jak serwer WWW i baza danych.
Tłum w IT Security Stack Exchange może pomóc w uzyskaniu bardziej wykształconych odpowiedzi.
Dalsza lektura