PHP로 큰 웹앱을 만들 때 프레임 워크를 피하는 것이 합리적입니까?


9

몇 년 동안 PHP 웹 응용 프로그램 개발자 인 저는 MVC와 프레임 워크를 공유했습니다. 처음에 나는 얇게 썬 빵 이후 가장 좋은 것이라고 생각했습니다. 모든 것이 구현하기가 매우 쉬워 보였다.

그러나 이제는 응용 프로그램이 복잡할수록 프레임 워크에 더 많은 번거 로움이 생겨서이를 극복하기위한 해결 방법을 개발해야합니다. 이러한 해결 방법은 일반적으로 프레임 워크 핵심 코드를 자세히 살펴보고 원하는 방식으로 작동하도록 변경해야하기 때문에 상당히 까다 롭고 복잡합니다.

예를 들어, Slim (C) + Idiorm (M) + Twig (V) (매우 유연하다고 생각되는)를 사용하는 프로젝트 중 하나에서 부모 템플릿에 동적 데이터를 표시하기 위해 사용자 지정 함수를 만들어야합니다. 프레임 워크가 없으면 포함 된 파일에서 mysql_query ()를 간단히 실행할 수있었습니다.

간단한 회사 프로필 웹 사이트를 만들면 프레임 워크가 멋집니다. 나는 어느 날 밤에 코드를 채울 수 있으며 보통 아침까지 준비가되어 있으며, 그들로부터 배운 좋은 코딩 연습 및 디자인 패턴은 매우 가치가 있습니다.

그러나 실제로 올인원 웹 기반 학교 관리 시스템과 같은 복잡한 웹 응용 프로그램의 경우 프레임 워크는 일반적으로 위의 예와 같이 비즈니스 프로세스를 방해합니다.

그래서 내 질문은 : 기본으로 돌아가서 표준 코딩 코드와 라이브러리를 사용하여 gazillion 프레임 워크와 라이브러리가있는 다음 프로젝트를 수행하는 것이 좋습니다. MVC처럼? 저의 개발팀은 아주 작습니다. 프로그래머 2 명과 디자이너 1 명뿐입니다. 다른 프로그래머는 위의 생각에 동의합니다.


1
"그러나 응용 프로그램이 복잡할수록 프레임 워크에 대한 번거 로움이 커집니다." 이것은 단지 논쟁적이고 주관적입니다. 이런 종류의 불평을 제거하고 실제 질문에 도달 할 수 있습니까? 해결하려는 문제의 구체적이고 구체적인 예를 제공 할 수 있습니까? 이것이 "프레임 워크가 마음에 들지 않습니다"라면 실제로 좋은 질문은 아닙니다. 아마도 당신은 의견을 공유하지 않고 실제 답변이있는 것에 집중할 수 있습니다.
S.Lott

@ S.Lott : 글쎄, 나는 내 질문에 예를 제공합니다. 그리고 사실, 나는 프레임 워크를 싫어하지 않습니다. 현대 사람들이 PHP 프레임 워크를 사용하지 않는 것에 대한 사람들의 생각을 알고 싶습니다.
Furunomoe

"동적 인 데이터를 표시하기 위해 종종 사용자 정의 기능을 만들어야합니까?" 매우 상세한 예는 아닙니다. 프레임 워크가 왜 또는 어떻게 실패했는지는 확실하지 않습니다. 프레임 워크를 잘못 사용했을 가능성이 매우 큽니다.
S.Lott

답변:


17

내 경험은 당신과 정반대입니다. 작고 빠른 작업을 수행 할 때 프레임 워크는 특정 방식으로 코드를 레이아웃하고 진행하기 전에주의 깊게 생각해야하므로 약간 "길을 잃을"수 있습니다. 똑바로 점프 mysql_query하면 프로토 타입을 훨씬 빠르게 실행할 수 있습니다.

그러나 크고 복잡한 사이트의 경우 코드를 신중하게 배치하고 실제로 코드 를 작성하는 방법에 대해 생각하는 것이 앞으로 유지 관리 할 수있는 사이트를 원한다면 매우 중요합니다.

