1. 背景現在、クラウドコンピューティングは間違いなく非常にホットな話題です。テクノロジー企業と従来型企業の両方がこの話題について話し合い、企業のコスト削減、効率性の向上、共同オフィスなどを支援しています。技術者として、私たちが注目する話題は依然としてテクノロジー関連です。この記事は、JD.com が作成した JD Retail Cloud の背景に基づいています。 JD Retail Cloud mPaaS プラットフォームにおける Android コンポーネント化システムのプライベート展開と変換のプロセスを記録し、全員と共有します。 JD Retail Cloud mPaaS プラットフォームは、JD.com が作成したエンタープライズ レベルのモバイル R&D および運用プラットフォームです。 Aura は、Android 向けのコンポーネントベースのプラグイン ソリューションです。 T-PaaS プラットフォームは、JD.com のプライベート展開の基盤であり、さまざまな PaaS アプリケーションをさまざまな顧客環境でより簡単に商用化できるように設計されています。アクセス仕様はクラウドネイティブ標準に完全に準拠しており、PaaS サービスがエコシステムアプリケーションや顧客ビジネスと容易に連携し、クラウドネイティブコンテナとオペレータの形でアプリケーションロジックを実装し、Helm 標準の方法でパッケージ化し、Kubernetes 上で統一的に展開および管理できることを保証します。 ここで共有されているのは、JD.com のクラウド移行の文脈において、Aura プラットフォーム (Android コンポーネント プラットフォーム) がクラウドおよび T-PaaS 環境への移行プロセスを開始したことです。 2. 需要分析とソリューションの選択1. 需要分析要件と目的は明確で、現在の社内プラットフォームシステムAuraをTPaaSプラットフォーム上に展開することです。 TPaaS プラットフォームは、Kubernetes を使用してコンテナのオーケストレーションとデプロイを行い、Docker コンテナを管理するため、次の 2 つの作業を行う必要があります。
2. ソリューションの選択既存のホイール 私たちはモバイル開発チームです。私たちのチームメンバーのほとんどはクライアント開発者ですが、多才な人材が揃っており、プラットフォーム開発を維持し、JD のイントラネットに展開することもできます。 TPaaS を展開するために、基礎技術グループの同僚が予備的な技術調査を実施し、Dockerfile を記述せずに TPaaS プラットフォームにアクセスするソリューションを開発しました。これにより、クライアント チームは Dockerfile の記述と展開に関する新しいスキルセットを再学習する必要がなくなり、アクセスの敷居が大幅に下がり、アクセスのペースが速まります。このソリューションは主に以下の問題を解決します。
既存のホイールを使用しますか?発明しますか? このソリューションを試した後、Java で記述されたバックエンド プラットフォームのデプロイメントに最適であることがわかりました。私たちは、仕様に従って War パッケージをクラウド ストレージに配置し、構成ファイルを変更し、プロセスに従ってワンクリックでプラットフォームにパッケージ化しました。あ、画像出ましたね〜 もちろん、フロントエンドのデプロイメントにも同様に適しています。 Aura プラットフォームの場合、このホイールセットは使いにくいです。慎重に調査した結果、問題が見つかりました。このソリューションが使いやすい理由は、Nginx、Tomcat など、上記の環境展開を満たすのに十分である、一般的に使用されるソフトウェアが組み込まれているためです。 ただし、Aura プラットフォームのシステム アーキテクチャは比較的複雑です。このソリューションを使用する場合、ホイールを使用するだけでなく、使用目的を達成するためにホイールに多くのものを追加する必要があります。試してみると、利益が損失を上回らず、このホイールの学習コストが高すぎることがわかりました。使用方法を学ぶコストは高くありませんが、変更方法を学ぶコストは高すぎます。 何をするか?車輪を発明しますか?明らかに、単一のプラットフォームの一部だけを対象にするのは賢明な動きではありません。高齢者、体の弱い人、女性、子供の一部を馬車に乗せ、健康な足を持つ若者が直接歩かせるのが良いでしょう。馬車より遅くはないかもしれません。 最後に、若者はまず歩き、歩きながら車輪を改良したり、より便利な車輪を考案したりすることができます。そうなると、1つのスキルに複数の能力だけではなく、1つのスキルに複数の能力がプラスされてさらにもう1つの能力になるんですね、ハハハ~ 3. 仕事を始める1. ミラーパーティションAuraプラットフォームのシステムアーキテクチャは次のとおりです。 Aura プラットフォームは、アーキテクチャに応じて 3 つのイメージに分かれています。
分析の結果、Aura2Web と Aura2JenkinsSlave は使用するソフトウェアが多く、環境構成も複雑であるため、DockerFile を使用してこれら 2 つのイメージを書き込むことにしました。 2. DockerFileの書き方2 つの Dockerfile を作成しました。これらを書く前に、まず Dockerfile を書くためのルールを勉強しました。これらの経験に従うことによってのみ、優れた画像を書くことができます。
ベースイメージを選択 私たちの環境に基づいて、バージョン番号 7.2.1511 の最も安定した Centos サーバーを選択し、依存関係のダウンロードを高速化するためにソースを JD イントラネット ソースに変更しました。 基本ソフトウェアをインストールする JDK、nginx、Python、Maven、Git、Tomcat、JQ などのソフトウェアをインストールします。 ビジネスソースコードからバイナリパッケージ、そしてイメージへ このイメージは独自のサービスを実行するために使用されるため、プラットフォーム パッケージをイメージに配置する必要があります。これには、ソースコードからイメージまでのプロセスを記録し、追跡可能にするためのルールを策定する必要があります。 フロントエンド:
後部:
3. 統一された構成変換イメージ内のコードでは多くの設定ファイルが使用され、Aura2Web イメージだけでも 6 個ものファイルがあるため、統一された設定を行う方法が必要です。 調査の結果、非常に便利な構成管理ソフトウェア confd を見つけました。以下はこのソフトウェアの使い方の紹介です。 confd の紹介 Confd は軽量の構成管理ツールです。 Etcd またはその他のバックエンドをクエリし、それを構成テンプレート エンジンと組み合わせることで、ローカル構成を最新の状態に保つことができます。また、定期的な検出メカニズムも備えており、構成の変更を自動的に再読み込みします。バックエンドでサポートされているデータ タイプには、etcd、consul、vault、環境変数、redis、zookeeper、dynamodb、stackengine、rancher などがあります。ただし、Confd と etcd は通常一緒に使用されます。 当プロジェクトでは、当面バックエンドの連携は必要ありません。テンプレート レンダリングを使用し、統合された構成管理を実行するだけです。 confdg ダウンロード https://github.com/kelseyhightower/confd/releases から confd のバイナリ ファイルをダウンロードします。 ここでは、confdをイメージに配置し、次のステートメントをdockerfileに直接追加する必要があります。
confd設定ファイルとテンプレートファイルを作成する 図に示すように、ニーズに応じて複数の構成とテンプレートを作成できますが、それらは互いに対応している必要があります。 例: frontend_domain.toml
構成ファイルとテンプレート ファイルを Dockerfile 内のイメージにコピーします。
実際の設定ファイルを生成するには、entery のシェル スクリプトを実行します。
4. 関連するミドルウェア構成データベース TPaaS のドキュメントを参照し、ローカル マシン上で構成する必要があるホストを構成し、phpmyadmin.tpaas.local にログインします (ユーザー名とパスワードはドキュメントから取得します)。 新しいデータベースを作成し、データベース名をカスタマイズします。ここでの名前は auradb であると仮定します。 以前に作成した Aura 初期化 SQL をダウンロードし、SQL をインポートします。 以下の情報を記録し、後でconfigMapに入力します。
ギットラボ ミドルウェア情報の URL を参照して、GitLab URL を見つけ、Web サイトにログインし、ミドルウェア情報で提供されているユーザー名とパスワードを使用するか、新しいアカウントを作成します。ここで、新しいアカウント「aura」が作成され、パスワードは「xxxxx」になります。それを記録し、後で configMap に配置します。 Maven プライベート サーバー (Nexus リポジトリ OSS) ミドルウェア情報のURLを参照して、アドレスとユーザー名とパスワードを見つけてログインします。 次の 2 つのウェアハウスを作成します (作成時に、デプロイメント ポリシー パラメータでアップロードを許可するを選択します)
匿名アクセス許可を有効にします。すでに有効になっている場合は無視してください。ユーザーを作成し、ユーザーのアカウントとパスワードを記録します。これらは後で configMap に入力されます。 クラウドストレージ(minio)
5. 二重ドメイン名変換民営化された顧客の環境は内部環境と外部環境に分かれているため、プラットフォームがアクセスするドメイン名も内部ドメイン名と外部ドメイン名に分かれています。内部ドメイン名はサービス呼び出しに使用され、外部ドメイン名はユーザーによる直接アクセスに使用されます。デュアルドメイン名変換の重要なポイントは、どのサービスが内部サービスによってのみ呼び出され、どのサービスがユーザーが直接呼び出す必要があるかを分類することです。明確な分析の後、対応するキー値を configMap に直接追加し、Confd 構成を変換して関連するドメイン名に適合させます。たとえば、フロントエンド ドメイン名の構成は Confd セクションに指定されています。 6. K8Sオーケストレーションファイルイメージ ファイルが生成されたら、次のステップは K8S オーケストレーション ファイルを書き込むことです。その後、イメージを K8S プラットフォームにデプロイできます。 以下の配置ファイルを設定する必要があります
構成マップ その主な機能は、設定する必要のあるパラメータをここに置き、それをレンダリング設定のためにイメージ内のconfdに渡すことです。 永続ボリュームクレーム 主にファイルやディレクトリを外部にマウントするために使用されます。ここでは、複数のビルドノードが SDK を共有してスペースを節約できるように、Android SDK をマウントするために使用されます。 JenkinsSlaveイメージはマウントされたPVCをAndroid SDKの入力として使用します。 複数の JenkinsSlave ノードは、ストレージ スペースを節約するために、同じ PVC 内の Android SDK を共有します。 PVC マウント ディレクトリは /usr/local/aura/auraCfs です。他のディレクトリ (/mnt/auraCfs など) にマウントし、/usr/local/aura/auraCfs をソフト リンクとして使用して、そのディレクトリを指すこともできます。 SDK ファイルを解凍します。ファイルは 2 つあります。
両者の違いは、Gradle キャッシュが約 14G です。キャッシュは使用しても使用しなくてもかまいません。使用しない場合は、ネットワークから自動的にダウンロードされ、最初のビルドの時間が延長されるだけです。 手順は次のとおりです。
IV.体験の概要この記事では主に、Aura プラットフォーム (Android コンポーネント プラットフォーム) を Docker イメージに分割し、そのイメージをコンパイルしてデプロイするプロセスについて説明します。 民営化の展開に関する主なポイントは次のとおりです。
これらのポイントを押さえておけば、同様のニーズを持つ他のプラットフォームでも、民営化・展開をスムーズに実行できると考えています。 |
<<: モバイルコンピューティングの需要が高まっているのはなぜですか?
>>: ファーウェイクラウド最高製品責任者の郭偉関氏:フルスタックのクラウドネイティブ技術が金融業界のイノベーションのボトルネック打破に貢献
SEO ランキングが必要なウェブサイトの場合、ウェブサイトのキーワードの位置付けが初期段階で不正確で...
昨夜、Amazon AWSは中国事業を売却しておらず、中国の顧客に対してAWSサービスを引き続き提供...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています今、劇場で...
タオバオは、現在では一般的に使用されているオンライン収益方法です。操作が簡単で、利益が直接得られます...
[51CTO.com クイック翻訳] クラウド コンピューティングにより、重要なサービスを提供する ...
この世で唯一変わらないものは変化です。誰もがこの正しいナンセンスに同意すると思いますが、更新を除いて...
昨日、Xiaoxiao は「現在の SEO 担当者の見解を変える必要がある」というタイトルの記事を公...
[51CTO.comより引用] 近年、デジタルトランスフォーメーションの潮流が世界を席巻し、さまざま...
ご存知のとおり、ソフト記事はオンラインプロモーションにおいて非常に重要な役割を果たします。高品質のソ...
カザフスタンのホスティング会社である pskz は、2003 年 8 月に設立されました。主な事業は...
イベント ソーシング、結果整合性、マイクロサービス、CQRS など、現代の開発者にとって馴染みのある...
現在、超老舗ブランドのバーストでは VPS プロモーションを実施しており、すべての VPS が 50...
伝統的な企業がインターネットに参入し、独立したB2Cショッピングモールを設立する際に遭遇する問題と困...
hungryvm はまったく新しいビジネスです。現在は主に 1Gbps ポートを備えたヨーロッパのデ...
Natyun は主に米国と香港で VPS サービスを提供しています。米国の VPS は主に Cera...