[クラウド活用パターン辞典〜Amazon Web Servicesを使い倒す!〜]

AWSでサーバーレスなシステムを構築する【第4回】

2017年4月24日(月)清野 剛史(クラスメソッドAWS事業部ソリューションアーキテクト)

3回に渡って、主にWebシステムを効率的に運用するためのクラウドの使い方について考えてきた。その過程で分かってきたことは「いかに管理をクラウド側に任せるか」が、クラウドを使ったシステム運用の基礎的な考え方になるということだ。今回は“クラウドに任せる運用”の究極のスタイルとも言える「サーバーレスシステム」について考えていきたい。

 IT業界では最近、俄然注目を集めているのが「サーバーレスシステム」である。その理由はズバリ「運用コストの削減」と「自動的なスケール対応」にある。

 サーバーレスシステムは文字通り、サーバーを立てずにシステムを構築する考え方だ。とはいえ、本当にサーバーがないシステムはあり得ない。この言葉の真の意味は「自分でサーバーを立てない」、つまり「サーバーの構築・運用はクラウドに任せる」あるいは「クラウドが提供しているマネージドサービスを組み合わせてシステムを構築する」ということだ。

 AWS(Amazon Web Services)では、「責任共有モデル」によってシステムのセキュリティを定義している。聞きなれない言葉かもしれないが、要はセキュリティに関してAWSが責任を持つ部分と、ユーザーが責任を持つ部分は明確に分けられるという考え方だ。

 責任共有モデルによれば、インフラ周り、つまり各サーバーのハードウェア障害や電源、ネットワーク等々に関してはAWSが責任を持つ。だが、OSより上の部分、つまりOSパッチやミドルウェア、ロジック、セキュリティグループの設定などについてはユーザーが責任を持つことになる。電源や空調の心配は不要だが、OSのセキュリティ情報には、これまで通りアンテナを立てておかなくてはならない。サーバーが落ちたらユーザーの責任の元に再起動させる必要がある。

 これに対しサーバーレスシステムでは、責任共有モデルにおけるユーザー側の責任をなるべく少なくできる。サーバーがないのでOSやミドルウェアなどを管理しなくて良い。アクセスが集中した時はAWS側が自動的にスケール対応してくれるので、こちらも特に気にする必要はない。管理者はシステムの流れと実際のコードにだけ集中すれば良いことになる。

 ただ、どのマネージドサービスをどのように組み合わせるかにつては、もちろんユーザー側が考えなければならない。組み合わせ方が悪いとレスポンスが遅かったりランニングコストに跳ね返ったりする。以下では、AWSのマネージドサービスを上手に活用して、サーバーレスシステムを構築するポイントを探っていく。

S3 + CloudFrontでSPAを構築する

図1:クラウドストレージのS3とCloudFrontで構築したSPAの例図1:クラウドストレージのS3とCloudFrontで構築したSPAの例
拡大画像表示

 「S3」は、AWSのクラウドストレージとして有名である。だが実は、静的Webサイトホスティングを選択すればWebサーバーとしても動作する。JavaScriptやCSSも通常のWebサーバー同様に解釈できる。静的ページやJavaScriptを使用して動作するSPA(Single Page Application)であればS3のみで構築できる。S3のみでも毎秒300リクエスト秒程度は楽にさばけるが、安定したレスポンスやキャッシングによるコストダウンを考えるのであれば「CloudFront」を手前に設置してみるのが良いだろう(図1)。

 CloudFrontを利用すると、クライアントから見て、より近いロケーションのエッジサーバーからコンテンツが配信され、レスポンスが向上する。スクリプト等による動的なスクリプトであっても、それらをまとめてキャッシュした上でクライアントへ配信できる。ただしWebページの操作が、すべてスクリプトに依存するため、DBアクセスなどセキュアな情報を扱うには躊躇してしまう。静的ページやエラーページ、DB操作が絡まないようなページに対して「S3+CF」は有効に働くだろう。

バックナンバー
クラウド活用パターン辞典〜Amazon Web Servicesを使い倒す!〜一覧へ
関連記事

Special

-PR-

AWSでサーバーレスなシステムを構築する【第4回】3回に渡って、主にWebシステムを効率的に運用するためのクラウドの使い方について考えてきた。その過程で分かってきたことは「いかに管理をクラウド側に任せるか」が、クラウドを使ったシステム運用の基礎的な考え方になるということだ。今回は“クラウドに任せる運用”の究極のスタイルとも言える「サーバーレスシステム」について考えていきたい。

PAGE TOP