はじめに
webは誕生から爆発的に普及し、巨大サービスへと成長した。
Webサービスがここまで成功した要因は、設計思想とその構造にあるらしい。
今回はタイトル通り。Webサービスがどのような思想で設計されているのか。代表的な設計指針を復習する。
アーキテクチャとは?
webサービスや設計を形作る「構造」のこと。
webを例にするとブラウザ、HTTP、HTMLなどで構成されているので、これらがWebのアーキテクチャとなる。
アーキテクチャスタイル
アーキテクチャを決める際の「設計指針」。指針やルールに沿って実装される。
自分が学習した「クライアント/サーバー」「MVCモデル」「オブジェクト指向」などもアーキテクチャスタイッルに含まれる。
無駄なアーキテクチャがなく整理されていて、ユーザーが使いやすいように設計されている。
アーキテクチャは構造アーキテクチャスタイルは設計指針という違い。
例:どのような家にするのか方針を定めるのがアーキテクチャスタイル。その方針に基づいた、トイレ、キッチン、リビングなど家の構造1つ1つがアーキテクチャ。
REST
RESTはWebアーキテクチャスタイルのこと。洗練されていて、よく起用されている。
「クライアント/サーバー」が一番有名なアーキテクチャスタイル。これにいくつかの構成を加えることでRESTというアーキテクチャスタイルが成立する。
リソース
RESTに関連する言葉で「web上で名前を持ったあらゆる情報のこと」
例
保存したブックマーク
渋谷の写真データ
渋谷の天気予報情報
など。いずれもリソースである。web上には無数のリソースがあり、どこにあるか指すものをURLという。
RESTはURLにHTTPメソッドを加えた情報でリクエストする。
RESTの中身
RESTは複数のアーキテクチャスタイルが集まってできており、6つのアーキテクチャスタイルで成り立っている。
ステートレスサーバー
クライアントの状態を保持しないサーバーのこと。
リクエストごとにすべての情報を送信する。メリットはサーバー側の実装が簡単になること。
キャッシュ
一度得たリソースをクライアント側で保存しそれを使い回す仕組みのこと。
メリットはクライアントとサーバー間の通信を減らすことで処理時間の短縮と効率化に繋がる。
デメリットは、古いキャッシュを利用することで情報の信頼度が下がることがある。
統一インターフェース
全てのサーバーで使用するメソッドを固定する。例えばHTTPメソッドでは、URLで指し示したリソースをGETやPOSTなどに限定することで、全体がシンプルになる。
階層化システム
システムを階層に分ける。クライアントとサーバーの間に階層を分割するものを設け、負担を分散する。
統一インターフェースにより受けられる恩恵。
コードオンデマンド
プログラムをクライアント側で実行すること。代表的なものでjavascriptがこれに当たる。
メリットはクライアントが後から新しい機能を追加していけること。
デメリットは、クライアント側での実行が増えるので、サーバーとやり取りされるリソースの内容が明確ではなくなる。
SOAP
通信する上でのルールでリクエストおよびレスポンスともにコンピューターが読み取りやすいように作成されたデータでやり取りを行う。
特徴
- 複雑な入力や出力があるサービス向け
- 厳密なチェックなどが必要なサービス向け
RESTとSOAPの違い
違いは簡単RESTはシンプルで簡単SOAPは高機能で複雑
終わりに
今日この記事をまとめた理由はアーキテクチャという言葉を見たときにあれ?なんだっけ?となってしまったからです。一度その時理解したことでも、繰り返しが大事ですね。