내가 참여한 최신 대규모 프로젝트의 아키텍처에 대한 대략적인 다이어그램.
실제 아키텍처 문서에서 수정 된 일반적인 개요이며 일반적인 MVC 방식 과 결합 된 일반적인 n- 계층 방식 과 유사합니다 . 보시다시피 로직 및 데이터 계층은 서비스 계층,보다 구체적으로 는 덜 알려진 PHP 프레임 워크 인 Recess 에서 영감을 얻은 REST API 를 통해 연결됩니다 .
바퀴를 재발 명하지 마십시오
나는 세 가지 프레임 워크로 작업합니다.
젠드 프레임 워크
잘 짜여진 코드베이스 와 광범위한 기능 목록을 갖춘 PHP 프레임 워크의 거대 함 . 대규모 응용 프로그램에서는 프레임 워크를 자주 조정하지 않고 ZF의 코드베이스를 사용하는 것이 가장 즐겁습니다. 그러나 엔트리 레벨 프레임 워크는 아닙니다 .
코 하나
Kohana는 CodeIgniter의 포크로 시작하여 처음에는 그것을 사용하지 않을 정도로 충분했습니다. 요즘에는 계층 적 MVC 접근 방식을 통해 서로 차별화되는 견고하고 우아한 프레임 워크로 성장했습니다 . HMVC는 MVC보다 모듈화를 더 확장 할 수 있습니다 . 다이어그램의 프로젝트를 위해 Kohana의 HMVC를 ZF에 맞게 조정했지만 더 작은 프로젝트에 Kohana를 사용하고 더 큰 프로젝트를 고려하기 시작했습니다.
코드 점화기
상속받은 레거시 프로젝트 때문에 만 사용하고 가능하면 피하십시오.
다른 답변이 지적했듯이 ORM은 항상 편리합니다. 나는 Doctrine을 광범위하게 사용 하므로 CouchDB 및 MongoDB에 대한 새로운 맵퍼 를 살펴보아야 합니다. 확장 성은 대규모 응용 프로그램에서 필수적이며 NoSQL 솔루션을 평가해야 합니다 .
그러나 기억해야 할 중요한 것은 큰 응용 프로그램에는 일반적으로 고유 한 문제가 있다는 것입니다. 모든 인기있는 타사 솔루션을 평가해야하며 모호한 두 가지 솔루션에서 많은 것을 얻을 수 있습니다. 내가 Recess를 처음 평가했을 때 프로덕션 준비가 된 것은 아니었지만 그 접근 방식은 본질적으로 프로젝트에 적용되었습니다.
공연
일반적인 웹 사이트에서는 간단한 출력 캐싱 및 opcode 캐싱으로 벗어날 수 있지만 대규모 응용 프로그램에서는 메모리 캐싱을 고려해야합니다. 가장 일반적으로 memcached를 중심으로 빌드됩니다 .
xdebug 는 대부분 디버거로 알려져 있지만 프로파일 러 역할도 할 수 있습니다. 최근에 Zend Server를 사용하기 시작 했으며 코드 추적 기능을 좋아 합니다 . 불행히도 이들은 Community Edition 에서 사용할 수 없지만 xdebug는 꽤 괜찮은 대안입니다.
Apache를 사용하는 경우 지옥에서 지옥 을 최적화하십시오 . nginx 와 lighttpd 는 성능면에서 현명한 선택 이지만, 나는 그것들을 많이 사용하지 않았으며 실제로 말할 수 없습니다.
데이터베이스와 관련하여 Doctrine의 쿼리 및 결과 캐싱 은 특히 memcached 와 결합하여 놀라운 일을 합니다. 물론 우리는 프론트 엔드를 잊을 수 없습니다. Yahoo의 탁월한 성과 팀은 광범위한 모범 사례 목록을 구성 했습니다 . 나는 실제로 프론트 엔드 개발자는 아니지만 솔로 프로젝트에서 놀라운 결과를 보았습니다.
마지막으로 PHP에는 새로운 가비지 수집 메커니즘 이있어 살펴볼 가치가 있습니다.
보안
PHP 보안의 세계는 가장 혼란 스럽습니다. 나는 전문가가 아니므로 다음을 일반적인 팁으로 취급하십시오.
오픈 웹 애플리케이션 보안 프로젝트
많은 것들이 있지만 빠른 개요를 위해서는 상위 10 개 목록 부터 시작해야 합니다 . 그리고 이러한 일반적인 취약점에 대한 PHP 솔루션을 연구하십시오.
스택 취약점
좋은 습관은 PHP의 공개 버그 를 주기적으로 모니터링하는 것 입니다. 전문가가 아니더라도 보안 위협에 대한 해결 방법은 거의 항상 있습니다. 물론, 스택의 다른 모든 부분, 특히 웹 서버 및 데이터베이스와 같이 가장 취약한 부분으로 습관을 확장해야합니다.
에서 이상 관중 IT 보안 스택 Exchange는 더 교육을 답변으로 당신을 도울 수 있습니다.
추가 자료