工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial Internet of Things >> クラウドコンピューティング

サーバーレスコンピューティングとは?

インフラストラクチャ管理は、最新のソフトウェア開発ワークフローに複雑さを追加します。サーバーの稼働を維持し、セキュリティ アップデートを処理し、リソースをスケーリングすることは、DevOps チームの貴重な時間を奪います。サーバーレス コンピューティングでは、すべてのインフラストラクチャ操作がサービス プロバイダーによって処理されます。そのため、サーバーレスにより、開発チームはインフラストラクチャ管理に多くの時間を費やすのではなく、コードの記述に集中できます。

この記事では、サーバーレス コンピューティングとは何か、およびサーバーレス コンピューティングをさまざまなクラウド デプロイ モデルと比較する方法について説明します。また、サーバーレスの長所と短所を探り、一般的なユース ケースについても説明します。

サーバーレス コンピューティングとは

サーバーレス コンピューティングは、サーバーのプロビジョニングやインフラストラクチャの管理を行わずに、クラウドにコードをデプロイして実行する方法です。その名前にもかかわらず、サーバーレスは依然としてコード実行をクラウドまたは物理サーバーに依存しています。ただし、開発者は基盤となるインフラストラクチャには関心がありません。これは、必要なコンピューティング リソースを動的に割り当て、ユーザーに代わって管理するサーバーレス プロバイダーに委ねられます。

開発者にとって、これは、サーバーの管理、メンテナンス、リソースのスケーリング、またはキャパシティ プランニングに費やされる時間がゼロであることを意味します。コードをアップロードするだけで、プロバイダーはさまざまなイベントや要求に基づいてサーバー側のロジックを実行できます。おなじみのクラウド課金モデルとは対照的に、サーバーレス サービスは、コードが実行された回数または特定のイベントがトリガーされたときに課金されます。

サーバーレス コンピューティングの仕組み

サーバーレス環境では、コードはイベントによってトリガーされ、関数として実行されます。これが、サーバーレスが「Functions-as-a-Service」または同様の概念である FaaS と関連付けられることが多い理由です。 FaaS は、ユーザーの介入なしにコード実行のためのサーバー側ロジックを処理する、イベント駆動型のクラウド モデルです。これらのイベントは、単純な HTTP リクエスト、API 呼び出しから、データベース クエリやファイルのアップロードまで、あらゆるものです。

関数はステートレス コンテナーで実行されます。つまり、関数を実行するためのコンピューティング リソースは、呼び出されたときにのみプロビジョニングされます。データは RAM に保持されず、ディスクにも書き込まれません。要求が満たされると、アプリの状態がリセットされ、トランザクションのメモリがなくなります。新しいリクエストを作成すると、リソースを最初からプロビジョニングする必要があり、コードは以前の呼び出しを参照せずに実行されます。

このステートレス状態に対応するには、ステートレス コンテナで実行できる関数としてアプリケーションをアーキテクチャ化する必要があります。これは通常、マイクロサービスを通じて実現されます。大規模なモノリス アプリは小さなセグメントに分割され、API を介して相互接続されます。モノリス アプリは引き続き単一の関数として実行できますが、これは一般的な方法ではありません。リクエストごとに新しいコンピューティング コンテナがプロビジョニングされることを考慮すると、大規模な関数は実行速度と実行時間に悪影響を及ぼします。

FaaS 機能は無限に実行されるわけではありません。呼び出されてから一定時間後に終了します。ほとんどの場合、関数は約 5 分後にタイムアウトします。つまり、長時間のタスクを実行するアプリは、終了制限を考慮して再設計する必要があります。

関数を実行するためのコンテナーのプロビジョニングと初期化にも時間がかかります。これは通常、ミリ秒単位で測定されます。ただし、複雑な関数は初期化に数秒かかる場合があり、遅延が大きくなります。

関数の初期化には、ウォーム スタートとコールド スタートの 2 つの一般的な方法があります。警告開始は前のイベントからのリソースを再利用しますが、コールド開始は新しいコンテナーをデプロイします。関数の初期化と実行にかかる時間は、コードの量、プログラミング言語、スクリプトが使用するライブラリの数、およびその他の多くの要因によって異なります。レイテンシに関しては、コールド スタートは関数の開始に時間がかかります。

サーバーレス コンピューティングと BaaS、PaaS、IaaS との比較

あらゆるソフトウェアのトレンドと同様に、サーバーレスとは​​何か、サーバーレスとは​​何かを説明する公式の定義はありません。そのため、サーバーレス コンピューティングは他のクラウド サービスやデプロイ モデルと混同されることがよくあります。サーバーレス コンピューティングの概念は、次の 2 つの類似した領域を中心に展開しています。

サービスとしてのバックエンド — BaaS により、開発者はすべてのバックエンド操作をサービス プロバイダーにオフロードしながら、フロントエンド インターフェイスの作成に専念できます。これらの舞台裏のタスクには通常、すぐに使えるユーザー認証、ストレージ、データベース管理、ホスティング サービスが含まれます。また、開発者はバックエンドを実行しているサーバーを管理する必要がないため、アプリのデプロイを高速化できます。

