PHP 웹 애플리케이션 아키텍처 / 디자인 [닫기]


20

PHP로 웹 응용 프로그램을 개발하는 새로운 직업에 첫 발을 내딛었습니다. PHP를 처음 접하는 사람은 아니지만 이전에 대규모 응용 프로그램을 개발 한 적이 없습니다. 미래에 문제가 발생하지 않도록 개발을 구성하는 방법이 궁금합니다. 기능과 성능 측면에서 시간이 지남에 따라 확장 할 수있는 건전한 방식으로 애플리케이션을 설계하고 설계하는 방법 나는 다음과 같은 것을 생각하고있다 :

  • 프런트 엔드에서 백엔드 분리
  • 디렉토리 구조

필자는 대규모 PHP 웹 응용 프로그램 개발에 지속 가능한 방식으로 접근 할 수있는 아키텍처 및 응용 프로그램 디자인 패턴, 프레임 워크 및 방법에 대한 조언에 감사합니다.


안녕! 웹 응용 프로그램의 가장 일반적인 아키텍처는 MVC , PHP 및 기타 모든 인기있는 웹 플랫폼입니다. 즉, FAQ를 읽어야합니다 . 소프트웨어 아키텍처에 관한 주제이지만 질문을 좀 더 구체적으로 수정해야합니다. "일반 아키텍처에 관한 건전한 토론"은 사이트의 Q & A 형식에 맞지 않습니다.
yannis

저는 S / E 사이트를 자주 방문하는 사람입니다. 그러나이 질문에 대해 아무도 대답 할 수 없다는 느낌이 들었습니다. 따라서 "토론"의견입니다. 그래도 MVC 포인터에 감사드립니다 :)
Brad Morris

답변:


29

내가 참여한 최신 대규모 프로젝트의 아키텍처에 대한 대략적인 다이어그램.

여기에 이미지 설명을 입력하십시오

실제 아키텍처 문서에서 수정 된 일반적인 개요이며 일반적인 MVC 방식 과 결합 된 일반적인 n- 계층 방식 과 유사합니다 . 보시다시피 로직 및 데이터 계층은 서비스 계층,보다 구체적으로 는 덜 알려진 PHP 프레임 워크 인 Recess 에서 영감을 얻은 REST API 를 통해 연결됩니다 .

바퀴를 재발 명하지 마십시오

나는 세 가지 프레임 워크로 작업합니다.

  • 젠드 프레임 워크

    잘 짜여진 코드베이스 와 광범위한 기능 목록을 갖춘 PHP 프레임 워크의 거대 함 . 대규모 응용 프로그램에서는 프레임 워크를 자주 조정하지 않고 ZF의 코드베이스를 사용하는 것이 가장 즐겁습니다. 그러나 엔트리 레벨 프레임 워크는 아닙니다 .

  • 코 하나

    Kohana는 CodeIgniter의 포크로 시작하여 처음에는 그것을 사용하지 않을 정도로 충분했습니다. 요즘에는 계층 적 MVC 접근 방식을 통해 서로 차별화되는 견고하고 우아한 프레임 워크로 성장했습니다 . HMVC는 MVC보다 모듈화를 더 확장 할 수 있습니다 . 다이어그램의 프로젝트를 위해 Kohana의 HMVC를 ZF에 맞게 조정했지만 더 작은 프로젝트에 Kohana를 사용하고 더 큰 프로젝트를 고려하기 시작했습니다.

  • 코드 점화기

    상속받은 레거시 프로젝트 때문에 만 사용하고 가능하면 피하십시오.

다른 답변이 지적했듯이 ORM은 항상 편리합니다. 나는 Doctrine을 광범위하게 사용 하므로 CouchDBMongoDB에 대한 새로운 맵퍼 를 살펴보아야 합니다. 확장 성은 대규모 응용 프로그램에서 필수적이며 NoSQL 솔루션을 평가해야 합니다 .

그러나 기억해야 할 중요한 것은 큰 응용 프로그램에는 일반적으로 고유 한 문제가 있다는 것입니다. 모든 인기있는 타사 솔루션을 평가해야하며 모호한 두 가지 솔루션에서 많은 것을 얻을 수 있습니다. 내가 Recess를 처음 평가했을 때 프로덕션 준비가 된 것은 아니었지만 그 접근 방식은 본질적으로 프로젝트에 적용되었습니다.

공연

일반적인 웹 사이트에서는 간단한 출력 캐싱opcode 캐싱으로 벗어날 수 있지만 대규모 응용 프로그램에서는 메모리 캐싱을 고려해야합니다. 가장 일반적으로 memcached를 중심으로 빌드됩니다 .

xdebug 는 대부분 디버거로 알려져 있지만 프로파일 러 역할도 할 수 있습니다. 최근에 Zend Server를 사용하기 시작 했으며 코드 추적 기능을 좋아 합니다 . 불행히도 이들은 Community Edition 에서 사용할 수 없지만 xdebug는 꽤 괜찮은 대안입니다.

Apache를 사용하는 경우 지옥에서 지옥최적화하십시오 . nginxlighttpd 는 성능면에서 현명한 선택 이지만, 나는 그것들을 많이 사용하지 않았으며 실제로 말할 수 없습니다.

