CloudOS: わずか 10 分! フロントエンドとバックエンドを分離した AI 地図認識プロジェクトをデプロイするコードから開始

序文

プロジェクトの開発とデプロイ時にツールの不一致や、パッチワークの管理が容易ではないことに悩まされていませんか? フロントエンドとバックエンドの分離プロジェクトをコードからデプロイできるツールと、フロントエンド、バックエンドからアプリケーションのリリースまでワンストップのサービスを提供するプラットフォームがあれば、あなたはその誘惑に駆られますか? ?

- できます!

コードエンジニアリング/プロジェクト紹介

コードベースアドレス:

フロントエンド コード リンク: https://gitlab.com/cloudospml/ai-demo-vue.git
バックエンド コード リンク: https://gitlab.com/cloudospml/ai-demo-tensorflow.git

フロントエンド

テクノロジースタック: vue;

コア ロジック: 画像をアップロードし、画像情報をバックグラウンドに送信し、インターフェイスから返されたデータを使用して画像認識結果をレンダリングします。

バックエンド AI モジュール

テクノロジースタック: Python TensorFlow Flask;

コア ロジック: 画像を処理して numpy 配列にし、計算のためにモデルに渡します。

CloudOS でアプリケーションを公開する

プロジェクトを作成する

フロントエンドとバックエンドの分離には複数のサービスが関係するため、ここでマイクロサービス プロジェクトが作成されます。![ここに画像の説明を挿入](https://img-blog.csdnimg.cn/7aed280d49d741c9bcbb7f6717acc1d3.png#pic_centerここに画像の説明を挿入
ここに画像の説明を挿入

アーキテクチャ図を描く

CloudOSではアーキテクチャ図がプロジェクト全体の核となるリソースであり、コンポーネントをドラッグ&ドロップすることでアプリケーション全体の各サービスの情報とそれらの関係が記述され、最後にプラットフォームがクラスタベースでアプリケーションをデプロイします。この図では。

コンポーネント

①コードソース

アーキテクチャ図に初めてコード タイプのコンポーネントを追加するには、コード ライブラリのアカウント情報をバインドする必要があります。
ここに画像の説明を挿入ここに画像の説明を挿入

バインドが完了したら、コンポーネントのソース コードが配置されているコード ウェアハウスを選択し、デフォルトのブランチを選択します。

ここに画像の説明を挿入

②技術スタック・集大成・構築

デプロイメントを完了するには、コード コンポーネントをミラーリングする必要があります。プラットフォームによって提供される一般的なテクノロジ スタックをミラー構築用に選択できます。テクノロジ スタックの特定の情報は、[プロジェクト設定] - [コンパイルとビルド] で確認できます。

ここに画像の説明を挿入

プロジェクトの実際のニーズに応じて、コード プロジェクト内の Dockerfile を自分で保守することもできます。テクノロジ スタックを選択するときに、[ソース内の Dockerfile] を選択し、プロジェクトの下に Dockerfile の実際のパスを指定すると、プラットフォームが構築されますそれに応じて画像が表示されます。

ここに画像の説明を挿入ここに画像の説明を挿入

上記の Python プロジェクトを例にとると、Dockerfile はプロジェクトのルート パスの下にあるため、パスを Dockerfile として入力できます。

ここに画像の説明を挿入

Python プロジェクトのイメージ構築: 適切なベースイメージを選択し、依存ファイルに従ってモジュールをダウンロードし、メインプログラムを実行します。

コンポーネント構成

ポートの宣言: サービスによって公開されるポート情報を追加します (非常に重要: 入力されたポート情報は、コード プロジェクトで宣言されたものと一致します)。Python プロジェクトを例に取ると、フラスコ サービスのポートは 8001 として構成されます。コードに、次にコンポーネントに同じポート情報を に追加する必要があります。同時に、このポートがアプリケーション外部の他のサービスへのアクセスを提供する必要がある場合は、ドメイン名スイッチをオンにして、アクセス可能なドメイン名アドレスにポートをバインドする必要があります。

ここに画像の説明を挿入

たとえば、フロントエンド Vue サービスがユーザーがブラウザ経由でアクセスできるようにアドレスを提供する必要がある場合は、このスイッチをオンにする必要があります。

ここに画像の説明を挿入

コンポーネント間のアクセス

コンポーネントの上部にあるエンドポイントは、コンポーネントの起動後に出力されるアドレスを表し、この値は接続を通じて他のコンポーネントの環境変数に割り当てることができます。

ここに画像の説明を挿入ここに画像の説明を挿入

バックエンド Java アドレスに対するフロントエンド サービス リクエストを例に挙げます。コードから、フロントエンド nginx リクエストのバックエンド アドレス プレフィックスがシステム環境変数 AI_SERVER_HOST から取得されていることがわかります。
ここに画像の説明を挿入

したがって、接続時にアドレスを取得する必要があるサービスには、環境変数を追加してバインドします。

ここに画像の説明を挿入

コンポーネントのサイドバーの詳細でバインディング関係を確認することもできます。

ここに画像の説明を挿入

ヒント: キャンバスの右下隅にある [レイアウト] ボタンをクリックすると、きれいなアーキテクチャ図が表示されます。

ここに画像の説明を挿入

上記の手順に従って、すべてのマイクロサービス コンポーネントを追加し、最後に [アーキテクチャ図の保存] をクリックします。

アプリケーションを公開する

①リリース構成

アーキテクチャ図の右上隅にある「公開」ボタンをクリックします。

ここに画像の説明を挿入

公開構成ページに入ります。サービスをデプロイするコンポーネントのコード ブランチを選択します。ドメイン名にアクセスするためのポートを指定してドメイン名情報を入力し、最後に「公開」をクリックします。

ここに画像の説明を挿入

リリースプロセス

アプリケーションのリリース プロセス中、またはアプリケーション カードの [運用とメンテナンスの監視] エントリで関連情報を参照します。

ここに画像の説明を挿入

このページでは、各コンポーネントの手順とログ情報を確認できます。その中で、ビルド ログはコードのプル、コンパイル、イメージのビルドのプロセス全体のログ、起動ログはサービスの準備ができる前にコンソールによって出力されるログ、起動イベントはサービスのデプロイメントとスケジュール情報です。 k8s クラスター内のサービス。

ここに画像の説明を挿入

アプリケーションアクセス

ここに画像の説明を挿入

導入成功後のアクセス効果:

ここに画像の説明を挿入

肖像画を含む写真をアップロードします (モデルは当社の包囲ライオンです。商用目的で使用しないでください):

ここに画像の説明を挿入

アプリのアップデート

アプリケーションのリリース時に問題が発生した場合、アーキテクチャ図の構成が変更された場合、またはコードが更新された場合は、「アプリケーションのアップグレード」を通じてアプリケーションを更新できます。

ここに画像の説明を挿入

アーキテクチャ図の構成が変更された場合は、アーキテクチャ図を変更して保存し、更新時に対応するアーキテクチャ図を選択してください。

ここに画像の説明を挿入

今回更新が必要なコンポーネントを選択すると、左側が更新後のアプリケーションのアーキテクチャ図、右側が現在のアプリケーションの実際のサービス状態になります。

ここに画像の説明を挿入

更新およびアップグレードする場合、リリース構成インターフェイスで、アプリケーションの関連構成と、この更新に参加するサービスの関連構成を調整できます。

デモ プロジェクトを例に挙げます。

画像認識結果の信頼度のしきい値を変更します。

ここに画像の説明を挿入

コードのみが変更されるため、アプリケーション更新時にアーキテクチャ図を再選択したり、ソースコード変更後に再コンパイルが必要なコンポーネントを選択したりする必要がありません。
ここに画像の説明を挿入

リリース構成ページで公開すると、この更新プログラムは、コード ソースの指定されたブランチ内の最新コードを取得してコンパイルおよびビルドし、展開用のイメージを再生成します。

更新が成功した後、効果を確認します。信頼度のしきい値が 0.8 に変更されると、0.8 より高いオブジェクトのみが認識されます。
ここに画像の説明を挿入

上記は、フロントエンドとバックエンドをソースコードから分離したAIオブジェクト検出/インテリジェント画像認識をCloudOSを通じてリリースし、プラットフォームを通じてアプリケーションのプロセス全体を更新する方法です。

ソースコードモデルのリファレンスの一部: https://github.com/AIZOOTech/flask-object-detection、オープンソースの力に感謝~

クラウドネイティブなデジタルイノベーションプラットフォーム

CloudOS (https://www.cloudtogo.cn/product-CloudOS) には、クラウド ネイティブ アプリケーションのビジュアル アーキテクチャ設計、オンラインでの共同コーディング開発、クラウド ネイティブ ベースの API 管理とインターフェイス テスト、マルチクラウド配信とアプリケーション スケジューリング、グレースケールが含まれますリリース、パイプライン、アプリケーションの運用と保守、サービス ガバナンス、マルチコンテナ クラスタ管理、クラウド側の統合ビジネス デリバリー、その他の機能が含まれます。目標は、アプリケーション アーキテクチャの機敏性を向上させ、企業向けに機敏で革新的なアプリケーション R&D 環境を構築し、アプリケーション R&D の可視化と機敏性を実現し、テクノロジー プラットフォームを標準化し、ソフトウェア開発の反復速度を大幅に加速し、 IT リソースの柔軟性と活用。従来のアプリケーションのクラウドへの移行をサポートし、企業顧客がビジネス価値の実現を加速できるように支援し、従来のアプリケーションの研究開発チームがクラウドネイティブ アプリケーションのイノベーションを効率的に完了できるように支援します。

ここに画像の説明を挿入

CloudOS には通常、次の 4 つの部分が含まれます。

  • クラウド ネイティブ アプリケーション ファクトリー: クラウド ネイティブ アプリケーションの研究開発の包括的なサポートを実現し、クラウド ネイティブ DevOps 機能を統合し、アプリケーション プロジェクト管理、アーキテクチャ設計、オンライン開発、オンライン テスト、マルチクラウド展開、ビジュアル操作、およびアプリケーションを提供します。メンテナンス、テスト環境管理、研究開発かんばん、パイプラインなどの機能。クラウドネイティブ アプリケーション ストアのエンタープライズ パブリック機能コンポーネントは、アプリケーション開発に使用できます。

  • クラウドネイティブ アプリケーション ストア: エンタープライズ パブリック ビジネス機能コンポーネント、メッセージ ミドルウェア、データベース ミドルウェアなどを含む、エンタープライズ クラウドネイティブ資産の蓄積と管理を実現します。アプリケーション ファクトリによって開発されたエンタープライズ パブリック ビジネス機能コンポーネントは、クラウド ネイティブ アプリケーション ストアに配置できます。

  • クラウド ネイティブ アプリケーション管理: エンタープライズ デジタル アプリケーションの展開、ビジネス スケジュール管理、ビジネスの運用と保守、およびサービス ガバナンス機能を実現します。K8S
    クラスタ/コンテナプラットフォームは、自動スケーリングや複数コピーなどのデジタルアプリケーションの運用支援を実現します。このプラットフォームは他のメーカーのコンテナ プラットフォームとドッキングして統合することも、Xingyun が
    オープン ソース K8S に基づくバージョンを提供することもできます。

  • IaaS リソースとのインターフェース: この製品には、パブリック クラウド IaaS リソースまたはエンタープライズ プライベート クラウド リソース、および物理マシンまたは仮想マシンのいずれかである IaaS リソース層に対する特別な要件はありません。

おすすめ

転載: blog.csdn.net/weixin_44592002/article/details/131889274