サービスとしての機能 — このサーバーレス クラウド サービス モデルでは、インフラストラクチャ管理が不要になります。サービス プロバイダーは、コンピューティング リソースをオンデマンドでデプロイして、ユーザーのコードを実行する任務を負っています。これは、イベントまたはリクエストがトリガーされるたびに発生します。サーバーレス関数はステートレス コンテナーで実行されます。つまり、計算リソースは、関数が呼び出されたときにのみデプロイされます。

混乱の主なポイントは、Backend-as-a-Service と Platform-as-a-Service (PaaS) の間です。前者はサーバーレス コンピューティングの手法であり、後者はクラウド デプロイ モデルです。 PaaS はいくつかの基本的な特徴を共有していますが、サーバーレスの要件には対応していません。

サービスとしてのプラットフォーム — PaaS を使用すると、ユーザーは開発ワークロードに必要なハードウェアおよびソフトウェア ソリューションをサービス プロバイダーからサブスクリプション料金でレンタルできます。これにより、開発者はインフラストラクチャの管理を気にすることなく、より多くの時間をコーディングに費やすことができます。一方、BaaS は、すぐに使用できるユーザー認証、管理されたデータベース、電子メール通知などの追加機能を提供します。また、BaaS を使用すると、開発者はさまざまなバックエンド サービスをオンデマンドで統合しながら、フロントエンドの構築だけに集中できます。

サービスとしてのインフラストラクチャ — IaaS は、プロバイダーがユーザーに代わってインフラストラクチャをホストするセルフサービス クラウド ソリューションを指します。ソフトウェアのインストールを含むすべてのサーバーのプロビジョニングおよび管理操作は、ユーザーが処理します。一部の IaaS プロバイダーはサーバーレス ソリューションも提供していますが、明らかに異なる製品です。

一般的なサーバーレス コンピューティングの使用例

前述のとおり、サーバーレスは万人向けではありません。ただし、ニーズがこれらのユース ケースのいくつかと一致している場合は、サーバーレスのメリットが得られる可能性があります。

API の構築

管理するサーバーがないため、高度にスケーラブルで応答性の高い API を構築することは、サーバーレスの最も一般的なユース ケースの 1 つです。サーバーレスの自動スケーリング機能により、トラフィックが多い場合でも API を常に利用できるようになります。これに加えて、API への呼び出しがない場合、ユーザーはアイドル状態のリソースに対して課金されません。

ウェブサイトとアプリケーション

サーバーレス プラットフォームに Web サイトや Web ベースのアプリをデプロイする場合、インフラストラクチャを事前にセットアップする必要はありません。これにより、完全に機能する Web アプリの起動にかかる時間が大幅に短縮されます。自動スケーリング機能もここで重要な役割を果たします。ユーザーは、需要の増加に対応するためにより多くのサーバーをプロビジョニングすることを心配する必要がないからです。その結果、100% のアップタイムを維持することがはるかに簡単になります。

多言語アプリケーション

サーバーレスでは、1 つのアプリをさまざまな言語で記述できます。サーバーレスを使用すると、開発者はモノリス アプリを小さなパーツに分割し、それらをマイクロサービスとして実行できます。これらのマイクロサービスは、API を介して相互に通信します。アプリの各セグメントは、異なるプログラミング言語を使用して記述できます。

CI/CD パイプライン

自動化は、開発、テスト、統合パイプラインを成功させるための鍵です。サーバーレスにより、開発者は自動的にコードをテストし、バグをより迅速に修正できます。サーバーレスはイベントベースであるため、ユーザーはイベントを設定して手動の介入なしで自動テストをトリガーできます。

サーバーレス コンピューティングの利点は何ですか?

従来のサーバー指向のクラウド コンピューティングと比較して、サーバーレス コンピューティングはインフラストラクチャの運用を抽象化します。すべてがすぐに使用できるため、より迅速なコード リリースと自動化されたスケーラビリティが低価格で保証されます。

これらは、サーバーレスの最も一般的な 3 つの利点です。

自動スケーリング

サーバーレス プロバイダーは、需要に基づいてインフラストラクチャ リソースをスケーリングします。スケーリング操作は、開発者の介入なしに動的かつ自動的に実行されます。

市場投入までの時間の短縮

複雑なサーバー クラスターをプロビジョニングする必要がないため、開発者はリリース速度の向上に集中できます。これにより、コードを本番環境にリリースしたり、段階的なコード変更を実装したりするのにかかる時間が短縮され、顧客へのアプリの配信が高速化されます。

最適化されたコスト

すべてがオンデマンドでプロビジョニングされるため、組織は未使用のストレージ スペース、コンピューティング時間、またはネットワークに料金を支払う必要はありません。通常、サーバーレス サービスの消費はミリ秒単位で測定され、それに応じて請求されます。

サーバーレス コンピューティングの欠点は何ですか?

