Webアプリケーションに必要なサーバ機能
- 静的ファイル配信
HTML/JS/CSSなど - API
機能毎に求められるサーバスペックは異なる
- 静的ファイル配信
- とにかく決められたコンテンツを素早く返す
- CPUパワーはさして重要でない
- キャッシュが有効
- API
- DBやストレージとのやり取りと計算
- APIリクエストは頻繁に生じるためCPUとメモリ両方を潤沢に使いたい
- どちらかと言えばCPUパワーがより重要(DBはメモリが大事)
アーキテクチャパターン
- APIサーバ独立パターン
- 同居パターン
- サーバーレスパターン
※私がこのスライドのために勝手に名付けたのであり、一般に浸透している用語ではありません。
APIサーバ独立パターン(1/2)
APIサーバ独立パターン(2/2)
- (+)それぞれのサーバでスペックを変えられるので最適なスペックを追求できる
- (-)CORSが必要
同居パターン(1/2)
同居パターン(2/2)
- (+)デプロイプロセスや運用がシンプル
- (-)静的ファイル配信が多くなった時にどうなるか・・・?
サーバーレスパターン(1/2)
サーバーレスパターン(2/2)
- (+)前述の2パターンの欠点を克服
- (+)コスト最適
- (-)実現が複雑。事実上、専用のサービスを使うことになる
Static Web App(Azure)/Amplify(AWS)
サーバーレスパターン補足
- 理想的に思えるが、難点はある
- 開発プラットフォームが限定される
- AWSベンダにロックインされる
最後に
- どのパターンも一長一短
- 選択肢を複数持っておくことが大事