Serverless Exploration of TapTap Algorithm Platform
Serverless は、TapTap のアプリケーション構築において、運用保守と開発の人的リソースを大幅に節約し、インフラやリソース管理のレベルを、インフラ専門の人材を投入することなく、業界の最先端水準に引き上げました。最も分かりやすいデータとして、わずか 1 桁の人員で、TapTap に関連する全ビジネスに対する AI およびビッグデータの包括的なサポートを提供できています。
心動 (Xinxin) は 2003 年に設立されたグローバルゲーム開発・パブリッシャーで、研究開発、ディストリビューション、エージェント運営において豊富な経験を有しています。2022 年半ばまでに、心動は 38 本の無料および有料ゲームを運営し、全世界で 5,000 万のアクティブユーザーを有しており、主に中国大陸部、東南アジア、北米、南米で展開しています。2016 年、心動はモバイルゲームコミュニティおよびアプリストアである TapTap をリリースしました。プレイヤーは公式チャンネルを通じてモバイルゲームを無料で、または有料で購入・ダウンロードでき、コミュニティで他のプレイヤーと交流することもできます。2022 年 6 月時点で、TapTap は全世界で 5,000 万以上のアクティブユーザーを有しています。
ビジネス背景
TapTap は従来のアプリストアの収益分配モデルとは異なり、チャネル分配ゼロを貫いてきました。そのため、現在の TapTap の商業化は主に広告によって推進されています。TapTap の広告はサイト上のオーガニック広告であり、他の非商業広告と内容的に高い一貫性を保ち、ユーザーに優れた体験を提供しています。たとえば、ホームページのゲーム推薦、発見ページのコンテンツレコメンデーション、検索ガイドページのシェーディングワード、検索入力時に表示される検索サジェストワード、検索結果末尾のランディングページなどがあります。広告はこれらの戦略的コンテンツの間に配置されています。
TapTap の Serverless 実践も、これらのビジネスシナリオの実際的なニーズに基づいています。たとえば、各チームが現在利用している深層学習モデルの自動更新・デプロイ、グループ内のメンバーが必要とするモデル実験記録プラットフォーム、およびサイト内新規コンテンツの NLP 処理と解析などがあります。
初期段階では、TapTap のバックエンドサービスの大部分は仮想マシン (ECS) 上にデプロイされ、Rundeck を通じて管理・デプロイされていましたが、効率性と管理性の面で理想的ではありませんでした。インフラ基盤の刷新要件について、以下の 4 つのポイントをまとめました:
1. 開発および運用保守の効率を大幅に向上できること
2. 少ない人的リソースでビジネスニーズを満たせること
3. サービスが十分な信頼性と優れたパフォーマンスを備えていること
4. TapTap プロジェクトは現在主に Go 言語ベースであるため、後続のインフラ基盤刷新においても Go 言語の適切なサポートが必須であること
スキーマ比較
2 つの主流ソリューションアーキテクチャを検討しました。1 つは仮想マシン + K8s によるフルソリューション、もう 1 つは Serverless App Engine (SAE) と Function Compute (FC) を活用したサーバーレスアーキテクチャです。
比較検討の結果、後者を選択しました。一方で、Serverless はマシンの調達手続きを排除でき、ECS を事前に購入する必要がありません。さらに、オプションのデフォルト環境も備わっており、特別な要件がなければ環境構築の複雑さを基本的に排除できます。もう一方で、Serverless には多くの基本コンポーネントが統合されており、実質的に運用保守なしで本番稼働できるレベルと言えます。
後続の保守面では、Serverless は ECS よりも課金精度が高く、分レベルや秒レベルでの課金を実現できます。実際のビジネスでリソースを使用する際にのみ課金されるため、K8s + ECS モデルと比較して、開発初期および後続の運用保守における人的コストを大幅に削減できます。
TapTap の実際の実験経験から、Serverless の 2 つの製品について理解を深めることができます。
Function Compute (FC) は、ビジネスのスケジューリングおよびトリガーロジックをビジネスロジック自体から切り離します。開発やアルゴリズムの担当者は、Function Compute のコンソール上でビジネスロジック全体のトリガーおよびスケジューリングロジックを制御できるため、追加の開発が不要になり、ビジネスロジック自体の設計により集中できます。この特性により、Function Compute はイベント駆動型のシナリオにより適しており、イベントが実際に発生した時点でリソースを割り当ててビジネスロジックを実行します。
Serverless App Engine (SAE) は、より多くの機能と包括的なマイクロサービスを備えた強化版 K8s のようなものであり、保守コストを大幅に削減し、すぐに使える状態を実現できます。これはマイクロサービス化の推進により適しており、ECS 上の既存サービスを直接移行するだけで、運用担当者を追加することなく、コンテナ化された運用保守ソリューション一式を導入できます。
基本的に、この 2 つの製品の組み合わせにより、TapTap のビジネスシナリオのほとんどをカバーでき、全アプリケーションの All On Serverless を実現できます。
ビジネス実践
Function Compute (FC)
1) OSS をトリガーとする全自動モデルデプロイ / 毎時更新サービス
TapTap には、OSS をトリガーとするモデルの自動デプロイ・更新サービスがあり、モデルのエクスポートとデプロイを実行します。アルゴリズム担当者は、TensorFlow、PyTorch、またはその他の機械学習モデルのトレーニングを完了した後、指定された OSS バケットにエクスポートするだけで、モデルの更新・デプロイサービスがトリガーされ、完全なエクスポートとデプロイが自動的に実行されます。これにより、アルゴリズム担当者は他のエンジニアのリソースに依存することなく、柔軟にモデルのデプロイ、更新、スケーリングを行えます。
2) HTTP トリガー (Web サービス) によるモデル実験管理プラットフォーム
アルゴリズム担当者は、HTTP トリガーで実装された社内モデル実験管理・パラメータープラットフォームを通じてモデルトレーニングタスクを送信すると、トレーニングパラメーター、ログ保存先、ログインスタンスが自動的に記録され、すべての実験を追跡・管理できます。これは Web サービスであり、フロントエンドを備えていますが、内部サービスでもあります。高い QPS やパフォーマンスは要求されないため、Function Compute 上に配置しました。管理コストの面でかなりの優位性があります。特に最近、Function Compute に無料クォータがあるため、実質的に無料で利用できています。
3) Kafka をトリガーとする新規コンテンツの NLP 処理・解析サービス
TapTap サイト内のユーザーが新しい投稿を送信すると、そのコンテンツを Kafka を通じて NLP 解析サービスプロバイダーにプッシュし、NLP 処理と解析を行った後、後の検索用に保存します。これにより、ユーザーが 1 回コンテンツを送信するごとにサービスが 1 回呼び出され、コストを正確に制御できます。
4) 毎週 / 毎日の定期的なリソース消費統計
毎週 / 毎日定期的にトリガーされる MaxCompute および EAS のリソース消費統計では、TapTap は Alibaba Cloud のバックグラウンドから非構造化の消費明細データを自動的に取得し、各担当者、タスク、モデルごとに集計して、グループ内のメンバーにプッシュします。これにより、各メンバーのコスト意識を高め、各ビジネスラインがコストをより適切に管理できるよう支援しています。
Serverless App Engine (SAE)
SAE の導入において、社内予測サービスを選択しました。このサービス自体は、検索、レコメンデーション、広告に必要なモデル推論、機能開発、サンプル取得の機能を統合した中間層マイクロサービスであり、すべてのビジネスラインが非常に低いコストで、現在グループ内で最も成熟したオンライン予測サービスにアクセスできます。たとえば、検索ページの推薦ワードのクリック率や、国際版ゲームのクリック率の推定などに活用しています。
SAE を通じて、TapTap のサービスは迅速に Serverless 機能を獲得しました。SAE 自体がリソース管理、環境構築、基本的な運用保守コンポーネントの管理を吸収しているため、TapTap は国内外の新シナリオや新ビジネス向けに、独立した予測サービスを迅速に立ち上げることができます。
同時に、TapTap は SAE のアラートプラットフォーム、イベントセンター、Log Service も統合しています。TapTap はピンニングアラームを通じてオンラインビジネスの状態をリアルタイムで把握でき、OOM や再起動の発生、エラーログなどを検知できます。
さらに、このサービス自体は Dubbo Go フレームワークにも接続されており、サービス登録検出、IP アドレス直接接続、グレースフルなオンライン・オフラインなどのマイクロサービス機能を直接備えています。従来の ECS 使用モードと比較して、このスキームは運用管理、開発、デプロイ、および後続のコスト管理の面で大きな優位性を持ち、開発からデプロイ、後続の運用保守までの全プロセスを基本的にカバーでき、グループ内の開発コストを大幅に節約します。
ビジネス価値
運用保守の簡素化:開発者はアプリケーションの開発、デプロイ、管理の全プロセスを容易に完了でき、ビジネスにより集中できるようになり、運用保守への投資とコストを大幅に節約できます。
無停止リリース + 分レベルのオンライン化:SAE はグレースケールリリースとローリングリリースをサポートし、完全な Open API も提供しています。Git と統合して迅速なデプロイが可能であり、TapTap サービスに分レベルのリリース機能をもたらします。これは新規ビジネスにとって特に魅力的です。
秒レベルのオートスケーリング:SAE は CPU、メモリ、QPS、RT、タイミングなど、さまざまなディメンションの指標に対するスケーリング戦略の設定をサポートし、リソース使用率の向上に貢献します。特にビジネス規模が大きい場合、より精緻なオートスケーリング戦略を設定することで、マシンコストを大幅に削減できます。
多言語マイクロサービス対応:SAE は PHP、Python、Go などのランタイムを提供し、K8s Service に基づく多言語サービスの登録・検出により、Go 言語の低コストなマイクロサービス化を実現しています。
心動 (Xinxin) は 2003 年に設立されたグローバルゲーム開発・パブリッシャーで、研究開発、ディストリビューション、エージェント運営において豊富な経験を有しています。2022 年半ばまでに、心動は 38 本の無料および有料ゲームを運営し、全世界で 5,000 万のアクティブユーザーを有しており、主に中国大陸部、東南アジア、北米、南米で展開しています。2016 年、心動はモバイルゲームコミュニティおよびアプリストアである TapTap をリリースしました。プレイヤーは公式チャンネルを通じてモバイルゲームを無料で、または有料で購入・ダウンロードでき、コミュニティで他のプレイヤーと交流することもできます。2022 年 6 月時点で、TapTap は全世界で 5,000 万以上のアクティブユーザーを有しています。
ビジネス背景
TapTap は従来のアプリストアの収益分配モデルとは異なり、チャネル分配ゼロを貫いてきました。そのため、現在の TapTap の商業化は主に広告によって推進されています。TapTap の広告はサイト上のオーガニック広告であり、他の非商業広告と内容的に高い一貫性を保ち、ユーザーに優れた体験を提供しています。たとえば、ホームページのゲーム推薦、発見ページのコンテンツレコメンデーション、検索ガイドページのシェーディングワード、検索入力時に表示される検索サジェストワード、検索結果末尾のランディングページなどがあります。広告はこれらの戦略的コンテンツの間に配置されています。
TapTap の Serverless 実践も、これらのビジネスシナリオの実際的なニーズに基づいています。たとえば、各チームが現在利用している深層学習モデルの自動更新・デプロイ、グループ内のメンバーが必要とするモデル実験記録プラットフォーム、およびサイト内新規コンテンツの NLP 処理と解析などがあります。
初期段階では、TapTap のバックエンドサービスの大部分は仮想マシン (ECS) 上にデプロイされ、Rundeck を通じて管理・デプロイされていましたが、効率性と管理性の面で理想的ではありませんでした。インフラ基盤の刷新要件について、以下の 4 つのポイントをまとめました:
1. 開発および運用保守の効率を大幅に向上できること
2. 少ない人的リソースでビジネスニーズを満たせること
3. サービスが十分な信頼性と優れたパフォーマンスを備えていること
4. TapTap プロジェクトは現在主に Go 言語ベースであるため、後続のインフラ基盤刷新においても Go 言語の適切なサポートが必須であること
スキーマ比較
2 つの主流ソリューションアーキテクチャを検討しました。1 つは仮想マシン + K8s によるフルソリューション、もう 1 つは Serverless App Engine (SAE) と Function Compute (FC) を活用したサーバーレスアーキテクチャです。
比較検討の結果、後者を選択しました。一方で、Serverless はマシンの調達手続きを排除でき、ECS を事前に購入する必要がありません。さらに、オプションのデフォルト環境も備わっており、特別な要件がなければ環境構築の複雑さを基本的に排除できます。もう一方で、Serverless には多くの基本コンポーネントが統合されており、実質的に運用保守なしで本番稼働できるレベルと言えます。
後続の保守面では、Serverless は ECS よりも課金精度が高く、分レベルや秒レベルでの課金を実現できます。実際のビジネスでリソースを使用する際にのみ課金されるため、K8s + ECS モデルと比較して、開発初期および後続の運用保守における人的コストを大幅に削減できます。
TapTap の実際の実験経験から、Serverless の 2 つの製品について理解を深めることができます。
Function Compute (FC) は、ビジネスのスケジューリングおよびトリガーロジックをビジネスロジック自体から切り離します。開発やアルゴリズムの担当者は、Function Compute のコンソール上でビジネスロジック全体のトリガーおよびスケジューリングロジックを制御できるため、追加の開発が不要になり、ビジネスロジック自体の設計により集中できます。この特性により、Function Compute はイベント駆動型のシナリオにより適しており、イベントが実際に発生した時点でリソースを割り当ててビジネスロジックを実行します。
Serverless App Engine (SAE) は、より多くの機能と包括的なマイクロサービスを備えた強化版 K8s のようなものであり、保守コストを大幅に削減し、すぐに使える状態を実現できます。これはマイクロサービス化の推進により適しており、ECS 上の既存サービスを直接移行するだけで、運用担当者を追加することなく、コンテナ化された運用保守ソリューション一式を導入できます。
基本的に、この 2 つの製品の組み合わせにより、TapTap のビジネスシナリオのほとんどをカバーでき、全アプリケーションの All On Serverless を実現できます。
ビジネス実践
Function Compute (FC)
1) OSS をトリガーとする全自動モデルデプロイ / 毎時更新サービス
TapTap には、OSS をトリガーとするモデルの自動デプロイ・更新サービスがあり、モデルのエクスポートとデプロイを実行します。アルゴリズム担当者は、TensorFlow、PyTorch、またはその他の機械学習モデルのトレーニングを完了した後、指定された OSS バケットにエクスポートするだけで、モデルの更新・デプロイサービスがトリガーされ、完全なエクスポートとデプロイが自動的に実行されます。これにより、アルゴリズム担当者は他のエンジニアのリソースに依存することなく、柔軟にモデルのデプロイ、更新、スケーリングを行えます。
2) HTTP トリガー (Web サービス) によるモデル実験管理プラットフォーム
アルゴリズム担当者は、HTTP トリガーで実装された社内モデル実験管理・パラメータープラットフォームを通じてモデルトレーニングタスクを送信すると、トレーニングパラメーター、ログ保存先、ログインスタンスが自動的に記録され、すべての実験を追跡・管理できます。これは Web サービスであり、フロントエンドを備えていますが、内部サービスでもあります。高い QPS やパフォーマンスは要求されないため、Function Compute 上に配置しました。管理コストの面でかなりの優位性があります。特に最近、Function Compute に無料クォータがあるため、実質的に無料で利用できています。
3) Kafka をトリガーとする新規コンテンツの NLP 処理・解析サービス
TapTap サイト内のユーザーが新しい投稿を送信すると、そのコンテンツを Kafka を通じて NLP 解析サービスプロバイダーにプッシュし、NLP 処理と解析を行った後、後の検索用に保存します。これにより、ユーザーが 1 回コンテンツを送信するごとにサービスが 1 回呼び出され、コストを正確に制御できます。
4) 毎週 / 毎日の定期的なリソース消費統計
毎週 / 毎日定期的にトリガーされる MaxCompute および EAS のリソース消費統計では、TapTap は Alibaba Cloud のバックグラウンドから非構造化の消費明細データを自動的に取得し、各担当者、タスク、モデルごとに集計して、グループ内のメンバーにプッシュします。これにより、各メンバーのコスト意識を高め、各ビジネスラインがコストをより適切に管理できるよう支援しています。
Serverless App Engine (SAE)
SAE の導入において、社内予測サービスを選択しました。このサービス自体は、検索、レコメンデーション、広告に必要なモデル推論、機能開発、サンプル取得の機能を統合した中間層マイクロサービスであり、すべてのビジネスラインが非常に低いコストで、現在グループ内で最も成熟したオンライン予測サービスにアクセスできます。たとえば、検索ページの推薦ワードのクリック率や、国際版ゲームのクリック率の推定などに活用しています。
SAE を通じて、TapTap のサービスは迅速に Serverless 機能を獲得しました。SAE 自体がリソース管理、環境構築、基本的な運用保守コンポーネントの管理を吸収しているため、TapTap は国内外の新シナリオや新ビジネス向けに、独立した予測サービスを迅速に立ち上げることができます。
同時に、TapTap は SAE のアラートプラットフォーム、イベントセンター、Log Service も統合しています。TapTap はピンニングアラームを通じてオンラインビジネスの状態をリアルタイムで把握でき、OOM や再起動の発生、エラーログなどを検知できます。
さらに、このサービス自体は Dubbo Go フレームワークにも接続されており、サービス登録検出、IP アドレス直接接続、グレースフルなオンライン・オフラインなどのマイクロサービス機能を直接備えています。従来の ECS 使用モードと比較して、このスキームは運用管理、開発、デプロイ、および後続のコスト管理の面で大きな優位性を持ち、開発からデプロイ、後続の運用保守までの全プロセスを基本的にカバーでき、グループ内の開発コストを大幅に節約します。
ビジネス価値
運用保守の簡素化:開発者はアプリケーションの開発、デプロイ、管理の全プロセスを容易に完了でき、ビジネスにより集中できるようになり、運用保守への投資とコストを大幅に節約できます。
無停止リリース + 分レベルのオンライン化:SAE はグレースケールリリースとローリングリリースをサポートし、完全な Open API も提供しています。Git と統合して迅速なデプロイが可能であり、TapTap サービスに分レベルのリリース機能をもたらします。これは新規ビジネスにとって特に魅力的です。
秒レベルのオートスケーリング:SAE は CPU、メモリ、QPS、RT、タイミングなど、さまざまなディメンションの指標に対するスケーリング戦略の設定をサポートし、リソース使用率の向上に貢献します。特にビジネス規模が大きい場合、より精緻なオートスケーリング戦略を設定することで、マシンコストを大幅に削減できます。
多言語マイクロサービス対応:SAE は PHP、Python、Go などのランタイムを提供し、K8s Service に基づく多言語サービスの登録・検出により、Go 言語の低コストなマイクロサービス化を実現しています。
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
