コンテンツにスキップ
JelinaJelina Documentation技術ドキュメント
公式サイトに戻る

入門ガイド

Jelina プラットフォームは、複数のデバイスへコードを安全にデプロイするための、デバイス側、サーバー側、クライアント側のソフトウェアで構成されます。

基本的な考え方はシンプルです。デバイスに OS(JelinaOS)をインストールすると、すべてのデバイスとアプリケーションを JelinaCloud ダッシュボードから管理、監視、更新できます。JelinaCloud はアプリケーション設定を独立した単位で保存してフリートへ配信し、アプリケーションのデプロイを容易にします。

Jelina の内部動作を詳しく知りたい方のために、このガイドでは一般的な Jelina 構成のコンポーネントとワークフローを説明し、よくある疑問に答えるために十分な情報を提供します。

準備ができたら、プロジェクトを開始してください。

image

Jelina エコシステムのデバイスは JelinaOS を実行します。これは標準ディストリビューションの Debian または Ubuntu に基づく最小構成のホスト OS で、コンテナエンジン Docker が同梱されています。ホスト OS は、デバイス上で Jelinvisor(デバイス管理エージェント)、コンテナ化されたサービス、プログラムサービスを起動します。Jelina の各ベース OS は、デバイスのアーキテクチャに対応する任意の Docker イメージと Linux ELF プログラムを実行できます。ベース OS はホスト OS とカーネルを共有しますが、それ以外は独立して動作します。コンテナサービスを設定することで、特権モードでの実行、ハードウェアへの直接アクセス、カーネルへのモジュールの読み込みも可能です。Jelina のデバイスマネージャーは専用コンテナ内で動作するため、アプリケーションがクラッシュしてもデバイスの動作を継続できます。

Jelina は、すべての構成要素を更新できることを目指しています。JelinaOS のシステムとカーネルは別々に更新され、それぞれ独立した A/B パーティションを持ちます。デバイスが A パーティションで動作している場合、更新時には目標バージョンを B パーティションに書き込み、成功後に B へ切り替えて更新を完了します。更新に失敗した場合や、切り替え後に不明なエラーが発生した場合は、A を維持するか A にロールバックします。Jelina は常に少なくとも一方のパーティションを使用可能に保ち、アプリケーションとデータの安全を確保します。

JelinaOS を実行するすべてのデバイスは、開発用・本番用を問わずシステムとカーネルを更新できます。JelinaCloud ダッシュボードからデバイスの更新を制御できます。

デバイスを自分のフリートに追加するには、次のようにします。

まず JelinaOS イメージをダウンロードします。ダウンロードのたびに、一意のデバイス設定がイメージに書き込まれます。すでに OS イメージがある場合は、設定ファイルのみをダウンロードし、提供ツール jelina_flash_stream(未公開)でイメージに書き込むこともできます。設定ファイルには、フリートの基本設定、フリートに紐付く一意の登録キー、登録先アドレスが含まれます。

JelinaOS イメージをデバイスに書き込んだら、ネットワークに接続できることを確認してください。起動時にデバイスマネージャー Jelinvisor が起動し、追加の操作なしで自動登録を完了します。Jelinvisor はデバイス設定に従って対象フリートに登録し、以後のクラウド通信に使用する一意の API Key を生成します。登録が成功すると、クラウドは API Key を保存して登録キーを削除し、登録デバイスの情報を記録します。ダッシュボードでデバイスを確認できるようになります。

フリートに登録された後、利用可能な Release がある場合、デバイスはフリートの最新 Release を自動インストールします。フリートの Release を固定している場合は、その Release をインストールします。

Release は、複数のコンテナアプリケーションとネイティブ(Program)アプリケーションをまとめたものです。設定は docker-compose2.0 に基づき、コンテナ以外のアプリケーションも設定できるように拡張されています。開発者と非開発者の両方に対応しており、compose 設定を手動で記述するか、画面のサービス一覧に情報を入力して生成できます。設定後、コンテナイメージとプログラムをアップロードして Release を公開すると、フリート内のすべてのデバイスにデプロイできます。

実行環境が不足するとネイティブアプリケーションが正常に動作しない場合があります。そのため、Increment(差分パッケージ)をアップロードしてデバイスの実行環境を設定する仕組みを用意しています。

注意:Increment はデバイスから JelinaCloud にアップロードされます。まず 1 台のデバイスで実行環境を設定し、ダッシュボードでそのデバイスを選択して Increment をアップロードしてください。デバイスは自身の実行環境をパッケージ化し、所属フリートへアップロードします。

Increment を適用するには、Release に関連付ける必要があります。デバイスは Release のインストール前に、関連付けられた Increment をインストールして、アプリケーションに適切な実行環境を用意します。理論上、JelinaOS は差分パッケージによってあらゆる種類のアプリケーションを実行でき、その可否は Increment の内容によって決まります。

デバイスはフリート設定に応じた間隔で、クラウドから目標状態を取得します。目標状態には、実行すべき Release、JelinaOS、Kernel、Jelinvisor の各バージョン、適用すべき Increment、デバイス設定、サービス変数が含まれます。

デバイスは 30 秒ごとに自身の状態を報告し、デバイス情報や実行中のサービス情報などを送信します。同時に、持続接続を通じてデバイスログを JelinaCloud にアップロードし、システムとアプリケーションの動作を確認できるようにします。

デバイスのダッシュボードでは、実行中のサービス、予定されている更新、デバイスログなどの詳細情報を確認できます。この画面で、デバイスとアプリケーションのライフサイクルを制御することもできます。

image-20220728164831644

デバイスやアプリケーションの異常を速やかに把握できるよう、デバイスのオフライン、サービスの異常、デバイスの異常、リソース使用量の異常が発生した際は、所属フリートの全メンバーへ自動通知します。リソース使用量の警告しきい値は変更できます。同じ異常が 3 時間以内に繰り返し発生した場合、JelinaCloud の通知は 1 回のみです。

image-20220728170901640

Jelina でテスト・開発環境を統一し、迅速にデプロイしてアプリケーションの機能をテストできます。デバイスログから実機上の動作を素早く分析し、プロジェクトの開発と現場導入を加速できます。