結び: 辿り来て、未だ山麓
- 以上、サーバ開発分野に関する頭出しを行った
- かなり盛りだくさんになってしまったし、具体例もそれほどない文書なので、各々で掘り下げてほしい
- このあと実際にサーバサイドのコードを書いてみる研修時間が長めに取られているので、その中で適宜振り返ろう
- 何度も繰り返すが、「調べられること」こそが第一の技術
- サーバに限らず、どの分野も研修の数週間ではとても網羅しきれない世界。未だ山麓です
付録: 漏れた話題
- 業務や、このあとの研修で触れることもあるはず。適宜調べよう
- アプリケーションサーバ設計・実装におけるパターンや思想
- この辺は使うフレームワークの最新の流儀をさらいながら学んでいくほうが良いと思うので含めなかった
- キーワードは、 Model-View-Controller; MVC, Layered Architecture, Domain-driven Design; DDD など
- スマートフォンアプリやWebアプリ(ここでは、ブラウザで動くJavaScriptなどで実装されたクライアントアプリケーションの意)の
設計・実装の思想と共通する部分もあれば違う部分もあるので注意が必要
- 「サーバからクライアントに」情報を送信する技術
- リソースの更新など、何らかの情報を リアルタイム; realtime にクライアントに通知したい状況
- TCPソケットを維持した上で、 双方向通信 するなど。 cf. Websocket
- マイクロサービス; Micro-service アーキテクチャ
- 対義語: モノリシック; Monolithic アーキテクチャ
- 特定の用途に特化したアプリケーションサーバ等を別々に構築し、それらを組み合わせてサーバサイドシステムの全体を構成する手法
- 部分的な性能調整や更新の適用がし易い、部分的な故障が全体に波及しない、 コンテナ技術 との相性が良い、などの利点
- 複数構成要素からなるサーバシステムでのPull型構造とPush型構造
- Pull型は「クライアントがリソースを取りに行く」、Push型は「リソースをクライアントに押し付ける」イメージ
- リソース源とリソース利用者との数的関係にもよるが、いずれの場合も「数的に少ない側に負荷がかかる」ことが多い
- 例) 「ログ集積サーバ」のような要素を導入することは多いが、ここに対してログを送りつける(pushする)他のサーバが多い場合、
ログ集積サーバに高負荷がかかる。最悪ケースではシステム全体が不安定になる
- cf. 単一故障点; Single Point of Failure, SPOF
付録: 演習振り返り
- 演習1: HTTP 1.1のRFC
- 演習2: HTTP Methods