Textus Samples 01: 最小実行モデル
前提
本記事では、📄 Textus Samples: Launcherとインストール の手順で準備した環境を使います。
-
textus-tutorial-0.1.1を展開済み -
cozy/cncf/textuslauncher をインストール済み -
各 launcher の runtime を確認済み
download 手順は前提記事で扱っているため、ここでは再掲しません。
概念の焦点
-
Component は runtime に登録される単位、Service は操作のまとまり、Operation は実行される振る舞いです。
-
--project-dev .は、packaged CAR ではなく現在の sample directory を開発対象として読む指定です。
サンプルディレクトリ
samples/01-minimal
samples/01.a-invocation-source-lab
samples/01.b-startup-shapes-lab
samples/01.c-builtin-and-help-lab
実行
まず、selector を直接指定して Operation を実行します。
$ cd samples/01-minimal
$ cncf dev command --project-dev . minimal.main.hello
--project-dev . は、このディレクトリを開発中 component として読む指定です。 minimal.main.hello は minimal component の main service にある hello operation を選択します。
同じ確認をまとめて実行する補助スクリプトとして bash run.sh があります。
$ bash run.sh
コマンドの読み方
cncf dev command は、開発中の component をコマンドとして起動するモードです。引数に指定した minimal.main.hello は <component>.<service>.<operation> の形で、起動した component の中から呼び出す operation を指定します。
run.sh と packaged invocation を比較する時は、出力ではなく component の読み込み元に注目します。前者は開発 classpath、後者は component directory に置いた jar を使います。
期待結果
message: Hello CNCF
補助 lab では、同じ minimal.main.hello を development source、startup shape、builtin/help surface から確認します。
出力の読み方
message: Hello CNCF は、selector が runtime に解決され、Operation が実行されたことを示す確認値です。
この段階では、永続化、server、client、job は扱いません。後続記事では、同じ selector model を別の実行形態で確認します。
よくあるつまずき
-
selector not foundが出る場合は、component name と service name の大文字小文字ではなく CLI selector 形minimal.main.helloを確認します。 -
開発中の class を読ませたい時は
--project-dev .が必要です。packaged component の検証とは目的が違います。
CNCFエンジン上の意味
CNCF engine の selector は component.service.operation です。
後続の CRUD、CQRS、Job、Subsystem のサンプルも、この selector と実行単位を前提にしています。
参照
用語集
- Cloud Native Component Framework (CNCF)
-
Cloud Native Component Framework(CNCF)は、クラウド・アプリケーションを構成するコンポーネントを、単一かつ一貫した実行モデルで実行するためのフレームワークです。 Component / Service / Operation という構造を中核とし、command、server(REST / OpenAPI)、client、script といった異なる実行形態から、同一の Operation を再利用できることを特徴とします。 ログ、エラー処理、設定、配備といったクラウド・アプリケーションに必要な品質属性をフレームワーク側に集約することで、コンポーネントはドメイン・ロジックの実装に集中できます。 CNCF は、文芸モデル駆動開発および AI 支援開発を前提に、「何を実行するか」と「どのように呼び出すか」を分離するための実行基盤として設計されています。
- コンポーネント (Component)
-
責務・契約・依存関係を明示的に定義し、再利用可能で交換可能な単位としてカプセル化されたソフトウェア構成要素。論理モデルでは抽象構造単位として、物理モデルでは実装・デプロイメント単位として扱われる。