MUGIJIRU.JP

Webエンジニアの雑談ブログ

マイクロサービスアーキテクチャ 用語メモ - 2

前回に引き続き、用語集です。
なかなか難しい単語も多かったです。

継続的インテグレーション

通称CI。ソフトウェア開発における習慣の名前。
エクストリーム・プログラミングのプラクティスの一つ。

プロジェクトメンバーがそれぞれ開発した結果を頻繁に結合して
定期的にビルドやテストを行うこと。
それによって、問題に早期に気づくことができる。
散々それぞれ作り尽くして、いざ結合してみたらいろんなバグや調整が必要になった
なんてことが起こらなくなる。

頻繁にビルドやテストを行うことになるので
できるだけ処理を自動化しようとしたくなる。そこで出てくるのがCIツール。
JenkinsとかCircleCIとか。

マイクロサービスだと相互の影響確認とかをする上で
全体でCIしないと大変そうだな、という印象で、なるほどーと思いました。

コンシューマ

消費者、需要者、購入者、などの意味を持つ英単語
業務用・企業向けと対比して消費者向け みたいな使い方をされる

マイクロサービスにおいて使う側と使われる側とかでよく出てくる気がします。

ビジネスロジック

業務ソフトウェアの中で、具体的な業務で扱う様々なエンティティ(実体)
たとえば担当者、商品、顧客、在庫などを表現し、
また、それらの関係や処理の方法、業務の流れなどをプログラムコードとして実装した部分。
アプリケーション固有の処理やルールを記述したもの。
フレームワークなどの記述以外はほぼ全部ビジネスロジックか?

サブスクライバ

通知メッセージを受け取るユーザ(この場合はサービスか)

パブリッシュ/サブスクライブ

イベントを発行する -> パブリッシュ
それを購読する -> サブスクライブ
みたいな捉え方で外れないんじゃないかと思ってます。

リモートプロシージャコール

RPC。
ローカルで呼び出しをして別のリモートサーバで実行をする。
ローカルで関数呼び出ししていると見せかけて実は実行しているサーバはリモートであるとか。

実装上は意識しないで済むけど、どこでやっているかは隠蔽されるので
扱いかたを間違えると地獄という話が腑に落ちました。

ペイロード

伝送されるデータ全体のうち、伝送処理のための管理情報(ヘッダやメタデータなど)を除いたものにあたる

リクエスペイロード、という意味が超よくわかりました

整列化 マーシャリング

異なる2つのシステム間で、データを交換できるようにデータを操作する処理
違う言語同士の変換とか。
PHPの変数-> json に、みたいなイメージ?

非整列化 アンマーシャリング

上記の逆で、json -> PHPの変数に戻す みたいな話

ハイパーメディア

コンテンツに様々なデータ=テキスト/画像/動画/音声などのリンクが含まれる概念

ハイパーメディアコントロール、なるほどなるほどって感じ。

セマンティクス

「意味」「意味論」
非常に捉え方が難しい概念。
実装において「これが正しい」と判断するための基準。
シンタックスと対で利用されることが多い?
protected function を定義したとして
シンタックス的には誤字脱字はないから正しい、としても
そのメソッドがprotected ではなく public である / privateであるべき
といった判断がされる場合は、セマンティクス的にはダメ。みたいなイメージか。

セマンティックバージョニング

バージョンの付け方。
1.2.3というバージョンがあるとして
左から順番にメジャー、マイナー、パッチバージョンを表している。
APIの変更に互換性のない場合はメジャーバージョンを、
後方互換性があり機能性を追加した場合はマイナーバージョンを、
後方互換性を伴うバグ修正をした場合はパッチバージョンを上げる。


以上です。
マイクロサービスだと、やっぱりパブリッシュ / サブスクライブ
とか、セマンティクスとかの用語が体感に落ちていないと文脈がわかりづらいということがよくわかりました。
(多分、この概念がわかっていないとメッセージブローカーとか言われてもハァ!?ってなる)

だいたい読めるようになってきたので
次は続かないかもしれません。