本記事について
プログラミング初心者がサービスの設計思想に関する知識を学んだので、その備忘録として載せております。
どうかお手柔らかにお願いいたしますm (- -)(_ _)ペコリ
アーキテクチャ(構造)
webサービスや設計を形作る構造や構成のこと
例) Ruby on railsで言うMVCアーキテクチャ
アーキテクチャスタイル(設計指針)
webサービスの構造や構成を決めるアーキテクチャを決める際の設計指針
お客様ユーザーがより使いやすく、アプリケーションへの負荷を低減できたり、より効率的な開発ができるうような設計方針
RESET(Representational State Transfer)
webのアーキテクチャスタイルのこと
RESETのメリット
書き方が統一化されているので他のRESETのシステムと連携し機能を広げることが可能である
入力が少ない情報配信サービスや検索サービスなどに向いている
RESETのデメリット
構成のルールが決まっているので単体では拡張性に乏しい
RESETはクライアント/サーバーから派生したもので、クライアント/サーバーに構成を加えることでRESETが成立
クライアント/サーバー
サービス提供コンピュータ(サーバ)とそのサービス利用するコンピュータ(クライアント)がネットワークでつながった構成になっているシステムのこと
サーバのコンピュータとクライアントのコンピュータがつながっている仕組みのこと
クライアント側とサーバー側で処理を分ける仕組み
クライアントとサーバー間でリソースをやり取りする時、クライアントからURLにHTTPメソッドを加えた情報でリクエストする
リソース(RESETに関連する言葉)
web上で名前を持ったあらゆる情報のこと
すなわち情報のこと
無数のリソースはURLで場所を特定できる
URLを用いることでリソースの閲覧ができる
URL
リソースがどこにあるのかを指し示すもの
RESETを使うべき理由
簡単でシンプル
すべての情報はリソース(URL)で表現されそれを4つのHTTPメソッド(GET,POST,PUT,DELETE)のみで使用するので非常にシンプルな設計になる
システムが単純なのでサーバー側の負荷が少ない
ステートレスなのでサーバーはクライアントの情報を保存しない
クライアントからの全ての情報をはじめから送信するので、複数のリクエストが集中しても別々のサーバーで処理できるなど、サーバーの負担を減らしやすくなる
RESTful
RESETの考え方や原則に従って実装されていること
RESETの構成やルールを守ることでよりシンプルで連携のしやすいWebサービスの実装が可能
ステートレスサーバー(ステートで状態 ステートレスで状態がない)
クライアントの状態を保持しないサーバー
サーバー側で状態を管理しないため、クライアントはリクエストごとに全ての情報を送信する
メリットはサーバー側の実装が簡単になること
サーバー資源をすぐに解放できるという利点があり、利用者に機能性能において恩恵を与えれるし負荷の低減も行える。
キャッシュ
一度得たリソースをクライアント側で保存し、そのリソースを使い回す仕組み
よく使うデータを取り出しやすいところに予め準備しておく仕組み
メリット
クライアントとサーバー間の通信を減らすことで処理の時間の短縮と効率化につながる
デメリット
古いキャッシュを使うことで情報の信頼度が下がる
統一インターフェース
使用するメソッドを固定すること
インターフェース
2つの物ののくっついている部分
階層化システム
システムを階層ごとに分けること
クライアントとサーバーの間に階層を分割するものを設け、負担を分散する
統一インターフェースにより受けられる恩恵
コードオンデマンド(JavaScript)
プログラムをクライアント側で実行すること
メリット
クライアントは後から新しい機能を追加していける
デメリット
クライアント側での実行が増えるので、サーバーとやり取りされるリソースの内容が明確ではなくなる
RESETに従って実行すると全体としてより良いwebサービスとなる。
RESETだけではないし、6つのうち選択的に除外しても問題ない
SOAP(Simple Object Access Protocol)
通信する上でのルールでリクエスト及びレスポンスともにコンピューターが読み取りやすいように形成されたデータでやり取りを行う
複雑な処理を必要としたりセキュリティの設定を必要とするようなサービスに向いている
高機能で拡張性がある
RESETとSOAPの簡単な違い
RESETはシンプルで簡単、SOAPは高機能で複雑