특히 mysql_query페이지주기의 임의 부분에 통화를 추가 하는 것은 일반적으로 나쁜 생각입니다. 여기에 하나가 있고 거기에 하나가있을 수 있으며 큰 문제는 아니지만 오래지 않아 수십 번 퍼져서 페이지를 렌더링하는 데 3 초가 걸리는 이유가 궁금합니다. 또는 알 수없는 이유로 스키마와 사이트의 관련이없는 섹션이 변경되었습니다.


1
물론 나는 mysql_query()여기저기서 무작위를 던지는 것이 아닙니다 . 내 말은, 고전적인 PHP에서 나는 단순히 뭔가에 대한 호출을 추가하고 Categories::read_all()일부 header.php 파일의 결과를 반복 할 수 있지만 Twig에서는 사용자 정의 Twig 함수를 만들어야합니다. 그리고 프로토 타입 제작을 위해 스캐 폴딩 기능을 좋아합니다. :)
Furunomoe

1
코드를 신중하게 배치하고 생각하기위한 프레임 워크가 필요하지 않습니다. 프레임 워크없이 쉽게 할 수 있습니다. 프레임 워크는 평범한 코드 구성 패턴을 사용자에게 강요합니다.
Raynos

3
프레임 워크는 복잡한 프로젝트를 수행 할 때 따라야하는 규칙과 지침을 정의하므로 실제로 빛을 발합니다. 나는 이것이 나의 경험이기도하기 때문에 Dean의 대답을 +1했습니다.
Burhan Khalid

7

제 생각에 프레임 워크는 개발 과정이 더 쉬워지고 번거롭지 않은 경우에만 사용해야합니다. 특히 소규모 프로젝트의 경우 프레임 워크를 사용하지 않거나 직접 빌드하는 데 아무런 문제가 없습니다.

분명히 구조와 보안 측면에 여전히주의를 기울여야하지만, 수년 동안 프레임 워크를 사용해 온 것을 고려하면 이미 그 측면을 이미 알고있을 것입니다.

더 큰 프로젝트의 경우 다른 프로젝트에 동의합니다. 즉, 프레임 워크를 사용하는 것이 장기적으로 가장 좋은 옵션 일 것입니다.


작은 사이트에서는 쉬운 것이 큰 사이트에서는 쉽지 않을 수 있습니다. 그리고 다른 방법.
Goran Jovic

1
@Goran Jovic가 동의했습니다.
Daniel Scocco

1
일에 대한 building your own. 당신이 그것을 인식하든 그렇지 않든, 당신은 자신의 프레임 워크로 간주 될 수있는 수많은 도우미 함수 및 / 또는 클래스로 끝날 것입니다.
이즈 카타

5

서버 측 "frameworks"에 대한 나의 경험은 예를 들어 매우 불쾌했습니다.

A) 당신이 원하지 않고 알지 못하고 알지 못하며 지시 할 위치에 있지 않은 상호 호환되지 않는 버전의 프레임 워크가 서로 또는 응용 프로그램 서버와 충돌하는 jar 파일 지옥은 배포 할 수 없으므로 여러 서버.

B) 가장 간단한 객체 생성이 수천 개의 불필요한 SQL 실행으로 치명적인 폭발.

C) 100 줄의 XML을 코딩하는 것이 2 줄의 Java를 코딩하는 것보다 다소 쉽다는 기괴한 개념.

D) 클라이언트 측 객체에 다른 객체 또는 다른 여러 언어 (C # JS 등)로 매핑하기 위해 완전히 불필요한 서버 측 POJOS 100 줄을 작성해야 함

E) 프레임 워크를 호출하는 데 사용 된 코드 줄을 포함하지 않는 30 레벨 딥 스택 추적을 얻을 때 실제로 일어난 일에 대한 단서가 없습니다.

