DrupalからYiiにアップグレヌドする7぀の理由

Drupalが奜きな理由に基づいおいたす。

JiLiZARTのリク゚ストに応じお公開翻蚳、私も理解しおいるように、圌も。

オリゞナル erickennedy.org







蚘事の日付は1幎前なので、翻蚳の期間は保存されたす





Drupal 7は間もなくリリヌスされるため、倚くの組織はDrupal 5たたは6からアップグレヌドするかどうかを決定する必芁がありたす。Drupalは、倚くのサむトを構築し、倚くのコヌドを蚘述せずに迅速に新しいサむトを䜜成する必芁がある堎合、たたは単に必芁な堎合に適しおいたすステロむドのブログ。



Drupalでの䜜業は、䌝統的な家を買う䜙裕がない堎合、 倍幅 カヌドの家に䜏むようなものです。 Drupalで構築され、フルタむムの開発者を䜿甚できるほど成長したサむトがある堎合は、サむトをYii PHPフレヌムワヌクに移行する必芁がありたすPHP嫌いな人はOnionに埓い、Django Pythonフレヌムワヌクを䜿甚できたすが、より倚くの時間、蚀語ずフレヌムワヌクの倉曎



私は2010幎4月30日にDrupalからYiiに切り替えたサむトのテクニカルディレクタヌです。 圓時、私たちが移籍に぀いお話し合っおいたずき、正しい情報を芋぀けるこずは困難でした。Yiiに関する本すらありたせんでした。 DrupalからYiiぞの切り替えに぀いおの蚀及がいく぀かありたしたが、萜ち着いおおくのに十分なデヌタが含たれおいたせんでした。 Yiiが高床に最適化されたDrupalむンストヌルよりも遅くなるのではないかず心配しおいたため、30日間でサむトのコアの20すべおの機胜の80を提䟛したしたを曞き換えるこずにしたした。 フレヌムワヌクの生産性ず生産性をテストするのに最適な方法のようです。Yiiが1か月の䜜業を経おも結果が出ない堎合は、い぀でもDrupalに戻っお新しいデヌタを戻すこずができたす。



Yiiは、150,000ノヌドそれぞれ曞き換えられたURLず1日あたり50,000人の蚪問者を持぀Drupalサむトよりもはるかに高速でした。 はい、私たちはこの30日間そしお次の15日間狂ったように働きたしたが、それだけの䟡倀はありたした。 Yiiでの開発時に、Drupalで遅いク゚リをトラップしお修正するために䜿甚しおいた時間を䜿甚しおいたした。 Yiiの本圓のメリットは、埌でサむトを再蚭蚈したずきに珟れたした。

Yii MVCでは、Drupalの数十に察しおレむアりトファむルを2぀だけ倉曎したした。



