4

私の基本的な質問は次のとおりです: 急速に成長する可能性のある Web アプリケーションの構築を開始するにはどうすればよいですか?

ちょっとした背景: 私の顧客が Web アプリケーションのオファーを求めています。詳しくは言えませんが、eコマースとクラウドファンディングのようなものです。そのため、彼はいくらかのお金を使いたいと考えており、無制限に成長できるサイトを期待しています。

Zend Framework 2 と MySql でビルドする予定です。私の問題は、大規模な Web アプリケーションの経験がないことです。私はどこでも読んでいます:問題ありません。プロジェクトを開始するだけで、プロジェクトが大きくなった場合は、それに反応してキャッシング、クラスタリングなどを追加できます.

しかし、これは本当に正しいのでしょうか?それとも、最初からスケーラビリティ メカニズムを追加する必要があるのでしょうか? たとえば、クラウド サーバー (Amazon EC2) は、ファイル システムに対して異なるアプローチを採用しています。後で切り替えることは可能ですか?または、ロード バランシングについてはどうでしょうか。セッション処理で問題が発生しますか? そしてMySqlはどうですか?または、NoSql アプローチから直接開始することをお勧めします。

したがって、私の現在の計画は次のとおりです。

  • ステップ 1: ZF2 と MySql を使用して通常どおり Web アプリケーションをビルドします。
  • ステップ 2: memcache や opcode などのキャッシングを追加する
  • ステップ 3: MySql クラスターまたは NoSql または負荷分散またはクラウド サーバー??

アップデート:

わかりました、私の質問が少し広すぎることはわかっています。だから私はそれをいくつかの特定の質問に追跡しようとします:

  • クラウドサーバーから直接始めたほうがいいですか?
  • クラウドサーバーは無制限に拡張できますか?
4

2 に答える 2

2

スケーリングは複雑な問題であり、プロジェクトごとに異なるニーズがあります。最近、PHP アプリケーションのスケーリングに関する優れた本を読みました。多分これはあなたを助けることができます: https://leanpub.com/scalingphp

本からのいくつかのヒント

  • 受信リクエストのロードバランサ
  • 書き込み用の 1 つの Mysql マスター サーバーと、読み取り用の 1 台の mysql スレーブ サーバー (マスターがダウンした場合、Salve サーバーを昇格させることができます)
  • セッションストレージを使用してください本はReddisを推奨していると思います(確かではありません、それは数週間前です)
  • Apache の代わりに Nginx を実行する

そして個人的なメモとして:

  • 好みの問題かもしれませんが、PHP フレームワークとして Laravel をお勧めします。ZF よりも軽く、(やはり味..) よりエレガントです。

今のところ、この本からそれ以上のことは思い浮かびませんが、十分な情報が得られない場合は、電子メールでご連絡ください。調べます。

最初からスケーリングについて考慮する必要がありますか? それとも、ロード バランシングやセッション ストレージなどのテクノロジを後から簡単に追加できますか?

私が本から学んだことは、彼らのケース (Twitpic) では、プロジェクトが大きくなり、多くのダウンタイムを経験した後にスケーリングが開始されたことです。私の意見では、どのようなスケーリング手順を実行するかを考えるのは良いことです。プロジェクトでスケーリングが必要な場合は、専用の (My)SQL サーバーまたはロード バランサーをスケーリングできます。ただし、セッション ストレージ サービスの使用を計画している場合は、スケールアップが必要な時点でコードを書き直す必要がないように、最初から使用することをお勧めします。また、一部のセッション ストレージ サービスは、可能な限り多くの情報を RAM に保存するため、実行時間が短縮されます。

また、サーバーをセットアップするときは、Nginx から始めるといいでしょう。これは、Apache よりも少ないリソースを使用します。

于 2014-09-13T01:53:11.363 に答える
2

あなたの計画:

Step 1: Build the web application normally with ZF2 and MySql.
Step 2: Add caching like memcache and opcode
Step 3: MySql cluster or NoSql or load balancing or cloud server??

これが私の提案です:

Step 1: Build the web app on CodeIgniter with MySQL (lighter, and faster than ZF2 with MySQL)
Step 2: Do memchace, opcode and don't forget phpfpm 
Step 3: Use Amazon EC2 and use their Load Balancing features to load balance between servers.
于 2014-09-13T01:57:17.907 に答える