サーバーレス技術は、テックコミュニティで多くの話題を呼び起こし、多少の反発も受けています。これは2014年にAWS Lambdaが発売され、2016年後半にはAzure Functionsが続きました。
Googleは2018年7月にGoogle Cloud関数をリリースしました。では、サーバーレス技術とは何でしょうか?この質問に最も適切に答えるために、伝統的なサーバーベースのコンピューティングに思いを馳せてみましょう。
伝統的なITモデルでは、基本的にすべてが自己管理です。ビジネスオーナーとしては、サーバーやルーター、スイッチなどのネットワーク機器、およびサーバーを設置するラックなどの予算を立てる必要があります。
また、整備された安全なデータセンターを確保し、十分な冷却や冗長電源、インターネットサービスを提供できることを確認する必要があります。設置が完了すると、オペレーティングシステムをインストールし、後でアプリケーションを展開する必要があります。さらに、監視システムの設定や、ファイアウォール、侵入防止、検出システムなどのセキュリティ機能の実装も必要です。
おそらくお察しの通り、これはリソース集中的でコストがかかり、消耗するものです。
その後、クラウドコンピューティングがテック業界に登場し、サーバーやアプリケーションの展開・管理方法を完全に革新させました。開発者が簡単にクラウドサーバーやデータベースを作成し、アプリケーションの開発に取りかかれる新しい時代をもたらしました。従来のITコンピューティングに伴うダウンタイム、高価な設備、データセンターのレンタルなどの問題は心配する必要がありません。
クラウドコンピューティングは、ITリソースの展開において便利さとスケールの経済性をもたらしましたが、一部の企業はネットワークトラフィックやアクティビティの急増を見越し、アプリケーションを圧倒する可能性があるため、サーバースペースやRAM、CPUなどのリソースを過剰に購入することがあります。
慎重な行動ではありますが、意図しない結果として、サーバーリソースの活用率が低くなり、しばしば無駄になることがあります。自動スケーリングがあっても、予期しない急激な急増はコストがかかる可能性があります。また、ロードバランサーの設定などの他のタスクを行う必要があり、運用コストも増加する可能性があります。
クラウドへのシフトを行っても、依然としてコストが上昇し、リソースの無駄が発生する可能性があるボトルネックが残っていることは明らかです。そして、ここにサーバーレスコンピューティングが登場します。
サーバーレスコンピューティングとは何か。
サーバーレスコンピューティングは、利用者に対してペイアズユーゴーのベースバックエンドサービスを提供するクラウドモデルです。簡単に言えば、クラウドプロバイダーが計算リソースを割り当て、アプリケーションが実行されている時間のみ料金が発生します。これは、ケーブル料金の月額プランから、テレビ番組を視聴しているときだけ支払うように切り替えるのと同じです。
「サーバーレス」という用語は少し誤解を招くかもしれません。サーバーは関係していますか?もちろん、しかし、この場合、サーバーと基盤となるインフラストラクチャーは純粋にクラウドプロバイダーによって処理および管理されます。そのため、心配する必要はありません。開発者として、あなたの焦点は純粋にアプリケーションの開発と、それがあなたの満足に応じて動作していることを確認することです。
そのようにして、サーバーレスコンピューティングはサーバーの管理の頭痛を取り除き、アプリケーションに取り組む貴重な時間を節約します。
サーバーレスコンピューティングによって提供されるバックエンドサービス
A perfect example of serverless backend service is Function-as-a-Service (FaaS) platform. FaaS is a cloud computing model that enables developers to develop, execute, and manage code in response to events without the complexity of building and managing an underlying infrastructure usually associated with the deployment of microservices.
FaaSは、微妙な違いを持つサーバーレスコンピューティングのサブカテゴリーです。サーバーレスコンピューティングには、計算、データベース、ストレージ、APIなど、さまざまなサービスが含まれています。FaaSは、リクエストに応じて、つまり要求に応じてアプリケーションが実行されるイベント駆動型の計算モデルに完全に焦点を当てています。
FaaSコンピューティングモデルの例には次のものがあります:
- AWS Lambda by AWS
- Azure functions by Microsoft
- Cloud Functions by Google
- Cloudflare Workers by Cloudflare
要約すると、FaaSを使用すると、アプリケーションが実行されている時間だけ支払い、クラウドプロバイダーが基盤となるインフラを含めてほぼすべてを処理してくれることがわかりました。サーバーの管理はあなたの心配事の最も少ない部分です。
サーバーレスコンピューティングの利点
今では、サーバーレスコンピューティングが持ち込むいくつかのメリットについて良い考えができました。この技術を取り入れる利点について詳しく見ていきましょう。
1. サーバー管理の不要
これはおそらく、サーバーレスコンピューティングモデルを採用する最大の利点の1つです。『サーバーレス』という用語はサーバーが関与していないと誤解されるかもしれませんが、実際にはアプリケーションはサーバー上で実行されています。問題の核心は、サーバー管理が完全にクラウドベンダーの業務であり、これによりアプリケーションに取り組む時間が増えます。
2. 簡単で効率的なスケーリング
サーバーレスインフラストラクチャは、使用量の急増、需要、またはユーザーベースの成長に応じてアプリケーションの自動スケーリングを提供します。アプリケーションが複数のインスタンスで実行されている場合、サーバーは必要に応じて起動および停止します。従来のクラウドコンピューティングセットアップでは、トラフィックやアクティビティの急増がサーバーリソースを容易に過負荷にし、実行されているアプリケーションに不整合が生じる可能性があります。
3. 組み込みの可用性
開発者として、アプリケーションを高可用性にするために特別なインフラストラクチャを構築する必要はありません。サーバーレスコンピューティングは、アプリケーションが必要なときに稼働していることを確認するために、組み込みの高可用性を提供します。
4. 運用コストの削減
サーバーレスコンピューティングは、利用に応じてリソースを割り当てます。コードが実行されるときにバックエンド機能が必要になり、ワークロードの量に応じて自動的にスケーリングされます。
これにより、アプリケーションが稼働している時間だけ請求されるため、規模の経済が実現されます。従来のサーバーモデルでは、アプリケーションが稼働しているかアイドル状態かに関係なく、サーバースペースやデータベースなどのリソースに対して支払いをする必要があります。
5. アプリケーションの迅速な展開
サーバーレスアーキテクチャは、従来のセットアップのようにバックエンドの構成やコードの手動アップロードの必要性を排除します。開発者は、効率的な方法で小さなスタックのコードをアップロードし、優れた製品を起動できます。
展開の容易さにより、開発者はコードの特定の機能を簡単にパッチ適用および更新でき、全体のアプリケーションを変更せずに済みます。
サーバーレスコンピューティングの落とし穴
サーバーレスモデルには欠点がありますか?それを見ていきましょう。
1. セキュリティ
サーバーレスコンピューティングに関連する最大のリスクの一つは、適切に構成されていないアプリケーションです。例えば、AWSを選択する場合、アプリケーション用に異なる権限を構成することが賢明です。これにより、AWS内の他のサービスとの相互作用が決定されます。権限が曖昧な場合、機能やサービスに必要以上の権限が与えられ、セキュリティ侵害の余地が残ります。
2. ベンダーロックイン
サーバーレスモデルを選択すると、別のベンダーに移行する際に課題が生じる可能性があります。これは、各ベンダーが独自の機能とワークフローを持ち、わずかに異なるためです。
3. アプリケーションのテストとデバッグの難しさ
サーバーレスモデルがもたらすもう一つの課題は、テスト用のサーバーレス環境を再現し、コードのパフォーマンスをライブに行く前に監視する難しさです。これは主に、開発者がクラウドプロバイダーのバックエンドサービスにアクセスできないためです。
4. サーバーレスアプリケーションの監視の難しさ
サーバーレスアプリケーションの監視は、デバッグやテストが困難であるため、複雑な作業です。これは、AWS Lambdaなどのバックエンドサービスとの統合を備えたツールが利用できないことによってさらに複雑になっています。
結論
サーバーレスコンピューティングは、企業や開発者の間で3つの主要な理由で人気を博しています。1つ目は手頃な価格であり、これにより運用コストが削減されます。2つ目に、サーバーレスコンピューティングは自動的かつ迅速なスケーリングを容易にします。そして最後に、開発者はベンダーによって処理される基盤の心配をする必要がありません。
一方で、クラウドプロバイダーは、デバッグやアプリケーションの監視の難しさなど、サーバーレスコンピューティングに関連するいくつかの落とし穴に対処するために、一日中対応しています。