데이터베이스와 관련하여 Doctrine의 쿼리 및 결과 캐싱 은 특히 memcached 와 결합하여 놀라운 일을 합니다. 물론 우리는 프론트 엔드를 잊을 수 없습니다. Yahoo의 탁월한 성과 팀은 광범위한 모범 사례 목록을 구성 했습니다 . 나는 실제로 프론트 엔드 개발자는 아니지만 솔로 프로젝트에서 놀라운 결과를 보았습니다.

마지막으로 PHP에는 새로운 가비지 수집 메커니즘 이있어 살펴볼 가치가 있습니다.

보안

PHP 보안의 세계는 가장 혼란 스럽습니다. 나는 전문가가 아니므로 다음을 일반적인 팁으로 취급하십시오.

  • 오픈 웹 애플리케이션 보안 프로젝트

    많은 것들이 있지만 빠른 개요를 위해서는 상위 10 개 목록 부터 시작해야 합니다 . 그리고 이러한 일반적인 취약점에 대한 PHP 솔루션을 연구하십시오.

  • 스택 취약점

    좋은 습관은 PHP의 공개 버그 를 주기적으로 모니터링하는 것 입니다. 전문가가 아니더라도 보안 위협에 대한 해결 방법은 거의 항상 있습니다. 물론, 스택의 다른 모든 부분, 특히 웹 서버 및 데이터베이스와 같이 가장 취약한 부분으로 습관을 확장해야합니다.

에서 이상 관중 IT 보안 스택 Exchange는 더 교육을 답변으로 당신을 도울 수 있습니다.

추가 자료


1
큰 대답; 훌륭한 프리젠 테이션; 훌륭한 레이아웃 ... 잘 했어!
동적

@ 재고 감사합니다! 다 읽었습니까? : P 그것은 조금 길다, 나는 그것을 조금 정리해야하는지 궁금했다.
yannis

하, 나는 노력했다! ;-)
다이내믹

실제로 Yannis, 질문이 있습니다. 최근에 PHP에 관심이 커졌습니다. 나는 그것을 스스로 배우려고 노력했지만 약간의 문제가 있습니다. 또한 PHP를 직접 사용하는 것이 좋습니다 :-). 약간의 지침을 공유 하시겠습니까? 그렇다면 대화방을 만들어 보겠습니다.
동적

그것이 바로 내가 찾던 일종의 대답입니다! 많은 정보가 필요합니다. 다음 시간 동안 약간의 흡수와 땜질을해야한다고 생각하지만 시작할 곳을 주셨습니다. 감사합니다 :)
브래드 모리스

1

IBM의 developerworks 웹 사이트에는 엄청난 양의 PHP 기사 가 있으며 많은 기사 가있다. 여기에는 PHP 웹 프레임 워크를 비교 하는 일련의 기사CakePHP 프레임 워크를 사용하는 웹 사이트에 대한 다른 시리즈가 있습니다 .

O'Reilly의 오래된 "Onlamp"웹 사이트에는 PHP의 MVC 관련 기사가 있습니다. 이 기사의 저자는 MVC에 대해 자세히 설명했습니다 .

오라일리의 기사는 조금 낡았지만, 당신을 도울 것입니다. IBM developerworks는 정말 훌륭하며 많은 것을 요구합니다.


1

나는 몇 년 동안 PHP와 관련하여 일해 왔습니다. 나는이 질문이 어떻게 든 열려 있다고 Yannis에 동의하지만, 나는 당신에게 몇 가지 조언을 줄 것이라고 생각합니다. 먼저 Yannis가 말했듯이 yu는 MVC를 조사해야하므로 권장 할 수있는 두 가지 프레임 워크는 CodeIgniterSymfony 입니다. 첫 번째는 가볍고 시작하기가 매우 쉽지만 멋진 설정 작업을 위해 추가 사용자 정의를 추가해야 할 수도 있습니다. Symfony는 Fabien Potencier 가 시작한 프로젝트 로 소프트웨어 엔지니어링에서 많은 디자인 패턴을 사용하지만 학습 곡선CodeIgniter 보다 훨씬 가파 릅니다 .

두 번째로, 데이터베이스 연결을 살펴 봐야합니다. PHP, DoctrinePropel을 위한 가장 유명한 두 가지 ORM 프레임 워크가 있습니다. 개인적으로 저는 Propel을 좋아 하고 CodeIgniter 기반 앱 에서 깨끗한 Propel 설치를 설정하는 방법에 대해 글을 썼습니다. 그러나 Symfony는 Doctrine에 더 가깝지만 둘 중 하나를 사용하겠습니다. Doctrine and Propel 에 대해 더 자세히 확인하려면 얼마 전에 내가 물었던 이 질문을 살펴보십시오 .

마지막으로 Smarty , Dwoo 또는 Twigg 와 같은 템플릿 프레임 워크를 살펴 봐야 합니다. Smarty 가 가장 오래되어 가장 안정적입니다. Dwoo 상속 에서 멋지 더 나은 PHP 5에 대한 지원 OOP에 한 두 가지를 추가 마지막으로 트위그는 제공되는 템플릿 대안 심포니 팀 , 내가 나 자신을 볼 수 없습니다했지만 그것은에서 오는 경우 심포니 팀 은 좋은해야한다 .

이 연설 전체가 의미가 있기를 바랍니다, David

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.