배신자가되어 자신 만의 프레임 워크를 작성하십시오. 다른 사람들이 당신이 필요하다고 생각하는 모든 불필요한 것들을 먼저 제거하려고 계획하는 한 후회하지 않을 것입니다. 그럼 당신은 그것의 모든 것을 이해할 것입니다, 그것은 Mb 대신 Kb로 배송 될 것이고 아마도 Java의 창립 원칙 중 하나가 아닌 "어디서나 실행될 것"입니까?

"왜 이것이 필요한지 ... 프레임 워크를 행복하게 유지하는 것입니까?" .. 필요하지 않다면 다른 것이 필요하지 않습니까?


4

Django 개발자의 프레젠테이션 방식이 있었지만 지금은 찾기가 어렵지만 프레임 워크를 통해 생산성을 높이는 "효율성"에 대해 이야기합니다.

프로젝트를 시작할 때 프레임 워크에 대한 지식이 없다고 가정하면 처음에는 생산성이 매우 낮을 것입니다. 언어의 관용구가 아니라 프레임 워크의 규칙을 배우게 될 것입니다.

짧은 시간이 지나면 컨벤션을 선택하게되며 프레임 워크가 실제로 빛을 발하는 곳입니다. 갑자기 생산성이 지붕을 통해 이루어지고 개발을 통해 놀라운 속도로 발전하고 있습니다.

그러나 결국 프로젝트는 그 크기가 프레임 워크보다 큰 제약이되고 프레임 워크에 반하여 일부 기능을 시도하고 구현하는 것을 보게 될 것입니다.

프레 젠 테이션에서 그들은 물론 당신이 이미 프레임 워크의 규칙에 대한 지식을 가지고 있다면 작은 규모의 프로젝트는 효율성에 초기 방해가되지 않습니다.

따라서 소규모 프로젝트 (제 경험상 ~ 500 시간 미만)의 경우 프레임 워크를 사용하는 효율성이없는 효율성보다 훨씬 높습니다. IME가 500 시간에서 800 시간 사이 인 특정 임계 값에 도달하면 프레임 워크가 제공 할 수있는 기능에 제한이 있음을 깨닫기 시작합니다.

즉, 프레임 워크는 효율성보다 훨씬 큰 이점을 제공합니다. Symfony 또는 Django 또는 (나는 가정합니다) Rails와 같은 프레임 워크는 팀이 동적으로 유연하게 할 수 있고 고객 또는 제품 소유자가 필요없이 직원을 변경할 수 있도록하는 규칙을 제공합니다. 새로운 시스템을 완전히 재 학습 할 수있는 새로운 자원-만약 그들이 프레임 워크의 규칙에 익숙하고 그 규칙을 따른다면, 그들은 다른 것보다 초기에 훨씬 더 생산적 일 것입니다.


4

잘 설계된 프레임 워크는 프로그래머가 방해하지 않고 도움을 주어야합니다. 사용한 프레임 워크가 너무 길어지면 다른 프레임 워크를 살펴 보는 것이 좋습니다. 각각 고유 한 코딩 스타일과 장단점이 있습니다.

Zend 프레임 워크는 요즘 매우 인기가 있고 정직합니까? 왜 그런지보기 힘들다. 나는 과거에 그것과 함께 일해야했지만 아키텍처를 조금 좋아하지 않았습니다. Zend_Form 클래스는 엄청나게 과도하게 설계되었으며, 데코레이터 시스템은 완전히 무섭고, 데코레이터는 폼을 뷰에 묶어 객체가 느슨하게 결합되어야한다는 OOP의 기본 개념을 깨뜨 렸습니다. 또한 단일 톤으로 구현 된 많은 코드가 있으며 (이 문서는 잘 설명되어 있으므로 반복하지 않을 것입니다.) Registry 객체는 느슨한 코딩 스타일을 장려하는 데 기여합니다.

Zend Framework 2 (현재 베타 버전)가 훨씬 더 좋은 제품이라고 들었습니다. Zend 1이 입안에 남아있는 나쁜 맛은 서두르지 않아도된다는 것을 의미합니다.

