次のプログラミングプロジェクトのMEANとLAMP

最先端の好奇心から実用的な主力製品への移行は、多くのテクノロジーが行うものではありません。昨日の早熟な新興企業は、バージョン0.1の約束を果たせないことがよくあります。激しく頭字化されたMEANスタックを構成するテクノロジーはそうではありません。

MongoDB、Express.js、AngularJS、Node.jsが独自に眉をひそめているのは、ほんの数年前のことです。今、彼らは成長し、団結し、一緒に真剣な仕事をしており、広大なLAMPキャンプから少数の開発者を密猟しています。しかし、この新しく絡み合ったMEANは、LAMPとどの程度正確に重なりますか?JavaScript中心のテクノロジーのこの新興コレクションよりも、十分にテストされた成熟したLAMPを選択する方がよいのはいつですか。

答えは、シンプルさと共通の構造があなたの人生を楽にするときです。 MongoDBは、データを格納するためのより柔軟で柔軟なレイヤーを提供します。 Node.jsはサーバーを実行するためのより良いネクサスを提供し、ExpressはWebサイトの構築方法を標準化するのに役立ちます。クライアントでは、Angularはインタラクティブな機能とAJAX駆動のリッチコンポーネントを追加するクリーンな方法を提供します。それらをすべてまとめると、データをユーザーからディスクファームに移動したり、元に戻したりするためのクリーンで一貫性のあるメカニズムが作成されます。

しかし、本当の説明はもっと深いです。ここでは、MEANに次のプロジェクトを試してみる9つの理由を紹介します。誰もが最新の最もトレンディなフレームワークで古いものを捨てて再コーディングする時間や予算を持っているわけではありません。また、Apache、MySQL、PHPなどのバトルテスト済みツールの確固たる信頼性を捨てるべきではありません。しかし、柔軟性、シンプルさ、パフォーマンスの恩恵を受ける可能性のあるグリーンフィールドプロジェクトの場合、MEANを使用すると、思ったよりも人生が良くなる可能性があります。

MongoDBはクラウド向けに構築されています

Webアプリの計画に、クラウドのCPUあたりのペニーの約束を実現することが含まれている場合、MEANスタックはMongoDBで魅力的なデータベースレイヤーを提供します。この最新のデータベースには、箱から出してすぐに自動シャーディングと完全なクラスターサポートが備わっています。MongoDBをプラグインすると、サーバーのクラスター全体に広がり、フェイルオーバーサポートと自動レプリケーションを提供します。アプリの開発、テスト、クラウドでのホストが簡単であることを考えると、次のプロジェクトでMongoDBを検討しない理由はほとんどありません。

MySQLの構造は制限されています 

LAMPベースのアプリを開発または保守してきた人なら誰でも、リレーショナルデータベースとしてのMySQLの強みが時々少し投獄されていると感じることがあることを知っています。すべてのリレーショナルデータベースと同様に、MySQLではデータをテーブルにプッシュする必要があります。すべてのエントリがまったく同じ形式に収まる場合、これは問題ではありませんが、世界はどれくらいの頻度で寛大ですか? 2人が同じアドレスを共有しているが、同じアカウントを共有していない場合はどうなりますか?アドレスに2行ではなく3行にしたい場合はどうなりますか?あまりにも多くのデータを1つの列に詰め込んで、リレーショナルデータベースを修正しようとしたことがない人はいますか?そうしないと、さらに別の列を追加することになり、テーブルが無制限に大きくなります。

一方、MongoDBは、はるかに柔軟なドキュメント構造を提供します。ユーザープロファイルに新しい個人情報を追加したいですか?フィールドをフォームに追加し、JSONドキュメントの残りのデータと一緒にロールアップして、MongoDBコレクションに追加するだけです。これは、流動的なプロジェクトや、最終的にテーブル形式で制約するのが難しいデータを処理する場合に最適です。

ディスク容量が安い

リレーショナルデータベースの大きな啓示の中には、JOINコマンドがありました。JOINを使用すると、都市、州、郵便番号などの繰り返しフィールドを削除することで、ディスク容量を節約できます。この頻繁にアクセスされ繰り返されるデータを、JOINを介して将来の結果に含めることができる個別のテーブルに格納することにより、データベースを整理し、ディスクをスリムに保ちます。

ただし、JOINは、RAM上で扱いにくい場合があります。また、JOINを介して個別のテーブルのデータを分離してアクセスすることは良い考えですが、ディスクドライブは数テラバイトで測定されるため、ディスク領域を節約する必要はそれほどありません。スペースが非常に安いため、JOINが遅すぎるため、一部のデータベース設計者はデータを非正規化することになります。そうすれば、リレーショナルデータベースはそれほど必要ありません。代わりにMongoDBを使用してみませんか?

Node.jsはサーバーレイヤーを簡素化します

LAMPスタックのさまざまなレイヤーをナビゲートすることは、多くの帽子の難しいダンスになる可能性があります。その1つでは、構文が異なるさまざまな構成ファイルをシャッフルする必要があります。MEANは、Node.jsを使用してこれを簡素化します。

