はじめに
サーバー管理に疲れていませんか?「ハードディスクの交換」や「セキュリティパッチの適用」、「リソースのチェック」など、サーバー管理ではさまざまなタスクが発生します。
クラウドの仮想マシンに移行すれば、ハードウェアにまつわるタスクを減らすことは可能です。しかしながら、結局のところサーバー管理から完全に逃れることはできません。問題が起きる場所が、オンプレミスからクラウド上に移動しただけです。
そこで、完全にサーバー管理から脱却するために「サーバーレスアーキテクチャ」が考案されました。”サーバーレス”とはいっても、サーバーが存在しない魔法の技術ではありません。いうなれば、”サーバーマネージメントレス”といったところでしょうか。今、クラウドの新たな活用方法として注目されています。
この記事では、
- サーバー管理から開放されたいエンジニアの方
- サーバーの運用コストが気になるエンジニアの方
のために、サーバーレスアーキテクチャの概要やメリット・デメリット、具体的な構成例についてお伝えしていきます。ぜひご一読して、検討するアーキテクチャのひとつに加えてみてください。
サーバーレスアーキテクチャとは?
サーバーレスアーキテクチャは、クラウドサービスを活用して、今まで管理が必要だったサーバーをなくす手法です。つまり、サーバー管理をクラウドにすべて任せることで、サーバー管理から脱却するということです。
従来はクラウド上で仮想マシンを実行することで、サーバー管理の一部をクラウドに任せていました。しかし、この方法では仮想マシンの管理が必要になります。また、リクエストを待ち受けるために、仮想マシンを常時起動していなければならず、ムダなコストがかかってしまいます。時間単位では安価とはいえ、ちりも積もればなんとやらです。
サーバーレスアーキテクチャでは、プロセスを常時起動する仮想マシンは使いません。その代わりに、イベント(リクエストなど)に反応して、コードを実行するサービスを使います。代表的なものはAWS Lambdaです。他にも、Google Cloud FunctionsやMicrosoft Azure Functionsなどがあります。これらのサービスは、リクエスト数やコードの実行時間を元に料金を算出するため、ムダなコストが発生することはありません。
サーバーレスアーキテクチャのメリット
サーバーレスアーキテクチャのメリットは主に2つあります。
ひとつ目は、サーバーを管理しなくてよいことです。すべてのメンテナンスをクラウドサービスに任せることで、開発に集中できるようになります。ビジネスの本質は、サーバーを管理することはではなく、サービスを提供することにあります。
ふたつ目は、サーバーの運用コストを削減できることです。リクエストやコードの実行時間に応じた使用料になるため、特にリクエストに波があるシステムでは大幅なコスト削減が期待できます。逆に、常にリクエストを受けているシステムではそうならないかもしれません。とはいえ、サーバー管理のための人件費は削減できるでしょう。
サーバーレスアーキテクチャのデメリット
一方、やはりデメリットもあります。AWS Lambdaなどでコードを実行するために、アプリケーションを小さいAPIに分割する必要があります。このため、どうしてもモノリシックなアプリケーションよりも複雑度が増します。なにかに似ている気がしますね。そう、「マイクロサービスアーキテクチャ」の考え方とそっくりですね。つまり、両者は相性がよく、同時に適用することで相乗効果を生み出すのです。(ブログ記事「Netflixも採用しているマイクロサービスアーキテクチャの概要とメリット・デメリット」に詳しく解説しています。)
具体的にはどうやって構成するのか?
ここでは、AWSを例に簡単なサーバーレスアーキテクチャの構成方法を説明します。使用するサービスは以下のとおりです。
- Amazon S3(ストレージ)
- Amazon API Gateway(フロントエンド)
- AWS Lambda(バックエンド)
- Amazon DynamoDB(データベース)
全体の構成は、「S3 ― API Gateway ― Lambda ― DynamoDB」という風になっています。クライアントからのリクエストを処理する流れは次のようになります。
- ブラウザがS3からHTMLやCSS、JavaScriptなどの静的コンテンツを取得する
- (操作などにより)ブラウザのJavaScriptがAPI Gatewayにリクエストを送る
- API GatewayがLambdaを起動する
- LambdaがDynamoDBにクエリし、結果をAPI Gatewayに返す
- API GatewayからブラウザのJavaScriptにレスポンスを返す
- JavaScriptによりページが更新される
以上が、単純なアプリケーションでの一連の流れになります。実際には、他のAWSサービスも使った複雑な構成になるでしょう。サーバーレスのイメージはつかめましたか?
まとめ
もちろん、サーバーレスアーキテクチャは銀の弾丸ではないので、なんでもかんでもサーバーレスにすればいいというものではありません。アプリケーションによっては、従来型のアーキテクチャのほうが適していることもあります。まだ登場したばかりのアーキテクチャであり、関連するサービスも発展途上にあります。サーバーレスアーキテクチャはこれからの成長が期待されるところです。もしサーバーレスアーキテクチャを適用するなら、比較的規模の小さいプロジェクトからはじめることをおすすめします。そこから知見を集めていきましょう。あなたはサーバーレスにしたいと思いますか?
本ブログは、Git / Subversion のクラウド型ホスティングサービス「tracpath(トラックパス)」を提供している株式会社オープングルーヴが運営しています。
開発の効率化をしたい!もっと便利なツールを使いたい!そんなお悩みをtracpathで解決!
「tracpath(トラックパス)」は、企業内の情報システム部門や、ソフトウェア開発・アプリケーション開発チームに対して、開発の効率化を支援し、品質向上を実現します。
さらに、システム運用の効率化・自動化支援サービスも提供しています。
”つくる情熱を支えるサービス”を提供し、まるで専属のインフラエンジニアのように、あなたのチームを支えていきます。
No Comments