Ask and Knative
はじめに
クラウドコンピューティング技術の発展に伴い、クラウドリソースのデリバリーはますますシンプルになり、オンデマンドでの利用が可能になりました。オンデマンドでリソースを利用するモードでは、ユーザーはビジネスそのものに集中し、インフラへの関心を減らすことができます。そこで、サーバーレスという概念が誕生しました。Kubernetes は優れたエコシステムとクラウドベンダーに依存しない互換性を備え、現在クラウドネイティブ業界の標準となっています。Kubernetes は IaaS リソースデリバリーの標準をうまく抽象化していますが、Kubernetes 上でサーバーレスモードのアプリケーション管理を実現するには、まだ多くの作業が必要です。Knative は K8s をさらに簡素化し、アプリケーションのライフサイクル制御の複雑さを大幅に低減するとともに、自動伸縮やカナリアリリース機能を提供します。同時に、Alibaba Cloud のサーバーレス Kubernetes(ASK)が提供する極致のコンテナ化サーバーレスを基盤に、クラウドネイティブサーバーレスアプリケーションの完全なセットをお届けします。本記事では、以下の 4 つのパートに分けて解説します。
・ Knative が必要な理由
・ Knative の紹介
・ Knative と ASK の統合
・デモ例
Knative が必要な理由
ご存じのとおり、現在の K8s は事実上のクラウドネイティブオペレーティングシステムとなっています。Kubernetes は、Service、Ingress、Pod、Deployment などのデータ抽象化を通じてインフラ機能を公開しています。これらの機能は Kubernetes ネイティブ API を通じてユーザーに提供されます。一方で、Kubernetes は CNI や CRD などのインフラ機能アクセスのための標準インターフェースを提供しており、クラウドリソースを標準的な方法で Kubernetes のシステムに接続できます。現在の Kubernetes のポジションは、インフラとアプリケーションを結ぶ架け橋と言えます。クラウドネイティブユーザーは Kubernetes を用いてアプリケーションのデリバリーと管理を行います。そこにはカナリアリリース、スケーリング、およびリソースコストの最適化が含まれます。
しかし、Kubernetes を使用する過程で、以下のような課題が見えてきます。
・ K8s API を通じたサービスライフサイクル管理の実現は複雑である
・クラウド IaaS リソースの仕様は複雑で、各仕様は異なるシナリオに適用されるため、ユーザーがすべての仕様を独自に組み合わせるのは困難である
・リソース使用コストの削減において、伸縮性がますます重要になっている
では、コンテナ(K8s)技術をシンプルに利用するにはどうすればよいでしょうか。オンデマンドで利用し、コストを削減するにはどうすればよいでしょうか。その答えが Knative です。
Knative の紹介
Knative は、Google Cloud Next 2018 で発表された Kubernetes ベースのサーバーレスオーケストレーションエンジンです。Knative の重要な目標の一つは、クラウドネイティブでクロスプラットフォームなサーバーレスオーケストレーション標準を策定することです。Knative は、コンテナビルド(または関数)、ワークロード管理(伸縮性)、およびイベントモデルを統合することでサーバーレス標準を実現しています。現在の Knative コミュニティの主なコントリビューターは、Google、Pivotal、IBM、Red Hat です。さらに、CloudFoundry や OpenShift などの PaaS プロバイダーも Knative の構築に積極的に参加しています。
Knative コアモジュール
Knative のコアモジュールは、主にイベントドリブンフレームワークの Eventing と、デプロイワークロードの Serving で構成されます。
サーバーレスサービスエンジン - Serving
Knative Serving の中核となる強みは、シンプルで効率的なアプリケーションホスティングサービスであり、これがサーバーレスをサポートする基盤でもあります。サーバーレスフレームワークにはオンデマンドでのリソース割り当て能力が不可欠です。Knative は、アプリケーションへのリクエスト数に応じてピーク時にインスタンス数を自動拡張できます。リクエスト数が減少すると、自動的にインスタンス数を削減し、コストを自動的に節約します。Serving はさらにトラフィック管理機能と柔軟なカナリアリリース機能も提供します。トラフィック管理機能はパーセンテージに基づいてトラフィックを分割し、カナリアリリース機能はトラフィックの割合に基づいてカナリアリリースを実現します。
シンプルなシナリオ:トラフィックベースのカナリアリリース
シンプルなトラフィックベースのカナリアリリースを例に、K8s でどのように実装するかを見てみましょう。
外部アクセスを提供するサービスを作成します。K8s では、以下のリソースを作成する必要があります。
・ Deployment:アプリケーションをデプロイするためのワークロード
・サービス:サービスアクセスとロードバランシング機能を提供
・ Ingress:外部へのドメイン名アクセス機能を提供
・ HPA:負荷(CPU、メモリ)に応じた自動伸縮を実現するために HPA を作成
初期段階では、V1 を通じてサービスを提供します。新バージョンのカナリアリリースが必要な場合は、対応する V2 リソースを作成し、Ingress を通じて V1 と V2 のトラフィックを直接分割します。図に示す通りです。
ご覧のように、K8s でのカナリアプロセスはトラフィックベースです。新バージョンに対応するリソースの作成や、カナリア完了後の旧バージョンのリソースクリーンアップを含め、これらのリソースをきめ細かく制御する必要があります。ユーザーにとっては依然として複雑です。では、Knative ではどのようにカナリアリリースを行うのでしょうか。
・ Knative サービスの作成
・ Knative サービスの更新
・バージョンのトラフィック比率の調整
ここでは Knative Service リソースのみを操作すれば済みます。新しい変更は、Knative Service の情報(イメージなど)を更新するだけで、新バージョンが自動的に作成されます。カナリア手順については、Knative Service で対応バージョンのトラフィック比率を調整するだけです。以下に示す通りです。
上記のカナリアリリースを確認したところで、Knative のアプリケーションモデルについてさらに解説します。
アプリケーションモデル
Knative は、サービスのデプロイ、サービスアクセス、およびカナリアリリースの要件を満たす最小限のアプリケーションモデル - Knative Service を提供します。次の式で理解できます:Knative Service = ワークロード + サービスアクセス + カナリアトラフィック + 自動伸縮。アプリケーションモデルは以下の通りです。
・ Service:サーバーレスアプリケーションモデルを抽象化し、サービスを通じてアプリケーションのライフサイクルを管理
・ configuration:アプリケーションが期待する設定情報を設定。サービスが更新されるたびに configuration も更新される
・ revision:configuration の各更新時にスナップショットを作成し、バージョン管理を行う
・ route:リクエストをリビジョンにルーティングし、異なるリビジョンに異なる割合のトラフィックを転送
豊富な柔軟戦略
サーバーレスフレームワークとして、その中核となる機能は自動伸縮です。Knative はさまざまな伸縮戦略を提供します。
・トラフィックリクエストに基づく自動拡張・縮小 - KPA
・ CPU とメモリに基づく自動スケーリング - HPA
・タイミングベース + HPA の自動スケーリング戦略をサポート
・イベントの正確な配信戦略を満たすイベントゲートウェイを提供
Knative と ASK の統合
まず ASK について学びましょう。一般的に、K8s を使用するには事前に IaaS リソースを準備してアプリケーションをデプロイする必要があり、これはサーバーレスの本来の理念に反します。その答えが ASK です。
ASK は Alibaba Cloud が提供するサーバーレス Kubernetes です。ユーザーはノードを購入することなく、ノードメンテナンスやクラスター容量計画なしで、コンテナアプリケーションを直接デプロイできます。ASK クラスターは完全な Kubernetes 互換性を提供し、Kubernetes の使用障壁を大幅に低減することで、ユーザーは基盤インフラの管理ではなくアプリケーションに集中できます。
・運用保守不要:すぐに使え、ノード管理、運用保守、セキュリティメンテナンスが不要
・極致の伸縮性:容量計画不要で、秒単位でスケールアウトし、30 秒で 500 Pod までスケールアウト
・低コスト:オンデマンドで Pod を作成し、スポット(プリエンプティブル)インスタンスとリザーブドインスタンスをサポート
・ K8s 互換:Deployment / StatefulSet / Job / Service / HPA / CRD などをサポート
・ Knative:トラフィックベースのアプリケーション自動伸縮とリザーブドインスタンスへの縮小
・ストレージマウント:クラウドディスク、NAS、OSS ストレージボリュームをサポート
・エラスティックワークロード:オンデマンドとスポットインスタンスの混合スケジューリングをサポート
・ ARMS / SLS などのクラウドプロダクトとの統合
Knative の運用保守の課題
ASK について理解したところで、Knative 自体が抱える現在の課題を見てみましょう。
・ゲートウェイ。ネイティブコミュニティは Istio ゲートウェイ機能を提供していますが、Istio コンポーネントは多数あり、ユーザーはこれらのコンポーネントに対してリソースと運用保守コストを負担する必要があります。(現在のコミュニティでは Istio がデカップリングされ、ユーザーはより軽量なゲートウェイを自ら選択できますが、リソースと運用保守コストは依然として必要です)
・ Knative 管理コンポーネント。現在、7 つの管理コンポーネントの運用保守が必要で、ユーザーは追加のリソースと運用保守コストを負担する必要があります
・コールドスタート問題。サーバーレスはアプリケーションのコールドスタート問題を避けて通れません。0 から 1 への起動時に、サービスの高速応答をどう保証するかを検討する必要があります
上記の課題に対し、ASK Knative では以下の機能を提供しています。
ゲートウェイと SLB の統合
Alibaba Cloud SLB を通じてゲートウェイ機能を提供します。
・コスト削減:10 以上のコンポーネントを削減し、運用保守コストと IaaS コストを大幅に低減
・安定性:SLB クラウドプロダクトによるサービスは、より安定していて信頼性が高く、使いやすい
管理コンポーネントのホスティング
Knative 管理コンポーネントをホスティングします。
・すぐに使える:ユーザーはサーバーレスフレームワークを直接使用でき、自らインストールする必要がない
・運用保守不要、低コスト:Knative コンポーネントと K8s クラスターが統合され、ユーザーは運用保守の負担を負わず、追加のリソースコストも不要
・高い管理性:すべてのコンポーネントがコントロールプレーンにデプロイされ、アップグレードとイテレーションが容易
リザーブドインスタンス
0 から 1 へのコールドスタート問題を解決します。
・コールドスタートフリー:予約済みインスタンスにより、0 から 1 への 30 秒のコールドスタート時間を排除
・コスト制御可能:バーストパフォーマンスインスタンスのコストは標準仕様インスタンスより 40% 低く、スポットインスタンスと組み合わせればさらにコストを削減可能
デモ例
・ ASK クラスターに Knative をインストール
・ helloworld アプリケーションのデプロイとアクセス
・予約済みインスタンス
ASK クラスターに Knative をインストール
現在、ASK クラスターの作成時に Knative をインストールすることがサポートされています。ASK クラスターの作成完了後、「アプリケーション > Knative」のコンポーネント管理タブをクリックして Knative をデプロイすることもできます。既存の ASK クラスターへの Knative デプロイ操作は以下の通りです。
1. コンテナサービス管理コンソールにログインします。
2. コンソールの左ナビゲーションバーで「クラスター」をクリックします。
3. クラスター一覧ページで、対象クラスター名または操作列の「詳細」をクリックします。
4. クラスター管理画面の左ナビゲーションバーで、「アプリケーション > Knative」を選択します。
5. Knative の「コンポーネント管理」タブをクリックして、Knative をデプロイします。
6. インストールする Knative コンポーネントを選択し、「デプロイ」をクリックします。
Knative のデプロイ完了後の結果は以下の通りです。
helloworld アプリケーションのデプロイとアクセス
1. コンテナサービス管理コンソールにログインします。
2. クラスター一覧ページで、対象クラスター名または操作列の「詳細」をクリックします。
3. クラスター管理画面の左ナビゲーションバーで、「アプリケーション > Knative」を選択します。
4. サービス管理タブの右上にある「サービスを作成」をクリックします。
5. クラスター、名前空間、サービス名を設定し、使用するイメージとイメージバージョンなどの設定情報を選択します。ここでは helloworld のサンプルイメージを使用します。
6. 「作成」をクリックします。作成後、サービス管理タブの一覧に新しく作成されたサービスが表示されます。サービス名をクリックすると、サービス詳細ページに入ります。内容は以下の通りです。
7. サービスアクセス。
ドメイン名をホストにバインドしてアクセスするか、以下のように curl コマンドで直接アクセスすることもできます。
予約済みインスタンス
予約済みインスタンスの準備が整うと、通常インスタンスはオフラインになります。
クラウドコンピューティング技術の発展に伴い、クラウドリソースのデリバリーはますますシンプルになり、オンデマンドでの利用が可能になりました。オンデマンドでリソースを利用するモードでは、ユーザーはビジネスそのものに集中し、インフラへの関心を減らすことができます。そこで、サーバーレスという概念が誕生しました。Kubernetes は優れたエコシステムとクラウドベンダーに依存しない互換性を備え、現在クラウドネイティブ業界の標準となっています。Kubernetes は IaaS リソースデリバリーの標準をうまく抽象化していますが、Kubernetes 上でサーバーレスモードのアプリケーション管理を実現するには、まだ多くの作業が必要です。Knative は K8s をさらに簡素化し、アプリケーションのライフサイクル制御の複雑さを大幅に低減するとともに、自動伸縮やカナリアリリース機能を提供します。同時に、Alibaba Cloud のサーバーレス Kubernetes(ASK)が提供する極致のコンテナ化サーバーレスを基盤に、クラウドネイティブサーバーレスアプリケーションの完全なセットをお届けします。本記事では、以下の 4 つのパートに分けて解説します。
・ Knative が必要な理由
・ Knative の紹介
・ Knative と ASK の統合
・デモ例
Knative が必要な理由
ご存じのとおり、現在の K8s は事実上のクラウドネイティブオペレーティングシステムとなっています。Kubernetes は、Service、Ingress、Pod、Deployment などのデータ抽象化を通じてインフラ機能を公開しています。これらの機能は Kubernetes ネイティブ API を通じてユーザーに提供されます。一方で、Kubernetes は CNI や CRD などのインフラ機能アクセスのための標準インターフェースを提供しており、クラウドリソースを標準的な方法で Kubernetes のシステムに接続できます。現在の Kubernetes のポジションは、インフラとアプリケーションを結ぶ架け橋と言えます。クラウドネイティブユーザーは Kubernetes を用いてアプリケーションのデリバリーと管理を行います。そこにはカナリアリリース、スケーリング、およびリソースコストの最適化が含まれます。
しかし、Kubernetes を使用する過程で、以下のような課題が見えてきます。
・ K8s API を通じたサービスライフサイクル管理の実現は複雑である
・クラウド IaaS リソースの仕様は複雑で、各仕様は異なるシナリオに適用されるため、ユーザーがすべての仕様を独自に組み合わせるのは困難である
・リソース使用コストの削減において、伸縮性がますます重要になっている
では、コンテナ(K8s)技術をシンプルに利用するにはどうすればよいでしょうか。オンデマンドで利用し、コストを削減するにはどうすればよいでしょうか。その答えが Knative です。
Knative の紹介
Knative は、Google Cloud Next 2018 で発表された Kubernetes ベースのサーバーレスオーケストレーションエンジンです。Knative の重要な目標の一つは、クラウドネイティブでクロスプラットフォームなサーバーレスオーケストレーション標準を策定することです。Knative は、コンテナビルド(または関数)、ワークロード管理(伸縮性)、およびイベントモデルを統合することでサーバーレス標準を実現しています。現在の Knative コミュニティの主なコントリビューターは、Google、Pivotal、IBM、Red Hat です。さらに、CloudFoundry や OpenShift などの PaaS プロバイダーも Knative の構築に積極的に参加しています。
Knative コアモジュール
Knative のコアモジュールは、主にイベントドリブンフレームワークの Eventing と、デプロイワークロードの Serving で構成されます。
サーバーレスサービスエンジン - Serving
Knative Serving の中核となる強みは、シンプルで効率的なアプリケーションホスティングサービスであり、これがサーバーレスをサポートする基盤でもあります。サーバーレスフレームワークにはオンデマンドでのリソース割り当て能力が不可欠です。Knative は、アプリケーションへのリクエスト数に応じてピーク時にインスタンス数を自動拡張できます。リクエスト数が減少すると、自動的にインスタンス数を削減し、コストを自動的に節約します。Serving はさらにトラフィック管理機能と柔軟なカナリアリリース機能も提供します。トラフィック管理機能はパーセンテージに基づいてトラフィックを分割し、カナリアリリース機能はトラフィックの割合に基づいてカナリアリリースを実現します。
シンプルなシナリオ:トラフィックベースのカナリアリリース
シンプルなトラフィックベースのカナリアリリースを例に、K8s でどのように実装するかを見てみましょう。
外部アクセスを提供するサービスを作成します。K8s では、以下のリソースを作成する必要があります。
・ Deployment:アプリケーションをデプロイするためのワークロード
・サービス:サービスアクセスとロードバランシング機能を提供
・ Ingress:外部へのドメイン名アクセス機能を提供
・ HPA:負荷(CPU、メモリ)に応じた自動伸縮を実現するために HPA を作成
初期段階では、V1 を通じてサービスを提供します。新バージョンのカナリアリリースが必要な場合は、対応する V2 リソースを作成し、Ingress を通じて V1 と V2 のトラフィックを直接分割します。図に示す通りです。
ご覧のように、K8s でのカナリアプロセスはトラフィックベースです。新バージョンに対応するリソースの作成や、カナリア完了後の旧バージョンのリソースクリーンアップを含め、これらのリソースをきめ細かく制御する必要があります。ユーザーにとっては依然として複雑です。では、Knative ではどのようにカナリアリリースを行うのでしょうか。
・ Knative サービスの作成
・ Knative サービスの更新
・バージョンのトラフィック比率の調整
ここでは Knative Service リソースのみを操作すれば済みます。新しい変更は、Knative Service の情報(イメージなど)を更新するだけで、新バージョンが自動的に作成されます。カナリア手順については、Knative Service で対応バージョンのトラフィック比率を調整するだけです。以下に示す通りです。
上記のカナリアリリースを確認したところで、Knative のアプリケーションモデルについてさらに解説します。
アプリケーションモデル
Knative は、サービスのデプロイ、サービスアクセス、およびカナリアリリースの要件を満たす最小限のアプリケーションモデル - Knative Service を提供します。次の式で理解できます:Knative Service = ワークロード + サービスアクセス + カナリアトラフィック + 自動伸縮。アプリケーションモデルは以下の通りです。
・ Service:サーバーレスアプリケーションモデルを抽象化し、サービスを通じてアプリケーションのライフサイクルを管理
・ configuration:アプリケーションが期待する設定情報を設定。サービスが更新されるたびに configuration も更新される
・ revision:configuration の各更新時にスナップショットを作成し、バージョン管理を行う
・ route:リクエストをリビジョンにルーティングし、異なるリビジョンに異なる割合のトラフィックを転送
豊富な柔軟戦略
サーバーレスフレームワークとして、その中核となる機能は自動伸縮です。Knative はさまざまな伸縮戦略を提供します。
・トラフィックリクエストに基づく自動拡張・縮小 - KPA
・ CPU とメモリに基づく自動スケーリング - HPA
・タイミングベース + HPA の自動スケーリング戦略をサポート
・イベントの正確な配信戦略を満たすイベントゲートウェイを提供
Knative と ASK の統合
まず ASK について学びましょう。一般的に、K8s を使用するには事前に IaaS リソースを準備してアプリケーションをデプロイする必要があり、これはサーバーレスの本来の理念に反します。その答えが ASK です。
ASK は Alibaba Cloud が提供するサーバーレス Kubernetes です。ユーザーはノードを購入することなく、ノードメンテナンスやクラスター容量計画なしで、コンテナアプリケーションを直接デプロイできます。ASK クラスターは完全な Kubernetes 互換性を提供し、Kubernetes の使用障壁を大幅に低減することで、ユーザーは基盤インフラの管理ではなくアプリケーションに集中できます。
・運用保守不要:すぐに使え、ノード管理、運用保守、セキュリティメンテナンスが不要
・極致の伸縮性:容量計画不要で、秒単位でスケールアウトし、30 秒で 500 Pod までスケールアウト
・低コスト:オンデマンドで Pod を作成し、スポット(プリエンプティブル)インスタンスとリザーブドインスタンスをサポート
・ K8s 互換:Deployment / StatefulSet / Job / Service / HPA / CRD などをサポート
・ Knative:トラフィックベースのアプリケーション自動伸縮とリザーブドインスタンスへの縮小
・ストレージマウント:クラウドディスク、NAS、OSS ストレージボリュームをサポート
・エラスティックワークロード:オンデマンドとスポットインスタンスの混合スケジューリングをサポート
・ ARMS / SLS などのクラウドプロダクトとの統合
Knative の運用保守の課題
ASK について理解したところで、Knative 自体が抱える現在の課題を見てみましょう。
・ゲートウェイ。ネイティブコミュニティは Istio ゲートウェイ機能を提供していますが、Istio コンポーネントは多数あり、ユーザーはこれらのコンポーネントに対してリソースと運用保守コストを負担する必要があります。(現在のコミュニティでは Istio がデカップリングされ、ユーザーはより軽量なゲートウェイを自ら選択できますが、リソースと運用保守コストは依然として必要です)
・ Knative 管理コンポーネント。現在、7 つの管理コンポーネントの運用保守が必要で、ユーザーは追加のリソースと運用保守コストを負担する必要があります
・コールドスタート問題。サーバーレスはアプリケーションのコールドスタート問題を避けて通れません。0 から 1 への起動時に、サービスの高速応答をどう保証するかを検討する必要があります
上記の課題に対し、ASK Knative では以下の機能を提供しています。
ゲートウェイと SLB の統合
Alibaba Cloud SLB を通じてゲートウェイ機能を提供します。
・コスト削減:10 以上のコンポーネントを削減し、運用保守コストと IaaS コストを大幅に低減
・安定性:SLB クラウドプロダクトによるサービスは、より安定していて信頼性が高く、使いやすい
管理コンポーネントのホスティング
Knative 管理コンポーネントをホスティングします。
・すぐに使える:ユーザーはサーバーレスフレームワークを直接使用でき、自らインストールする必要がない
・運用保守不要、低コスト:Knative コンポーネントと K8s クラスターが統合され、ユーザーは運用保守の負担を負わず、追加のリソースコストも不要
・高い管理性:すべてのコンポーネントがコントロールプレーンにデプロイされ、アップグレードとイテレーションが容易
リザーブドインスタンス
0 から 1 へのコールドスタート問題を解決します。
・コールドスタートフリー:予約済みインスタンスにより、0 から 1 への 30 秒のコールドスタート時間を排除
・コスト制御可能:バーストパフォーマンスインスタンスのコストは標準仕様インスタンスより 40% 低く、スポットインスタンスと組み合わせればさらにコストを削減可能
デモ例
・ ASK クラスターに Knative をインストール
・ helloworld アプリケーションのデプロイとアクセス
・予約済みインスタンス
ASK クラスターに Knative をインストール
現在、ASK クラスターの作成時に Knative をインストールすることがサポートされています。ASK クラスターの作成完了後、「アプリケーション > Knative」のコンポーネント管理タブをクリックして Knative をデプロイすることもできます。既存の ASK クラスターへの Knative デプロイ操作は以下の通りです。
1. コンテナサービス管理コンソールにログインします。
2. コンソールの左ナビゲーションバーで「クラスター」をクリックします。
3. クラスター一覧ページで、対象クラスター名または操作列の「詳細」をクリックします。
4. クラスター管理画面の左ナビゲーションバーで、「アプリケーション > Knative」を選択します。
5. Knative の「コンポーネント管理」タブをクリックして、Knative をデプロイします。
6. インストールする Knative コンポーネントを選択し、「デプロイ」をクリックします。
Knative のデプロイ完了後の結果は以下の通りです。
helloworld アプリケーションのデプロイとアクセス
1. コンテナサービス管理コンソールにログインします。
2. クラスター一覧ページで、対象クラスター名または操作列の「詳細」をクリックします。
3. クラスター管理画面の左ナビゲーションバーで、「アプリケーション > Knative」を選択します。
4. サービス管理タブの右上にある「サービスを作成」をクリックします。
5. クラスター、名前空間、サービス名を設定し、使用するイメージとイメージバージョンなどの設定情報を選択します。ここでは helloworld のサンプルイメージを使用します。
6. 「作成」をクリックします。作成後、サービス管理タブの一覧に新しく作成されたサービスが表示されます。サービス名をクリックすると、サービス詳細ページに入ります。内容は以下の通りです。
7. サービスアクセス。
ドメイン名をホストにバインドしてアクセスするか、以下のように curl コマンドで直接アクセスすることもできます。
予約済みインスタンス
予約済みインスタンスの準備が整うと、通常インスタンスはオフラインになります。
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