아직도,이 시점에서 나는 방금 뛰고있다. :) 각각의 장단점이있는 프레임 워크가 많이 있습니다. 몇 가지 프레임 워크를 평가하는 것이 좋습니다.


3

당신이 묘사 한 것은 과거에 "추상 유도 복잡성"이라고 불렀습니다. 이를 관리하는 유일한 논문은 David Keppel의 추상화로 인한 복잡성 관리 입니다. Keppel은 프레임 워크에 추상화로 인한 복잡성을 유발하는 디자인이 있다고 제안했다.


2

프레임 워크를 사용 하면 바퀴를 다시 만들지 않아도 개발 속도를 높일 수 있습니다 . 프레임 워크는 또한 응용 프로그램을 올바르게 디자인하는 데 도움이되는 도구를 제공합니다 (그러나 뷰에서 직접 데이터베이스에 액세스하는 등 잘못된 디자인 결정을하지는 않습니다).

때로는 사용자 정의 기능이 필요할 때 올바르게 작성하는 데 시간이 더 걸릴 수 있습니다. 그러나 끊임없이 해킹하고 해결 방법을 찾는 경우 프레임 워크에 대해 작업하거나 프레임 워크가 요구 사항에 맞지 않습니다.

결론은 간단한 프로젝트를 위해 큰 프레임 워크를 사용하는 것 (예를 들어 데이터베이스에서 몇 개의 필드를 표시하는 것)이 때때로 과잉이 될 수 있다는 것입니다. 크거나 복잡한 프로젝트의 경우 프레임 워크를 사용하십시오.


1

자신의 코드를 작성하고 프레임 워크를 사용하는 데는 여러 가지 측면이 있습니다.

작업중인 팀의 크기, 기본적인 지식과 경험 들이 프레임 워크를 사용하거나 당신이 더 잘 문서화 된 프레임 워크 많은 예제와 얼마나 건축가에 응용 프로그램의 아이디어가 당신이 그들을 속도 볼 않을 경우 : 쪽으로.

응용 프로그램의 크기 : 어떻게 사용되는지 미리 알 수 없습니다 . 따라서 성장과 변화에 대비하는 것이 좋습니다. 하룻밤에 코딩하려는 프레임 워크가 경영진의 요구에 따라 성장할 수 있습니까? DB에서 필드 유형을 변경하면 구현하는 데 1 분 또는 1 일이 소요됩니다.

준비 : 프레임 워크를 사용하는 경우 응용 프로그램의 핵심을 코딩하는 대신 응용 프로그램 설계를 시작할 수 있습니다. 보안배포 가 중요한 부분 인 프레임 워크를 사용하면 시간이 많이 걸립니다. 언제나

나는 항상 웹 관리를위한 프레임 워크 인 Symfony2를 사용하기 위해 "관리"를 주장한다. 경영진은 그것이 크다고 생각하고, 학습 곡선이 가파르면 비용이 들며 프로그래머를 부끄러워 할 것입니다.


0

프레임 워크는 현대의 모든 언어, 특히 대규모 프로젝트에서 여전히 사용됩니다. 프로젝트가 클수록 프레임 워크가 더 중요해 지므로 모든 것이 어디에 있는지 로직을 알고 모든 기능의 레이아웃이 비슷합니다. 모든 데이터 액세스, 모든 프리젠 테이션을 찾을 위치 또는 비즈니스 규칙이 관리되는 위치를 알면 프로젝트를보다 쉽게 ​​수정하고 쉽게 배울 수 있습니다.

엔터프라이즈 솔루션에는 엔터프라이즈 지원 프레임 워크가 필요하지만 프로젝트에 맞는 프레임 워크를 선택해야합니다. 이것은 PHP를 사용할 때 겪게되는 문제입니다. 많은 (대부분의) 프레임 워크는 대규모로 사용하기위한 것이 아니라 소규모 개인 사이트에 적합합니다. 언급 한 학교 관리 시스템과 같은 경우 더 강력한 프레임 워크가 필요하며 PHP에서 적절한 프레임 워크를 찾는 데 시간이 걸릴 수 있습니다.

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