他のソフトウェア ソリューションと同様に、サーバーレスにもいくつかの欠点があります。ただし、構築しているアプリによっては、サーバーレスのこれらの欠点のいくつかについてあまり気にしない場合があります。

待ち時間

関数を実行すると、サーバーレス プロバイダーは呼び出しごとに必要なリソースを自動的にデプロイします。ワークロードのサイズにもよりますが、通常、コンテナーはミリ秒単位でプロビジョニングされますが、数秒かかることもあります。以前の実行からのインスタンスを再利用する「警告開始」により、待ち時間を短縮できます。

実行時間

サーバーレス関数の実行時間は制限されており、一定期間後に中止されます。これは通常、呼び出し後約 5 分ですが、プロバイダーによって異なります。実行制限は、長時間のプロセスを開始するアプリにとって大きな欠点です。この問題は、コードを小さなチャンクに分割し、マイクロサービスとして実行することで軽減できます。

ベンダー ロックイン

プロバイダーは通常、独自のテクノロジーを使用してサーバーレス サービスを有効にします。これにより、ワークロードを別のプラットフォームに移行したいユーザーに問題が発生する可能性があります。別のプロバイダーに移行する場合、コードとアプリのアーキテクチャの変更は避けられません。

セキュリティ

ユーザーは、コードを実行するインスタンス構成をほとんど制御できません。これはユーザーから隠され、サービス プロバイダーの領域に分類されます。そのため、セキュリティ オペレーションもプロバイダーの手に委ねられます。攻撃が発生した場合、ユーザーは無力であり、プロバイダーだけに頼って被害を軽減し、システムを回復します。サーバーレス環境で複数のエントリ ポイントを持つアプリケーションは、攻撃面が増えるため、脆弱性に陥りやすくなります。

サーバーレス コンピューティングの未来は?

サーバーレス コンピューティングは、まだ比較的新しいテクノロジです。その将来は、サービス プロバイダーが上記の欠点のいくつかを解決できるかどうかにかかっています。最も重要なのは、コールド スタートです。プロバイダーは、しばらくアイドル状態になった後、関数の実行にかかる時間を短縮する必要があります。この問題を解決すると、待ち時間が短縮され、シームレスなユーザー エクスペリエンスが保証されます。

サーバーレスは現在、関数の実行をステートレス コンテナーに依存しています。サーバーレスの未来は、ステートフル アプリがサーバーレスの利点を活用できるようになる方向に進んでいます。これにより、開発者はバックエンドのデータ管理を気にせずにステートフル アプリを構築できます。

DevOps に関して言えば、サーバーレスは NoOps の拡大につながります。この傾向は、サーバーレス プロバイダーが顧客に代わってすべてのインフラストラクチャ操作を処理することにつながります。このような状況では、企業が社内の運用チームを持つ必要はありません。

今後数年間で、Kubernetes はサーバーレスの基盤になると予想されています。ネットワーキング、アジャイルな自動スケーリング、マルチクラウド デプロイのサポートにより、 Kubernetes ポータビリティ は複数の方法でサーバーレス コンピューティングを強化します。サーバーレスで特定のクラスのアプリを実行することは、サービス プロバイダーが動作を制限する場合があるため、現実的ではありません。 Kubernetes を使用すると、開発者はこれらの制限を克服し、特定のニーズに基づいてサーバーレス プラットフォームを構築できます。

結論

サーバーレス コンピューティングという名前はサーバーが存在しないことを示唆していますが、サーバーレス コンピューティングは依然としてクラウドまたは物理サーバーに依存しています。これは、インフラストラクチャの運用を排除するコンピューティング モデルであり、開発者はアプリの作成と展開に専念できます。サーバーレス モデルは、Backend-as-a-Service と Functions-as-a-Service という 2 つの主要分野を中心に展開しています。

前者はすぐに使用できるバックエンド アーキテクチャをユーザーに提供し、後者はステートレス コンテナーでアプリを実行できるようにします。これらのコンテナーは、イベントまたはトリガーに基づいて自動的にプロビジョニングされます。そのため、サーバーレスは、現在のすべての開発問題に対する特効薬のソリューションではありません。主に、マイクロサービス ベースのアーキテクチャを採用する非モノリシック アプリを対象としています。


クラウドコンピューティング

  1. サーバーレスコンピューティング—最新の「サービスとして」の提供
  2. 最高のクラウドコンピューティングコースは何ですか?
  3. クラウドコンピューティングとは何ですか、そしてクラウドはどのように機能しますか?
  4. ビッグデータとクラウドコンピューティングの関係は何ですか?
  5. サーバーレスの採用を拡大する上での最大の障害
  6. クラウドコンピューティングとオンプレミス
  7. コーディングとは:作業、言語、およびその課題
  8. A2スチールとは何ですか?
  9. エッジコンピューティングとは何ですか?なぜそれが重要なのですか?
  10. 量子コンピューティングとは何ですか?
  11. 油圧ポンプの HS コードとは?