Front-end engineers naturally complement Serverless
クラウドネイティブなモダン Web アプリケーションの構築方法
静的 Web サイトの公開方法を振り返ってみましょう。
クラウドネイティブ時代以前、静的 Web サイトを公開するには、サーバーを用意して NGINX をインストールし、静的ファイルをアップロードして、一連の設定を経て Web サイトのリリースを完了させる必要がありました。これらの作業を完了させると、半日かかってしまったものです。実際、運用保守に費やした時間は、ユーザーにとっての価値創造にはつながっていませんでした。しかも、これは始まりに過ぎません。ビジネスの発展に伴い、安定性、柔軟性、セキュリティ、コストの問題を一つずつ解決していく必要があり、運用保守にさらに多くの時間と労力を費やすことになります。そうしなければ、この Web サイトは単なる試作品同然かもしれません。
しかし、クラウドネイティブ時代の到来により、静的 Web サイトの公開ははるかに簡単になりました。クラウド製品を活用することで、簡単に Web サイトをホスティングできます。たとえば、Alibaba Cloud Object Storage Service (OSS) のツールを使って静的リソースをアップロードし、ワンクリックでホスティングを有効化できます。さらに、ユーザーがより速くページを開けるようにするには、Alibaba Cloud CDN を通じて OSS をオリジンサーバーとして設定し、静的リソースをユーザーの近くに配置することで、アクセス体験を向上させることができます。これら 2 つの製品は、従量課金でメンテナンス不要のサーバーレス製品であり、複雑な運用保守コストを大幅に削減できます。研究開発とユーザー体験の向上により多くの時間を費やし、ユーザーにより多くの価値を創造できます。
しかし、ビジネスの発展に伴い、Web サイトが静的 Web サイトだけではなくなった場合はどうすればよいでしょうか。
・外部サービス向け API(キャッシュ、データベース、メッセージキュー、ファイルストレージなどとの連携が必要)
・タスクの定期実行、大規模タスクにも対応
・メール / SMS / インスタントメッセージ(DingTalk、WeChat、Feishu)の送信、スマート音声通話
・ユーザーがアップロードした画像、音声、動画の処理(トランスコーディング、サムネイル生成、コンテンツモデレーション、ウォーターマーク付与、GPU 推論)
・SSR ページのサーバーサイドレンダリング
・迅速な反復開発
こうした要件に直面したとき、サーバーを用意しなければならないのでしょうか。サービスの安定性、柔軟性、セキュリティ、コスト効率を保証するために、大量の時間を運用保守に費やさなければならないのでしょうか。OSS や CDN が静的 Web サイトの運用保守問題を解決したように、これらのバックエンド要件を解決できるクラウド製品はあるのでしょうか。
こうした課題に対して、Alibaba Cloud のサーバーレス製品である Function Compute FC は優れた選択肢です。関数コンピューティング FC では、API リクエストや大規模タスクの処理に加えて、ApsaraDB RDS、Simple Log Service (SLS)、Tablestore、Apsara File Storage NAS といった豊富なクラウドサービスや、その他のサードパーティサービスにも接続でき、ストレージ、コンピューティング、ネットワーク、セキュリティ、ビッグデータ、人工知能などのビジネス要件を満たすことができます。
各種サーバーレスクラウド製品は、フロントエンドエンジニアにとっての「武器庫」のような存在です。これらのクラウド製品を活用して、ユーザーに高品質なサービスを提供できます。
関数コンピューティング FC の主な利点と関連する原理の紹介
高い弾力性でトラフィックの急増にも柔軟に対応
関数コンピューティング FC は、リクエスト量に基づいてミリ秒単位で自動的にエラスティックスケーリングを実行し、コンピューティングリソースを迅速にスケジュールします。これにより、大量の API リクエストや大規模な同時実行タスクにも簡単に対応できます。
関数コンピューティングを使用する際、関数に「同時実行数」を設定できます。これは、1 つの関数インスタンスが同時に処理できる最大リクエスト数を表します。関数インスタンスは本質的に Linux セキュリティコンテナであり、関数が外部にサービスを提供する最小単位です。
たとえば、「同時実行数」を 20 に設定した場合、関数コンピューティングプラットフォームが 100 件のリクエストを同時に受信すると、5 つの関数インスタンスを起動してこれらのリクエストを処理します。リクエストの処理が完了した後、関数インスタンスは凍結されます。その後 2〜5 分間新しいリクエストがない場合(凍結後はインスタンスに課金されません)、関数インスタンスは自動的に破棄されます。一部のシナリオでは、ビジネスが遅延に非常に敏感な場合や、ビジネスコードの起動が遅い場合、エラスティックルールを設定して関数インスタンスの最小数を設定することで、関数コンピューティング FC が事前に関数インスタンスを起動し、ユーザー体験を保証できます。また、関数インスタンスの最大数を設定して、下流サービスを保護し、コストをコントロールすることも可能です。
従来のサーバーモードでは、サーバー自体のスケールアウト・スケールインを手動で行う必要がありましたが、関数コンピューティング FC の自動弾性スケーリングにより、複雑なスケーリング操作を削減できるだけでなく、従来のサーバーモードでのスケーリング遅延によるサービス停止を回避し、システムの安定性を向上させることができます。
コスト削減とリソース使用効率の向上
関数コンピューティング FC では、CPU、メモリ、GPU などのインスタンス仕様を細かく選択できます。最小で 0.05 コア、128 MB の関数を作成でき、段階的な仕様選択が提供されています。基本的に、アプリケーションに必要な仕様を自由に設定できます。
関数コンピューティング FC の課金はミリ秒単位です。たとえば、コードのビジネスロジックの実行時間が 5 ミリ秒の場合、その 5 ミリ秒分のみを支払えばよいのです。また、トラフィックがないときは、関数コンピューティング FC は関数インスタンスを 0 にスケールダウンします。これは、まだトラフィックが伸びていない新しいビジネスや、そもそも呼び出しが少ない中長期的なビジネスにとって非常に有利です。これらのために固定のサーバーコストを支払う必要がありません。
仕様を自由に設定でき、ミリ秒単位の課金、そして 0 までのスケーリングにより、リソース使用効率を大幅に向上させ、コストを大幅に削減できます。
運用保守不要で、より安全
従来のサーバーアーキテクチャでは、アプリケーションを実行している物理マシンのリソース使用状況を常に気にする必要があります。関数コンピューティング FC では、基盤となる物理マシンのリソース使用状況を気にする必要はありません。関数コンピューティング FC プラットフォームが自動的にリソースのスケジューリングと運用保守を行います。ただし、ビジネスコードが過度にリソースを消費する場合、たとえば OOM が発生した場合は、関数インスタンスが自動的に再起動され、リクエストが失敗します。この場合、モニタリング指標とログを確認してコード内の問題を特定するか、関数の仕様を変更して関数インスタンスにより多くのリソースを割り当てる必要があります。
関数コンピューティング FC では、関数用のデフォルト HTTP/HTTPS ドメイン名が提供されており、関数に簡単にアクセスできます。また、独自のドメイン名を関数にバインドすることもサポートされています。そのため、従来のサーバーアーキテクチャと比べて、関数コンピューティングを使用する場合、アプリケーションサーバーやロードバランサーの運用保守および購入コストを削減できます。
セキュリティの観点から見ると、従来のサーバーは常時稼働している必要があるため、セキュリティ設定が不適切だったり、コードの脆弱性が適時に修復されなかったりすると問題が生じます。関数コンピューティング FC はインスタンスを常時起動しているわけではなく、IP をパブリックネットワークに直接公開しないため、スキャンによる攻撃を受ける問題を回避できます。
さらに、オペレーティングシステムのセキュリティ脆弱性について気にする必要はありません。セキュリティ脆弱性が検出された場合、関数コンピューティング FC が即座に修復を完了します。
他のサービスにアクセスする際、関数コンピューティング FC は設定に基づいて自動的に一時キーを生成します。この一時キーの有効期間は 36 時間であり、重要なアクセスキーをコードや設定ファイルにハードコードする必要がなくなり、キー漏洩によるリスクを軽減できます。
ビジネスの継続的な発展に伴い、Alibaba Cloud の Web Application Firewall (WAF) 製品を追加導入して、関数のセキュリティを保護することも可能です。
ゼロ移行で高い研究開発効率
関数コンピューティングは、「ビルトインランタイム」「カスタムランタイム」「コンテナイメージ」の 3 種類の関数作成をサポートしています。また、API、SDK、コンソール、Serverless Devs ツールを提供し、アプリケーションの開発、構築、デプロイ、可観測性の実現を支援します。
「ビルトインランタイム」を使用する場合、関数コンピューティング FC が定義するインターフェース仕様に従って、リクエストを処理するコードを記述する必要があります。たとえば、以下は Node.js の API の例です。わずか数行のコードで関数を作成した後、すぐにこの API を Web サイトで利用できます。
「カスタムランタイム」を使用すると、SpringBoot、Flask、Express、NextJS、NestJS、Gin などの Web フレームワークで開発したアプリケーションを、コードを修正せずに関数コンピューティング上で実行できます。関数コンピューティングでアプリケーションのリッスン用「ポート番号」と「開始コマンド」を設定するだけでよく、従来のサーバーを使ったデプロイ方法とよく似ています。下図のコードは、Express フレームワークに馴染みのある開発者には見覚えのあるものでしょう。
「コンテナイメージ」を使用すると、アプリケーション実行環境を完全にカスタマイズでき、関数コンピューティングの実行環境での Linux バージョンや GCC バージョンの更新、各種依存関係やフォントのインストールなどの問題を学ぶ必要がありません。さらに、コンテナイメージは優れた移植性を持つため、クラウドベンダーによるロックインを心配する必要はありません。同じコンテナをクラウドやオンプレミスのサーバー、またはクラウドやオンプレミスの Kubernetes クラスターで実行できます。さらには、サーバー、Kubernetes クラスター、関数コンピューティングで同時にイメージをデプロイし、複数の異なる製品を通じてディザスタリカバリを実現することも可能です。
まとめ
関数コンピューティング FC およびその他のサーバーレスクラウド製品を通じて、サーバーなどのインフラストラクチャを管理する必要がなくなりました。サーバーレスクラウド製品がリソースを準備し、アプリケーションを弾力的かつ安全確実に実行し、データを保存し、さらなる付加価値を提供してくれます。
サーバーレスの運用保守不要という特性は、フロントエンドエンジニアの特性と自然に補完し合います。フロントエンドエンジニアはビジネスコードを記述するだけで、クラウドベースのモダン Web アプリケーションを迅速に構築できます。フロントエンドエンジニアがユーザーに価値を創造するためにより多くの時間を集中させましょう。
静的 Web サイトの公開方法を振り返ってみましょう。
クラウドネイティブ時代以前、静的 Web サイトを公開するには、サーバーを用意して NGINX をインストールし、静的ファイルをアップロードして、一連の設定を経て Web サイトのリリースを完了させる必要がありました。これらの作業を完了させると、半日かかってしまったものです。実際、運用保守に費やした時間は、ユーザーにとっての価値創造にはつながっていませんでした。しかも、これは始まりに過ぎません。ビジネスの発展に伴い、安定性、柔軟性、セキュリティ、コストの問題を一つずつ解決していく必要があり、運用保守にさらに多くの時間と労力を費やすことになります。そうしなければ、この Web サイトは単なる試作品同然かもしれません。
しかし、クラウドネイティブ時代の到来により、静的 Web サイトの公開ははるかに簡単になりました。クラウド製品を活用することで、簡単に Web サイトをホスティングできます。たとえば、Alibaba Cloud Object Storage Service (OSS) のツールを使って静的リソースをアップロードし、ワンクリックでホスティングを有効化できます。さらに、ユーザーがより速くページを開けるようにするには、Alibaba Cloud CDN を通じて OSS をオリジンサーバーとして設定し、静的リソースをユーザーの近くに配置することで、アクセス体験を向上させることができます。これら 2 つの製品は、従量課金でメンテナンス不要のサーバーレス製品であり、複雑な運用保守コストを大幅に削減できます。研究開発とユーザー体験の向上により多くの時間を費やし、ユーザーにより多くの価値を創造できます。
しかし、ビジネスの発展に伴い、Web サイトが静的 Web サイトだけではなくなった場合はどうすればよいでしょうか。
・外部サービス向け API(キャッシュ、データベース、メッセージキュー、ファイルストレージなどとの連携が必要)
・タスクの定期実行、大規模タスクにも対応
・メール / SMS / インスタントメッセージ(DingTalk、WeChat、Feishu)の送信、スマート音声通話
・ユーザーがアップロードした画像、音声、動画の処理(トランスコーディング、サムネイル生成、コンテンツモデレーション、ウォーターマーク付与、GPU 推論)
・SSR ページのサーバーサイドレンダリング
・迅速な反復開発
こうした要件に直面したとき、サーバーを用意しなければならないのでしょうか。サービスの安定性、柔軟性、セキュリティ、コスト効率を保証するために、大量の時間を運用保守に費やさなければならないのでしょうか。OSS や CDN が静的 Web サイトの運用保守問題を解決したように、これらのバックエンド要件を解決できるクラウド製品はあるのでしょうか。
こうした課題に対して、Alibaba Cloud のサーバーレス製品である Function Compute FC は優れた選択肢です。関数コンピューティング FC では、API リクエストや大規模タスクの処理に加えて、ApsaraDB RDS、Simple Log Service (SLS)、Tablestore、Apsara File Storage NAS といった豊富なクラウドサービスや、その他のサードパーティサービスにも接続でき、ストレージ、コンピューティング、ネットワーク、セキュリティ、ビッグデータ、人工知能などのビジネス要件を満たすことができます。
各種サーバーレスクラウド製品は、フロントエンドエンジニアにとっての「武器庫」のような存在です。これらのクラウド製品を活用して、ユーザーに高品質なサービスを提供できます。
関数コンピューティング FC の主な利点と関連する原理の紹介
高い弾力性でトラフィックの急増にも柔軟に対応
関数コンピューティング FC は、リクエスト量に基づいてミリ秒単位で自動的にエラスティックスケーリングを実行し、コンピューティングリソースを迅速にスケジュールします。これにより、大量の API リクエストや大規模な同時実行タスクにも簡単に対応できます。
関数コンピューティングを使用する際、関数に「同時実行数」を設定できます。これは、1 つの関数インスタンスが同時に処理できる最大リクエスト数を表します。関数インスタンスは本質的に Linux セキュリティコンテナであり、関数が外部にサービスを提供する最小単位です。
たとえば、「同時実行数」を 20 に設定した場合、関数コンピューティングプラットフォームが 100 件のリクエストを同時に受信すると、5 つの関数インスタンスを起動してこれらのリクエストを処理します。リクエストの処理が完了した後、関数インスタンスは凍結されます。その後 2〜5 分間新しいリクエストがない場合(凍結後はインスタンスに課金されません)、関数インスタンスは自動的に破棄されます。一部のシナリオでは、ビジネスが遅延に非常に敏感な場合や、ビジネスコードの起動が遅い場合、エラスティックルールを設定して関数インスタンスの最小数を設定することで、関数コンピューティング FC が事前に関数インスタンスを起動し、ユーザー体験を保証できます。また、関数インスタンスの最大数を設定して、下流サービスを保護し、コストをコントロールすることも可能です。
従来のサーバーモードでは、サーバー自体のスケールアウト・スケールインを手動で行う必要がありましたが、関数コンピューティング FC の自動弾性スケーリングにより、複雑なスケーリング操作を削減できるだけでなく、従来のサーバーモードでのスケーリング遅延によるサービス停止を回避し、システムの安定性を向上させることができます。
コスト削減とリソース使用効率の向上
関数コンピューティング FC では、CPU、メモリ、GPU などのインスタンス仕様を細かく選択できます。最小で 0.05 コア、128 MB の関数を作成でき、段階的な仕様選択が提供されています。基本的に、アプリケーションに必要な仕様を自由に設定できます。
関数コンピューティング FC の課金はミリ秒単位です。たとえば、コードのビジネスロジックの実行時間が 5 ミリ秒の場合、その 5 ミリ秒分のみを支払えばよいのです。また、トラフィックがないときは、関数コンピューティング FC は関数インスタンスを 0 にスケールダウンします。これは、まだトラフィックが伸びていない新しいビジネスや、そもそも呼び出しが少ない中長期的なビジネスにとって非常に有利です。これらのために固定のサーバーコストを支払う必要がありません。
仕様を自由に設定でき、ミリ秒単位の課金、そして 0 までのスケーリングにより、リソース使用効率を大幅に向上させ、コストを大幅に削減できます。
運用保守不要で、より安全
従来のサーバーアーキテクチャでは、アプリケーションを実行している物理マシンのリソース使用状況を常に気にする必要があります。関数コンピューティング FC では、基盤となる物理マシンのリソース使用状況を気にする必要はありません。関数コンピューティング FC プラットフォームが自動的にリソースのスケジューリングと運用保守を行います。ただし、ビジネスコードが過度にリソースを消費する場合、たとえば OOM が発生した場合は、関数インスタンスが自動的に再起動され、リクエストが失敗します。この場合、モニタリング指標とログを確認してコード内の問題を特定するか、関数の仕様を変更して関数インスタンスにより多くのリソースを割り当てる必要があります。
関数コンピューティング FC では、関数用のデフォルト HTTP/HTTPS ドメイン名が提供されており、関数に簡単にアクセスできます。また、独自のドメイン名を関数にバインドすることもサポートされています。そのため、従来のサーバーアーキテクチャと比べて、関数コンピューティングを使用する場合、アプリケーションサーバーやロードバランサーの運用保守および購入コストを削減できます。
セキュリティの観点から見ると、従来のサーバーは常時稼働している必要があるため、セキュリティ設定が不適切だったり、コードの脆弱性が適時に修復されなかったりすると問題が生じます。関数コンピューティング FC はインスタンスを常時起動しているわけではなく、IP をパブリックネットワークに直接公開しないため、スキャンによる攻撃を受ける問題を回避できます。
さらに、オペレーティングシステムのセキュリティ脆弱性について気にする必要はありません。セキュリティ脆弱性が検出された場合、関数コンピューティング FC が即座に修復を完了します。
他のサービスにアクセスする際、関数コンピューティング FC は設定に基づいて自動的に一時キーを生成します。この一時キーの有効期間は 36 時間であり、重要なアクセスキーをコードや設定ファイルにハードコードする必要がなくなり、キー漏洩によるリスクを軽減できます。
ビジネスの継続的な発展に伴い、Alibaba Cloud の Web Application Firewall (WAF) 製品を追加導入して、関数のセキュリティを保護することも可能です。
ゼロ移行で高い研究開発効率
関数コンピューティングは、「ビルトインランタイム」「カスタムランタイム」「コンテナイメージ」の 3 種類の関数作成をサポートしています。また、API、SDK、コンソール、Serverless Devs ツールを提供し、アプリケーションの開発、構築、デプロイ、可観測性の実現を支援します。
「ビルトインランタイム」を使用する場合、関数コンピューティング FC が定義するインターフェース仕様に従って、リクエストを処理するコードを記述する必要があります。たとえば、以下は Node.js の API の例です。わずか数行のコードで関数を作成した後、すぐにこの API を Web サイトで利用できます。
「カスタムランタイム」を使用すると、SpringBoot、Flask、Express、NextJS、NestJS、Gin などの Web フレームワークで開発したアプリケーションを、コードを修正せずに関数コンピューティング上で実行できます。関数コンピューティングでアプリケーションのリッスン用「ポート番号」と「開始コマンド」を設定するだけでよく、従来のサーバーを使ったデプロイ方法とよく似ています。下図のコードは、Express フレームワークに馴染みのある開発者には見覚えのあるものでしょう。
「コンテナイメージ」を使用すると、アプリケーション実行環境を完全にカスタマイズでき、関数コンピューティングの実行環境での Linux バージョンや GCC バージョンの更新、各種依存関係やフォントのインストールなどの問題を学ぶ必要がありません。さらに、コンテナイメージは優れた移植性を持つため、クラウドベンダーによるロックインを心配する必要はありません。同じコンテナをクラウドやオンプレミスのサーバー、またはクラウドやオンプレミスの Kubernetes クラスターで実行できます。さらには、サーバー、Kubernetes クラスター、関数コンピューティングで同時にイメージをデプロイし、複数の異なる製品を通じてディザスタリカバリを実現することも可能です。
まとめ
関数コンピューティング FC およびその他のサーバーレスクラウド製品を通じて、サーバーなどのインフラストラクチャを管理する必要がなくなりました。サーバーレスクラウド製品がリソースを準備し、アプリケーションを弾力的かつ安全確実に実行し、データを保存し、さらなる付加価値を提供してくれます。
サーバーレスの運用保守不要という特性は、フロントエンドエンジニアの特性と自然に補完し合います。フロントエンドエンジニアはビジネスコードを記述するだけで、クラウドベースのモダン Web アプリケーションを迅速に構築できます。フロントエンドエンジニアがユーザーに価値を創造するためにより多くの時間を集中させましょう。
Related Articles
-
A detailed explanation of Hadoop core architecture HDFS
Knowledge Base Team
-
What Does IOT Mean
Knowledge Base Team
-
6 Optional Technologies for Data Storage
Knowledge Base Team
-
What Is Blockchain Technology
Knowledge Base Team
Explore More Special Offers
-
Short Message Service(SMS) & Mail Service
50,000 email package starts as low as USD 1.99, 120 short messages start at only USD 1.00
