Webシステム本番環境の基本スタイル
2021/11/26 02:00
デプロイにまつわる話からWebシステム本番環境のよくある構成について、絵を用いて解説しています。スケールを全く意識しない構成から、スケールする構成までのイメージやそれが必要な背景が掴めるようなゴール感となっています。25分程度の動画です。
よくあるデプロイの形
なにがしかのインターネットからアクセスできるマシン上に開発したシステムを入れることで公開しますが、過去から昨今に向けての変遷をお伝えしていきました。前提としてRDBを用いた通常のWebサービスです。FirebaseのようなNoSQLを利用したPaaSとは違いますのでご注意ください。
(昔々)VPSのように一台に全て入れてました
VPS一台の中にWebのシステムとデータベースなど全て入れて公開する方法です。 開発マシンとほぼ同じ環境を再現するのでシンプルでわかりやすいですが、「高アクセスが発生した時に対応できる方法が限られる」という課題があります。やれたとしてもスケールアップが中心になるはずで、大きな性能向上ができないケースが多いです。
(昨今)Webサーバをスケールアウト可能にする
DBサーバを一台のままにして、Webサーバは複数台増やせるようにしてスケールアウトを可能にする方法です。現在仕事でWebのシステムを提供する場合にはこの考え方が主流だと思います。
DBサーバはスケールアップで対応することが多いですが、RDBの製品の中にはDBサーバが一つに見えるが、裏側でスケールアウトするような仕組みがあるものも存在します(AWS Auroraなど)。
よく一緒に利用されるもの
- インメモリDB: RedisなどのインメモリDBをセッション管理などに利用したりします。
- ジョブキュー: 重たい処理をジョブの単位で処理させるサーバを用意します。
- 外部ストレージ: 動画で紹介していませんでしたがAWSのS3のような外部ストレージもよく用いられます
ポイント
- Webサーバは増減するので、永続化が必要な情報は置かないようにします。
- Webサーバへの通信はロードバランサー(LB)で通信を振り分けられる為、同じユーザが毎回違うサーバに処理を通信することになります。
- AWSなどの基本を学ぶと出てくるELB+EC2+RDSのような構成は今回ご紹介した内容そのものです。
言葉
- スケールアップ: 一台のマシンの性能を上げることによってシステムの性能を上げる方法です。
- スケールアウト: 複数台のマシンを組み合わせ、大抵はWebアクセスを対応するサーバの台数を増やせるようにする方法です。