LAMPとMEANは、高性能のエンタープライズ・グレードのWebアプリやモバイル・アプリケーションの開発に使用される人気のオープンソース・ウェブ・スタックです。他のスタックと同様に、開発者がスタック開発を通じて効率的かつ確実に完全な機能を持つアプリを作成、デプロイ、管理するために使用できるテクノロジー(オペレーティングシステム、プログラミング言語、データベース、ライブラリ、アプリケーションフレームワーク)を組み合わせています。
LAMPとMEANの違いは、ウェブアプリがフロントエンドのインターフェース、ネットワーク、バックエンドサーバーの全活動にわたって機能するために必要な、異なるレイヤー(「スタック」)の技術を開発者に提供する点にあります。たとえば、ウェブベースの銀行アプリケーションでは、LAMPスタックまたはMEANスタックのいずれかを利用して、ユーザーの銀行取引閲覧リクエストを解釈し、必要なデータを取得してユーザーインターフェースに表示することがあります。
LAMPとは、次のようなスタックされたテクノロジーのことです。
Linux OSは、特定のハードウェア上でウェブアプリ全体が正しく動作することを可能にします。Apacheウェブサーバーはユーザーのリクエストを解釈し、その情報を HTTP(Hypertext Transfer Protocol)を介してユーザーに「提供」します。MySQLデータベース(リレーショナルデータベース管理システム)は、ウェブサーバーがユーザーの特定のリクエストに基づいて取得・提供できるデータ(銀行取引明細のアーカイブ、金融活動データ、画像ファイル、CSSスタイルシートなど)を格納します。PHPプログラミング言語はApacheと連携してMySQLデータベースから動的コンテンツを取得し、ユーザーに提示します。HTMLは静的コンテンツ(たとえば、データに関わらずインターフェース上に表示される見出し)を表示できますが、ユーザーの操作によって変化する動的コンテンツはPHPに依存します。プログラミング言語のPERLとPythonもLAMPスタックで使用可能です。作家のMichael Kunze氏は、1998 年にドイツのコンピュータ誌で記事を執筆した際、初めて「LAMP」スタックという頭字語を使用しました。
図1:ユーザー・リクエストがLAMPスタック上でどのように処理されるか。
MEANは、次のスタックされたテクノロジーを表します。
AngularJS フレームワークは、ユーザーからのリクエストを処理します。次に、Node.jsがリクエストを解析し、ウェブアプリが理解できるインプットに変換します。Express.jsはこの変換済みのインプットを用いて、MongoDB(非リレーショナルのNoSQLデータベース)に対してどの呼び出しを行うかを判断します。MongoDBが必要な情報を提供すると、Express.jsはそのデータをNode.jsに返し、Node.jsがAngularJSフレームワークに送信して、ユーザー・インターフェース上にリクエストされた情報を表示します。
AngularJSフロントエンド・フレームワークはReact.jsなどの他のフレームワークに置き換えることも可能ですが、Node.js環境はMEANスタックにおいて不可欠であり、代替できません。これは、Node.jsがフルスタックJavaScript開発を可能にし、MEANスタックを使ったアプリケーションの開発および管理を非常に効率的にする主要なメリットをもたらすからです。AngularJSフレームワークがReact.jsに置き換えられると、このスタックはMERNと呼ばれます。MEANスタックの頭字語は、2013年にMongoDB開発者のValeri Karpov氏によって初めて使用されました。
図2は、ユーザーの情報リクエストに応答する際、MEANスタック全体でウェブアプリがどのように動作するかを示す概略の例です。
図2:ウェブアプリがMEANスタック全体で応答してリクエストを満たす方法。
Webアプリケーションの作成、デプロイ、管理にLAMPを使用するメリットは以下の通りです。
ウェブアプリケーションの作成、デプロイ、管理にLAMPを使用する短所は以下の通りです。
MEANを使ってウェブ・アプリケーションを作成、デプロイ、管理するメリットは次のとおりです。
MEANを使ってウェブアプリケーションを作成、デプロイ、管理する際の主なデメリットは以下の通りです。
本質的に、どちらのスタックが優れているということはありません。ですが、LAMPスタックまたはMEANスタックが、特定のウェブ開発のユースケースに適している場合があります。
LAMPスタックは一般的に、以下のような特徴を持つWebアプリケーションやサイトに適した選択肢です。
逆に、MEANスタックは、次のようなWebアプリケーションやサイトには良い選択肢です。
基本に立ち返ると、LAMPスタックにより、ウェブページの技術的な配信とその実現がさらに近づきます。データベース、スクリプト言語、そしてクライアントに提供する手段が揃っているのがLAMPです。
LAMPまたはMEANスタックを使ってクラウドにアプリケーションを開発・デプロイする手軽さを確認したい場合、IBMでは以下のチュートリアルを提供しています。
IBMのフルマネージド・サービスでJavaアプリケーションのワークロードを容易にモダナイズします。
イノベーションを引き出し、既存のアプリケーションを迅速にモダナイズして、新しいクラウドネイティブなサービスを提供します。
クラウド・アプリケーション開発とは、一度構築すれば、迅速に反復し、どこにでもデプロイできます。