技術スタックとは何か?
テクノロジー・スタックに適切なレイヤーを用意することが不可欠である理由を理解するために、このページでは以下のことを取り上げる:
テクノロジー・スタック(技術スタック)により、ソフトウェア、ツール、サービスを組み合わせて、Webアプリケーションやモバイル・アプリケーションを構築することができる。典型的な技術スタックの各レイヤーは、プレゼンテーション、アプリケーション・ロジック、または永続性といった別々のタイプのタスクを担当する。
技術スタックはどこから来るのか?
テクノロジー・スタックという概念は、ウェブの黎明期からあった。初期のウェブページは、単純な "静的コンテンツ "だった。コンテンツを取得するために、ウェブページは「静的コンテンツ」と呼ばれる外部プログラムを呼び出すという初歩的な方法を用いていた。 コモン・ゲートウェイ・インターフェイス(CGI).CGIスクリプトは、ユーザーのリクエストを処理するプログラムをウェブサーバーに実行させる。これらの初期のプログラムの多くは、Cプログラミング言語で手作りされていた。
ほとんどすぐに、初期のウェブ開発者たちは、ウェブ・ソフトウェアを構築するための、より優れたフレームワークや抽象化の実験を始めた。Perlは、このコードを書くための、よりわかりやすくアクセスしやすい言語として登場した。しかし、それはまだ技術スタックとは言えなかった。
さらに技術革新と進化が進み、さまざまな技術スタックが登場するようになった。手作業でHTMLを書き出すよりも、ライブラリやページテンプレートのフレームワークで プレゼンテーション層 ロジックが一般的になり始めた一方で、プログラムの他の部分は自由形式だった。リレーショナル・データベースのようなものは、アプリ開発者にデータ・アクセスを管理し表現する明確な方法を提供した。 永続層 そしてコネクションプールのような概念が生まれた。
技術スタック層
同じスタックレイヤーでも人によって呼び名が違うので、ここでは単にトップレイヤー、ミドルレイヤー、最下層と呼ぶことにする。より重要なのは、各レイヤーが担当するタスクである。
技術スタックの最上位層:プレゼンテーション
技術スタックのプレゼンテーション層は、フォーマットやローカライゼーションが行われる場所である。例えば、ウェブサイトには1つのロゴと色のセットがあるかもしれないが、スタイルが変われば、ルック&フィールを変更したくなるかもしれない。プレゼンテーション・レイヤーのもうひとつの例は、パーソナライゼーションです。ブラウザのリクエストが、華氏ではなく摂氏で気温を表示したい国から来た場合、提供される情報は異なります。
技術スタックの中間層アプリケーション・ロジック
アプリケーションロジックは、技術スタックの中間層に位置する。例えば、ウェブブラウザのリクエストには、アプリケーションロジックが正しいデータベースクエリに解決する必要のある場所(例えば、テキサス州オースティン)とタイムゾーン(中央部)が含まれるかもしれません。
ミドルレイヤーは、マイクロサービス・ベースのアーキテクチャを使用して分散させることができる。マイクロサービス・ベースのアーキテクチャでは、適切に記述されたサービス・インターフェースを介して、さまざまなアプリケーション部分を独立して実装することができる。
技術スタックの最下層:永続性(またはデータベース)
永続化レイヤは通常、スタックの最下層であり、ファイル・システム内のファイル・セットのようにシンプルである。しかし、基本的なファイルシステムでデータを管理するには、開発者自身がインデックスを作成し、データにアクセスする方法を開発する必要がある。
その代わりに、ほとんどの開発者はデータベースを選ぶ。元来、データベースといえば リレーショナルデータベース なぜなら、それが最も一般的だったからだ。しかし、時が経つにつれて NoSQLデータベース NoSQLは柔軟性、スケーラビリティ、幅広い機能を備えているため、開発者にとってもう1つの人気オプションとなっている。
さまざまな技術スタックとは?
LAMPスタック(Linux、Apache、MySQL、PHPで構成)は、最初に普及したスタックのひとつとなった。Linuxは最も頻繁に使用されるオペレーティングシステムとなり、Apacheは最も頻繁に使用されるウェブサーバーとなり、MySQLは最も頻繁に使用されるデータベースとなり、PHPは最も頻繁に使用されるページテンプレートとプログラミング言語となった。
技術スタックの例
以下のリストは、テクノロジー・スタックがいかに多様で相互運用可能かを示す一例に過ぎない:
ウィンプ
Windows OS、IISウェブサーバー、MySQLデータベース、PHPアプリレイヤー
マンプ
Mac OS、Apacheウェブサーバー、MySQLデータベース、PHPアプリレイヤー
ファンプ
FreeBSD OS、Apache ウェブサーバ、MySQL データベース、PHP アプリレイヤ
ラップ
Linux OS、Apacheウェブサーバー、PostgreSQLデータベース、PHPアプリレイヤー
LNMP
Linux OS、NGINXウェブサーバー、MySQLデータベース、PHPアプリレイヤー
MEAN
MongoDBデータベース、Express.jsアプリコントローラ、Angular.jsアプリプレゼンテーション、Node.js
ライム
Linux OS、Yawsウェブサーバー、Mnesiaデータベース、Erlangアプリレイヤー
ライース
Linux OS、Yawsウェブサーバー、CouchDBデータベース、Erlangアプリレイヤー
エルク
Elasticsearch検索/統計アグリゲータ、Logstashロギング検索、Kibanaグラフィカル・プレゼンテーション
ジャムスタック
JavaScriptによるプレゼンテーション、データアクセスのためのAPI、マークアップ(静的またはテンプレートコンテンツ)
Couchbaseの技術スタック
クラウドデータベースプラットフォームとして、 Couchbase は、技術スタックにおいて重要な役割を果たしている。アプリ開発者が一般的に必要とする一連のデータアクセスと管理機能を統合しているため、Couchbaseは拡張と成長を容易にします。
CEANスタック
このスタックは、Couchbase、Express、Angular.js、Node.jsを使用する。MEANスタックに似ているが、代わりにCouchbaseをデータベースとして使う。CEANには、コミュニティ主導のプロジェクト・スカフォールディング・ツールもある。
CODEスタック
このスタックでは、データベースにCouchbase、オブジェクト・ドキュメント・マッパー(プログラミング構造を簡単にデータベースにマッピングするソフトウェア)にOttoman.js、アプリのルーティングにExpress.jsを使用している。
結論
ユーザーのために構築しているアプリやサービスを技術スタックとして抽象化することは、あなたにとって役に立つかもしれない。これは、個々のコンポーネントを注意深く検討する良い方法である。さらに重要なのは、各レイヤーの責任を個別に考えることで、より互換性のあるコンポーネントでより柔軟なシステム・アーキテクチャを構築できるようになることだ。