はじめに
今回はWebアーキテクチャについてアウトプットしていこうと思います!
Webサービスの設計思想
Webは誕生から20年で爆発的に普及し、巨大なサービスへと成長しました!
各々が作る個々のWebサービスがここまで成功した要因は、設計思想とその構造にあります。
アーキテクチャ
アーキテクチャとは、Webサービスや設計を形作る構造のことです!
Webを例にすると、Webはブラウザ、HTTP、HTMLなどで構成されているため、これらがWebのアーキテクチャということになります!
システムの設計指針
実際にWebサービスは具体的なアーキテクチャを持っています!
独自の考えで作っていくのではなく、設計指針を決めて実装していきます!
アーキテクチャスタイル
アーキテクチャスタイルとは、アーキテクチャを決める際の設計指針となるものです!
アーキテクチャを設計する時に、手当り次第に設計していくのではなく、指針やルールに沿って実装していきます!
指針に沿ったWebサービスは、無駄なアーキテクチャがなく整理されており、ユーザーが使いやすいように設計されています!
アーキテクチャとアーキテクチャスタイルの違いてしては構造と設計指針というてんで違いがあります!アーキテクチャという構造をアーキテクチャスタイルという設計指針に基づいた組み合わせていくものです!
REST
RESTはWebのアーキテクチャスタイルのことです!
Webのアーキテクチャスタイルとして一番有名なのがクライアント/サーバーです!
RESTは、クライアント/サーバーから派生したもので、これにいくつかの構成を加えることでRESTというアーキテクチャスタイルが成立します!
リソース
リソースとはRESTに関連する言葉で、Web上で名前を持ったあらゆる情報のことです!
RESTでは、情報をリソースという考え方で表現します!
例としては、保存したブックマークなどがあります!
特定の写真、のような1つのものをリソースと呼んだり、Webページそのものをリソースと呼んだりします!
RESTの中身
RESTは複数のアーキテクチャスタイルが集まってできており、クライアント/サーバーを合わせた6つのアーキテクチャスタイルで成り立っています!
ステートレスサーバー
ステートレスサーバーとは、クライアントの状態を保持しないサーバーのことです!
ステートレスとは、状態がないということを意味します!
サーバー側で状態を管理しない為、クライアントはリクエストごとに全ての情報を送信します!
メリットとして、サーバー側の実装が簡単になることです!
キャッシュ
キャッシュとは、一度得たリソースをクライアント側で保存しそれを使い回す仕組みのことです!
メリットとしては、クライアントとサーバー間の通信を減らすことで処理時間の短縮と効率化に繋がります。
デメリットとして、古いキャッシュを利用することで情報の信頼度が下がることがある点です。
統一インターフェース
統一インターフェースとは、使用するメソッドを固定することです!
RESTの中で最も特徴的なアーキテクチャスタイルです!
階層システム
階層化システムとは、システムを階層に分けることです!
これは統一インターフェースにより受けられる恩恵になります!
クライアントとサーバーの間に階層を分割するものを設け、負担を分散したりします!
コードオンデマンド
コードオンデマンドとは、プログラムをクライアント側で実行することです!
JavaScriptがこれに当たります!
メリットとして、クライアントは後から新しい機能を追加していけます!
デメリットとして、クライアント側での実行が増えるので、サーバーとやり取りされるリソースの内容が明確ではなくなります!
その他の設計の考え方
SOAP
SOAPは、通信する上でのルールでリクエストおよびレスポンスともにコンピューターが読み取りやすいように作成されたデータでやり取りを行うものです!
特徴は以下のものがあります!
- 複雑な入力や出力があるサービス向けである
- 厳密なチェックなどが必要なサービス向けである
RESTとSOAPの違い
大きな違いとしては、RESTはシンプルで簡単でSOAPは高機能で複雑だという違いがあります!
SOAPのメリットとしては、高機能で拡張性があるということです!ただし、デメリットとしては書き方の自由度が高いため構成が複雑になってしまうことです!
RESTのメリットとしては、書き方が統一されているので、他のRESTのシステムと連携し機能を広げる事が可能です!しかし、デメリットとしては、構成のルールが決まっているので単体では拡張性に乏しいことです!
設計思想沿った実装
個々のWebサービスは、原則に従って実装することでより良いサービスや機能を作ることができます!
RESTful
RESTfulとは、RESTの考え方や原則に従って実装されていることのことです!
RESTの構成やルールを守ることで、よりシンプルで連携のしやすいWebサービスの実装が可能になります!
コメント