1幎前に亀差しなかったこずを申し蚳ありたせん。 孊んだこずは次のずおりです。

  1. Drupalは最初から始めるのに最適な方法ではありたせん 。 Drupalの䞻なセヌルスポむントは、「 なぜ独自のCMSを䜜成するのですか」です。 」 倚くのWeb開発者ず同様に、すべおのWebアプリケヌションを最初から 1999幎ず2000幎に 䜜成し、認蚌、怜蚌、SQLむンゞェクションなどを凊理するための独自のコヌドを曞くのではなく、アプリケヌション固有のビゞネスニヌズに焊点を圓おる機䌚に感謝しおいたす。

    2007幎の初めに私が芋぀けた䌚瀟にはDrupalサむトのプロトタむプがあり、Ruby On Railsにドロップする前にDrupalで䜕ができるかを芋る準備ができおいたした。 Rubyの流行は、1997幎のJavaの流行を思い起こさせたした。 私は1997幎から99幎にかけおWebExの競争盞手のむンタヌンでしたが、サヌバヌハヌドりェアずVMの最適化がスケヌラビリティを可胜にする前にJavaでサヌバヌを蚘述し始めたため、生産性が䜎䞋したした。 PHPはFriendsterずFacebookのリメむクで実蚌されおおり、Rubyでスケヌラビリティの問題が発生した堎合、ナヌザヌはクゞラの倱敗を芋たくありたせん。



    もちろん、PHPで各行を自分で蚘述するよりもDrupalから始める方が簡単です。 しかし、2008幎に開始され、 2009幎にテストされたPHP 5フレヌムワヌクがたくさんありたす。 PHP開発者は、珟圚Webアプリケヌションを䜜成し始めおいたすそしお今埌もサむトで䜜業を続けたす。フレヌムワヌクを遞択するか、PHPラむブラリPECLたたはPEARを䜿甚しおれロから開始したす。

  2. Drupalフレヌムワヌクなら、 Ruby Goldberg Machineのみがそれを愛したす  耇雑な方法で単玔なアクションを実行するMachine 。 Drupalは、PHPプログラミングの知識がなくおも拡匵できるように蚭蚈されおいたす。 これは、単玔なコンテンツでサむトを単玔にスタむル蚭定する堎合、たたはトラフィックの少ないサむトがある堎合に適しおいたす。 フォヌムの倉曎ず機胜の远加のためにフルタむムでモゞュヌルを䜜成する堎合、フレヌムワヌク䞊で䜜成するよりも、必芁のないDrupal機胜の抑制により倚くの時間を費やすこずになりたす。 Yiiには反察のアプロヌチがありたす。Rubyon RailsのようなORMが十分に高速で、MySQLに曞き換える必芁があるク゚リの10のみを最適化する堎合は、 Rubyを䜿甚できたす。

  3. コミュニティが提䟛するモゞュヌルは、 特城䞻矩 「詐欺」になりやすく、過床の耇雑さに起因する゚ラヌが発生したす。

    Drupalには非垞に倚くのcontribモゞュヌルがありたす。フルタむムの開発者がいる堎合は、远加モゞュヌルの䞀郚を自分のものに同化するために、おそらく私たちがそれをどのように行うかを決めるだけです。 Drupalの画像線集およびキャッシングモゞュヌルは、代衚的な䟋です。 モゞュヌルは䞀般的な問題を解決するように蚭蚈されおいるため任意の数の他のモゞュヌルず連携できるように、 決しお䜿甚しない機胜が倚数含たれおいたす 。 私たちの堎合、ImageMagickを䜿甚しお取埗するいく぀かのサむズのプレビュヌを䜜成する必芁がありたす。 これを行うには、2぀のデヌタベヌステヌブルにサムネむルを䜜成する実際のコマンドの代わりに、それぞれが倚数のPHPファむルを持぀ImageAPI、ImageMagickのImageAPI、ImageCache、ImageCache UIの4぀のモゞュヌルを含める必芁がありたした。 モゞュヌルチェヌンの䞀郚を曎新するずきに問題が発生した堎合、必芁なこずだけを行うのではなく、理由を芋぀けるのにかなり時間がかかりたす。



    Yiiには、画像を操䜜するための拡匵機胜Kohanaから適応もありたすが、必芁のない機胜回転フリップが含たれおおり、ImageMagickずGDを透過的に切り替えるように蚭蚈されおいるため、耇雑ですGDには2MBを超えるファむルの問題がありたす  これにもかかわらず、プレビュヌが存圚しない堎合、RewriteRuleを䜿甚しおその堎で画像のサむズを倉曎するこずはできたせん。

    そこで、画像専甚のサヌバヌでRewriteRuleリク゚ストを凊理し、シヌルドシェルコマンドを送信しおバむナリに盎接倉換するindex.phpファむルを䜜成したした。 これは、これらのRewriteRuleリク゚ストがYiiのindex.phpファむルに圱響を䞎えないこずを意味し、オヌバヌヘッドを削枛し、画像のサむズ倉曎ずキャッシュのリセットに必芁な時間を削枛したす。 これは、バむナリぞの1回の呌び出しで枡される匕数を取るphpの1ペヌゞにすぎず、ImageMagickが曎新されおいるかどうかのサポヌトずテストがはるかに簡単です。

  4. DrupalにはPHP 4の手荷物互換性が含たれおいたす。 か぀お、PHPフレヌムワヌクを怜蚎するこずにしたずき、私はすぐに100PHP5 OOPフレヌムワヌクが必芁だず気付きたした。 フックシステムがOOPアプロヌチよりも優れおいるず䞻匵する人はあたりいたせん。 Drupal 7には、CodeIgniter 1.0やその他の叀いPHPフレヌムワヌクのようなPHP5が必芁ですが、䟝然ずしお倚くの互換性がありたす。 誰がそのような荷物を望んでいたすか

  5. Drupal 6たたは7でDrupal 5サむトの速床を䜎䞋させたくないですか 時代遅れのjQueryに察凊したくないですか ほずんどのサむトでは、これは正垞です。 GoogleずMicrosoftは、ナヌザヌが高速サむトに忠実であるこずを瀺しおいるため、速床を重芖しおいたす。 2009幎、Drupal 6が安定したずき、枬定可胜な速床の利点のために、Drupal 5にずどたりたした。 問題は、Drupal 5にjQuery 1.0が含たれおいるこずです。 contribモゞュヌルをむンストヌルしお、jQueryを1.2にパッチしたすおよびそれを参照するDrupal関数を曎新したすが、このバヌゞョンも叀いです。 jQuery 1.3xずDrupal 5は忘れおください。

  6. DrupalのDrupal Field /CCKAPIはあなたを倢䞭にさせたす 。 これはDrupal 7コアの䞀郚です 。 $ node-> field_ip [0] ['value']を䜿甚できるのに、$ node-> ipを䜿甚する理由。 たた、2぀の異なるタむプのコンテンツに同じ名前のフィヌルドを持たせたい堎合、CCKはそれらを驚くべき列名field_ip_valueを持぀独自のテヌブルcontent_field_ipに入れたす。 もちろん、Drupalはノヌドのロヌド時にこの混乱を理解できたすが、それを芋るのは良くありたせん。 MySQLク゚リでは、远加のCCKテヌブルをすべお凊理するために倚くのLEFT JOINが必芁です。たた、スロヌク゚リログで頻繁に終了する䞍芁な耇雑なク゚リも必芁です。 最終的に、これらすべおの䜎速ク゚リを最適化しようずするのにうんざりし、CCKを削陀するこずに決めたした。これにより、PHPフレヌムワヌク、そしおYiiに至りたした。

    デヌタをYiiに移行するには、Drupalにずどたっおいる間にCCKモゞュヌルを削陀するのず同じ時間がかかりたした。 それでも、Drupalが内郚のニヌズに䜿甚する远加のテヌブルをすべお䜿甚せずに、クリヌンなデヌタベヌスで開始するこずができたした。 叀いデヌタベヌスには173個のテヌブルがあり、新しい54個にはありたした。

  7. DrupalはYiiよりもはるかに遅いです。



    ボヌド䞊のmemcachedずAPCでALLをキャッシュし、すべおの遅いリク゚ストを曞き換えるず、Drupalは拡匵可胜です。 lを呌び出すたびに別のデヌタベヌスク゚リが生成されるため、すべおのリンクにSEOアドレスを䜿甚する堎合、キャッシュは特に重芁です。 したがっお、平均ペヌゞには50以䞊のリク゚ストがありたすが、Yiiでは3〜5です。 移行埌、Googleりェブマスタヌツヌルによるず、平均ダりンロヌド時間は163ミリ秒から63ミリ秒に短瞮されたした。 さらに良いこずに、Yii + APCは非垞に高速であるため、memchachedを䜿甚する必芁がなく、コヌドず操䜜を簡玠化できたす。





私たちのサヌバヌ統蚈は、それ自䜓を物語っおいたす。 蚪問者Apacheプロセスからの同時リク゚スト数が同じ堎合、デヌタベヌスずCPUの䜿甚が䜎䞋したした。 メモリ䜿甚量はほが同じたたです。 過去1幎で、トラフィックは月に60増加し、1か月あたり150䞇人の蚪問がありたしたが、MySQLの負荷は66枛少したした



画像




All Articles