アプリがリクエストをルーティングする方法を変更したいですか?JavaScriptをいくつか振りかけ、残りはNode.jsに任せます。クエリへの回答に使用されるロジックを変更したいですか?そこでもJavaScriptを使用してください。URLを書き直したり、奇妙なマッピングを作成したりする場合は、JavaScriptにもあります。MEANスタックがNode.jsに依存しているため、この種のパイプワークはすべて1つの場所に、すべて1つの言語で、すべて1つのロジックの山に配置されています。PHP、Apache、およびスタックに追加するその他のマニュアルページを読み直す必要はありません。LAMP世代にはすべてに対して異なる構成ファイルがありますが、Node.jsはその問題を完全に回避します。すべてを1つのレイヤーに含めることで、混乱が少なくなり、複数のレイヤー間の奇妙な相互作用によって奇妙なバグが発生する可能性が低くなります。

MEANはコードを同型にします

単純さは、サーバーでJavaScriptを使用することだけにとどまりません。MEANを使用すると、クライアントでも同じJavaScriptを楽しむことができ、LAMPスタックのクライアント/サーバー統合失調症を残すことができます。Nodeのコードを記述し、Angularに配置する方が適切であると判断した場合は、簡単に移動でき、同じように実行することはほぼ確実です。この柔軟性により、MEANベースのアプリのプログラミングが大幅に簡単になります。さらに、プロジェクトにスタッフを配置する場合は、PHPの専門家とJavaScriptの専門家、またはフロントエンドとバックエンドの専門家を探す必要はありません。代わりに、スタック全体のすべてのJavaScriptです。

どこでもJSON

Node.jsやExpressと同様に、AngularとMongoDBはどちらもJSONを話します。データは、書き換えや再フォーマットを行うことなく、すべてのレイヤー間をきれいに流れます。クエリに回答するためのMySQLのネイティブ形式は、まあ、すべて独自のものです。はい、PHPにはすでにMySQLデータをインポートしてPHPでの処理を容易にするコードがありますが、それはクライアント層には役立ちません。データを簡単に変換できる十分にテストされたライブラリが非常に多いため、これは経験豊富なLAMPのベテランにとっては少しマイナーかもしれませんが、すべてが少し非効率的で混乱しているようです。MEANは、あらゆる場所のデータに同じJSON形式を使用するため、各レイヤーを通過する際のデータの再フォーマットが簡単になり、時間を節約できます。さらに、MEANスタックを介したJSONのユビキタス性により、外部APIの操作がはるかに簡単になります。つまり、GET、操作、提示、POST、およびすべてを1つの形式で保存します。

Node.jsは超高速です

Apacheは素晴らしかったが、最近ではNode.jsの方がフラットアウトが速いことが多い。多くのベンチマークは、Node.jsがより優れたパフォーマンスを提供する一方で、はるかに多くのことを実行することを示しています。おそらくそれはコードの時代です。おそらく、Node.jsのイベント駆動型アーキテクチャの方が高速です。それは問題ではありません。最近、特にせっかちなモバイルデバイスユーザーの間では、アプリのパフォーマンスを数ミリ秒も短縮することが重要であり、Node.jsはそれを実行できると同時に、チューリング完全なメカニズムを提供して再プログラミングします。

深さが重要

PHP愛好家は、WordPressやDrupalなどの主要なプラットフォーム用に構築された優れたコードライブラリに固執することを好みます。誇りに思う理由は十分にありますが、Node.jsが追いつくにつれて、その利点は失われつつあります。

Node.jsパッケージマネージャーであるNPMを使用すると、コードの共有がさらに簡単になり、Node.jsを対象とするパブリックリポジトリが急速に成長しています。PHPの群衆は現時点でリードするかもしれませんが、将来はNode.jsを支持するかもしれません。さらに、現在の人々は、トレンドの変化に直面しても脆弱であることがよくあります。Drupalのような定着したプラットフォームを新しいバージョンで最新化しようとするたびに、より多くの開発者がNode.jsを中心に構築された新しいより機敏なプラットフォームに目を向けるようになる可能性があります。

Angularは新鮮です

LAMPにはアナログが含まれていないため、「MEAN」の「A」をLAMPスタックの何かと比較することは正確には公平ではありません。クライアント側で何かをしたいのなら、あなたはあなた自身です。確かに、MySQLで動作する優れたPHPベースのフレームワークはたくさんありますが、それぞれが少し異なり、独自の方向に進んでいます。たとえば、WordPress、Joomla、Drupalは異なる戦略を提供しており、ポートコードを切り替えるのはもちろん、それらを切り替えるのも困難です。 1つのクライアントフレームワークに油を注ぐと、一貫性と安定性が追加されます。

また、AngularがWebアプリの構築に20年の経験を持つ人々によって構築されたことも役立ちます。彼らは、設計作業をHTMLとCSSに任せるのに十分な知識を持っていました。彼らはまた、HTMLをスキャンするためにJavaScriptを少し追加する方法を考え出しました。Angularの設計者は、人間が何をうまくやっているかを調べ、人間をサポートするようにJavaScriptを調整しました。テンプレートシステムとロジックレイヤーは、これまでに見たものよりも劇的にクリーンです。これは、チームがJavaScriptのローカルパワーを活用して何をしているかを推測する簡単な方法を見つけたためです。

ミックスアンドマッチ

もちろん、あなたが本当にうるさいなら、それを少し混ぜることができない理由はありません。多くの開発者はApacheとPHPでMongoDBを使用し、他の開発者はNode.jsでMySQLを使用することを好みます。Angularは、MySQLからデータを配信するためにPHPを実行しているサーバーでも、どのサーバーでも非常にうまく機能します。頭字語の奴隷である必要はありません。