「データ指向アプリケーションデザイン」第1部 用語集

## 第1章 信頼性、スケーラビリティ、メンテナンス性に優れたアプリケーション

### メッセージキュー(Message queue)

> メッセージキューは、サーバーレスおよびマイクロサービスアーキテクチャで使われる非同期サービス対サービスの通信形態です。メッセージは、処理され、削除されるまではキューに格納されています。各メッセージは、単一のコンシューマーによって一度だけ処理されます。メッセージキューを使うことで、重い処理の分割、バッファーまたはバッチ処理、およびスパイクの多いワークロードを円滑にすることができます。

https://aws.amazon.com/jp/message-queue/

### RAM(Random Access Memory)

> RAMとは、コンピュータのメモリ装置の一種で、データの消去・書き換えが可能で、装置内のどこに記録されたデータも等しい時間で読み書き（ランダムアクセス）することができる性質を持ったもの。現代のコンピュータのほとんどは半導体記憶素子を用いたRAMを主記憶装置（メインメモリ）として用いられるため、メインメモリのことをRAMと呼ぶことが多い。

http://e-words.jp/w/RAM.html

### RAID(Redundant Array of Inexpensive Disks)

> RAID（Redundant Arrays of Inexpensive Disks、または Redundant Arrays of Independent Disks、レイド）は、複数台のハードディスクを組み合わせることで仮想的な1台のハードディスクとして運用し冗長性を向上させる技術。

https://ja.wikipedia.org/wiki/RAID

### ネットワーク帯域

> 帯域幅とは、ネットワークコネクション、あるいはネットワークに接続するインタフェースがサポートするデータ転送速度を指す。通常はビット／秒（bps）で表されるが、バイト／秒（Bps）という単位が用いられることもある。

https://techtarget.itmedia.co.jp/tt/news/0803/28/news01.html

### サンドボックス環境

> サンドボックスとは、もともとは砂場・砂箱といった意味であるが、IT用語としては、プログラムがシステムの他の部分に悪影響を及ぼすことのないように設計された環境のことである。
ソフトウェア開発においては、開発中のプログラムにバグが含まれていた場合などに、システム全体がバグの影響を受けないように用いられる。セキュリティの分野では、外部で作られたソフトウェアが万が一不正なプログラムを含んでいても、システムに侵入したり不正操作したりされないように、プログラムを置く制限された場所をサンドボックスという。

https://www.weblio.jp/content/サンドボックス

### テレメトリ(Telemetering)

> テレメトリングとは、遠隔地にある計測器などのデータを、通信回線を使って収集するシステムのことである。 遠隔のという意味の「tele」と、計測するという意味の「metering」が合わされてできた言葉である。

https://www.weblio.jp/content/テレメトリング

### ファンアウト

> デジタル回路では、ひとつの出力端子に複数の後段回路の入力がつながることはごく普通に行われる。出力端子につながれた入力端子の数のことを、出力端子を扇の要に見立てて、ファン・アウトと呼ぶ。

https://www.weblio.jp/wkpja/content/デジタル回路_ファン・アウト

### SLO, SLA

> SLAはService・Level・Agreementの略で、どの程度の(Level)サービス提供(Service)を合意(Agreement)するかという保障契約の名称です。

> SLOはService・Level・Objectiveの略でどの程度の(Level)サービス提供(Service)を目標値として設定するか(Objective)というサービスの目標値の名称です。

https://geekly.co.jp/column/cat-technology/1904_007/

### ステートレス, ステートフル

https://www.xenonstack.com/insights/stateful-and-stateless-applications/

### スループット(Throughput)

> スループットとは、コンピュータシステムの性能を量的に図る指標の一つで、時間当たりの業務処理量を指す指標のことである。
スループットでは、単純にCPUの処理能力だけではなく、コンピュータに関連する部品やソフトなどを含めた上で、コンピュータ全体としての処理能力を指す。

https://www.weblio.jp/content/スループット

### キャパシティプランニング(Capacity planning)

> 計画・開発中あるいは稼働中のITシステムに求められるサービス需要／サービスレベルからシステムリソースの処理能力や数量などを見積もり、最適なシステム構成を計画すること。

https://www.itmedia.co.jp/im/articles/0908/24/news085.html

## 第2章 データモデルとクエリ言語

### ポリグロットパーシステンス(Polyglot persistence)

> マイクロサービスにおいては、もちろん従来のシステムと同様に１種類のデータベースだけを使うこともできますが、その特性を最大化するため「データの特性ごとに適材適所のデータベースの種類を使おう」というコンセプトが生まれました。
それが「ポリグロット・パーシステンス」です。

https://jp.drinet.co.jp/blog/datamanagement/polyglotpersistence

### インピーダンスミスマッチ

> Javaのようなオブジェクト指向の言語でリレーショナルデータベースを扱う際に、もっとも面倒な作業はオブジェクトとリレーショナルデータベースのマッピング作業です。これは両者の設計思想の違いから生じており、この問題を「インピーダンスミスマッチ」といいます。

https://thinkit.co.jp/cert/article/0606/13/1/2.htm

### データモデル

https://www.lucidchart.com/pages/database-diagram/database-models#section_0


### エミュレート(emulate)

> ある機械部品やソフトウェアを動作させるのに、オリジナルのシステムを用意するのが難しい場合に、オリジナルと全く同じ動作をするより簡便なシステムを用意することがある。この装置をエミュレータと言う。エミュレータの上で、動作させたいソフトウェアや機械部品をオリジナルと全く同じように機能させられる。
語源は英語の"emulate"（エミュレート：模倣する・真似をする）からきており、そのとおり異なるハードウェアやソフトウェア環境を模倣・物真似をさせる技術である。模倣対象のシステムを近似や推論でモデル化する場合をシミュレート（simulate）と言う。

https://ja.wikipedia.org/wiki/エミュレータ

###スキーマオンリード(スキーマレス), スキーマオンライト

> Schema on read differs from schema on write because you create the schema only when reading the data. Structured is applied to the data only when it’s read, this allows unstructured data to be stored in the database. Since it’s not necessary to define the schema before storing the data it makes it easier to bring in new data sources on the fly.

> Schema on write is defined as creating a schema for data before writing into the database. If you have done any kind of development with a database you understand the structured nature of Relational Database(RDBMS) because you have used Structured Query Language (SQL) to read data from the database.

https://www.thomashenson.com/schema-read-vs-schema-write-explained/

### ヘテロジニアス(Heterogeneous)

> ヘテロジニアス・コンピューティング（Heterogeneous computing）とは異なる種類のプロセッサを組み合わせて構築したコンピュータシステム上で演算を行なうことである。用途に応じて適したプロセッサに処理を分担させることによって全体的な効率を高める。

https://ja.wikipedia.org/wiki/ヘテロジニアス・コンピューティング

### データローカリティ

### インターリーブ(Interleave)

> インターリーブまたはインターリービング（英: Interleaving）は計算機科学と電気通信において、データを何らかの領域（空間、時間、周波数など）で不連続な形で配置し、性能を向上させる技法を指す。

https://www.weblio.jp/content/インターリーブ

### ラウンドトリップ(Round trip)

RTT(Round Trip Time)とは、信号を発してから応答が返って来るまでの時間である。
RTTは、主に電気回路、またはTCP（Transmission Control Protoco）などにおいて指標の一つとして用いられる。TCPでは、ネットワーク上の相手側ホストからリクエストの応答が戻ってくるまでの時間を指し、ネットワークの応答速度を左右する重要な指標となる。

https://www.weblio.jp/content/Round+Trip+Time

### 宣言型, 命令型(Declarative, Imperative)

https://tylermcginnis.com/imperative-vs-declarative-programming/

### 関係代数(Relational algebra)

> 関係代数（かんけいだいすう、リレーショナル代数、英: relational algebra）は、関係データベースの関係モデル （リレーショナルモデル）において、集合論と一階述語論理に基づいて、関係 （リレーション、表、テーブル）として表現されたデータを扱う、コンピュータ科学における代数的な演算の体系である。
関係として表現されたデータに対して行う演算体系としては、関係論理（関係計算）とこの項目で説明する関係代数の2種類が知られている。 関係代数と関係論理は、主にエドガー・F・コッドによって考案され、その後コッドを含めた関係データベース（関係モデル）の研究者たちが発展させてきた。
現在では、関係代数の演算子としては、和、差、交わり (交差) 、直積、制限 (選択) 、射影、結合、商の8種類が言及されることが多い。 ただし属性名変更や拡張、要約などこの他の演算子も考案されている。

https://ja.wikipedia.org/wiki/関係代数_(関係モデル)

## 第3章 ストレージと抽出

### ドメイン固有言語(DSL: Domain Specific Language)

> DSLは、ある分野に固有の語彙や語法を使用して事象を表現できるよう作られたプログラミング言語です。この言語を使えば、コードは当該分野の専門家にとって読みやすく理解しやすくなります。その言語を使うことで、専門家自身が自らコードを書くこともできれば理想でしょう。DSLの中でも特に古くから存在するのは、ソフトウェア開発者や科学者をターゲットとしたDSLです。UNIXの環境設定ファイルなどで使われる「ミニ言語」や、LISPのマクロの力を利用して作成された言語などは、その中でも古い例と言えるでしょう。
> DSLは、大きく内部DSLと外部DSLに分類することができます。

> 内部DSL: 内部DSLは、汎用のプログラミング言語の書き方を工夫して、見かけ上の構文を自然言語に近づけた言語です。内部DSLの作成には、糖衣構文(syntactic sugar)を豊富に持ち、フォーマットの自由度の高い言語(Ruby、Scalaなど)の方が、そうでない言語(Javaなど)よりも向いていると言えます。内部DSLでは、ホスト言語(基になった言語)のAPI、ライブラリ、ビジネスコードなどはラッピングされるのが普通です。ラッパが提供され、技術的知識がなくてもその機能を用意に利用できるようにしてあるのです。また、コードをファイルに書けば、そのファイルを使って即、実行できるのが普通です。実装の仕方や分野によって言語の用途は様々に異なってきます。用途の例としては、データ構造の構築、依存関係の定義、プロセスやタスクの実行、他のシステムとの通信、ユーザ入力のバリデーションなどが挙げられます。内部DSLの構文はホスト言語の構文の制約を受けます。ホスト言語での書き方を工夫してDSLを作るのに役立つパターンは多数存在します。例えばエクスプレッションビルダ、メソッドチェーン、アノテーションなどです。ホスト言語が再コンパイルを必要としない言語であれば、内部DSIは非常に簡単こ作成でき、対象ビジネス分野の専門家にとって使いやすいものになるでしょう。

> 外部DSL： 外部DSLは、汎用のプログラミング言語とはまったく別の構文を持ったDSLです。グラフイカルな外部DSL もありますが、テキストベースの外部DSLの方が一般的です。テキストベースの外部DSLのコードは、レキサ一、パーサ、モデルトランスフォーマ、ジェネレータといったポストプロセッシングのためのツール群を組み合わせることによって処理されます。通常の場合外部DSLは読み込み時に内部モデルに変換され、後続処理に使われます。EBNFなどの文法(grammar)を定義するのが有効でしょう。文法は、エディ夕、ピジュアライザ、パーサジェネレータ等のツール群が扱うパーツを生成するための起点となります。シンプルなDSLならば、たとえば正規表現を利用した「手作りの」パーサなどでも十分に対応ができますむただし、手作りのパーサは、あれこれ欲張ると非常にわかりにくく、使いにくくなってしまうので、openArchitectureWare、ANTLR、SableCC、AndroMDAなど、元々文法定義またはDSLのために作られた既存のツールを探す方が合理的でしょう。XMLの「方言」を作り、それを外部DSLとする方法もよく使われますが、特に技術知識のない人にとってコードが読みにくくなりやすいのが難点です。

https://プログラマが知るべき97のこと.com/エッセイ/ドメイン特化言語/

### ストレージエンジン, データベースエンジン

> データベースエンジン(Database Engine)あるいはストレージエンジンはデータベース管理システム (DBMS)がデータベースに対しデータを挿入、抽出、更新および削除(CRUD参照)するために使用する基礎となるソフトウェア部品。データベースエンジンを操作する際、DBMS固有のユーザインタフェースを用いる方法と、ポート番号を通じて行う方法がある。

https://ja.wikipedia.org/wiki/データベースエンジン

### ハッシュマップ(HashMap)

> Let’s quickly go over what a HashMap is.
Simply speaking it is a Collection object which uses Key and Value pairs, where both parameters are objects declared on creation. Each Key maps to a corresponding Value. E.g. the key “foo” maps the value “bar”.

https://medium.com/@rrfd/what-are-hashmaps-you-might-be-asked-these-in-an-interview-examples-in-java-e3cf998829d4

### バイトオフセット

> 計算機科学において、オフセットは配列または他のデータ構造オブジェクトの中の、所定の要素または位置までの、先頭からの距離を示す整数である。オブジェクト中のすべての要素が同じ大きさである場合だけ、距離の概念は有効である(典型的にはバイトまたはワードで示される。)。

https://ja.wikipedia.org/wiki/オフセット_(コンピュータ)

### ディスクシーク

> シーク（seek）とは、物理的な駆動部分のあるコンピュータの記憶装置（FDD、MOやHDD、CD・DVDなどの光ディスク）において、ヘッドまたはピックアップレンズが、書き込み・読み取りの目標位置まで移動すること。これによりランダムアクセスが可能となる。

https://ja.wikipedia.org/wiki/シーク_(コンピュータ)

### コンパクション処理(Compaction)

> データ圧縮【data compression／data compaction】とはデータの性質を保持したまま容量を削減する処理のこと。
大量のファイルを転送する際の時間短縮や、記憶領域の節約などのために圧縮する。複数のファイルを1つにまとめる圧縮方法もある。圧縮されたデータを元の状態に復元することを『解凍』や『展開』などと呼ぶ。

https://homepage-sakusei-kaisha.com/it-yougojisho/kaihatsu-gijutsu/gijutsu-technology-ka/de-taasshuku.html

### シーケンシャルな書き込み, ランダムな書き込み



### フラグメンテーション(Fragmentation)

> 主記憶やハードディスクのような記憶装置において不連続な未使用領域が生じる現象、またはその領域のこと。
ディスク式の記憶装置でファイルの生成と削除を繰返していると、記憶領域内に連続した未使用領域が少なくなっていき、ひとつのデータが飛び飛びの領域に記録されていく。断片化されたファイルを読み取るには、ディスクヘッドを通常より多く動かすことになるため順次アクセスの効率が低下する。
また、主記憶においてはメモリ空間を区画してプログラムに割り当てた結果、不連続の未使用領域が生じることがある。未使用領域の合計が実行するタスクより大きくても不連続なためプログラムをロードすることができず、タスクを実行に使えない領域となっている状態を表す。

https://www.itpassportsiken.com/word/フラグメンテーション.html

### インメモリツリー

### ブルームフィルター(Bloom filter)

http://kakts-tec.hatenablog.com/entry/2017/06/21/004248

### インクリメンタル(Incremental)

### カスケード(Cascade)

### ルックアップ(Lookup)

> 計算機科学におけるルックアップテーブル(英: Lookup table)とは、複雑な計算処理を単純な配列の参照処理で置き換えて効率化を図るために作られた、配列や連想配列などのデータ構造のことをいう。例えば大きな負担がかかる処理をコンピュータに行わせる場合、あらかじめ先に計算できるデータは計算しておき、その値を配列（ルックアップテーブル）に保存しておく。コンピュータはその都度計算を行う代わりに配列から目的のデータを取り出すことによって、計算の負担を軽減し効率よく処理を行うことができる。高価な計算処理や入出力処理をテーブルルックアップで置き換えた場合、処理時間を大きく削減することができる。

> 他にも、あるキーワードを基にあるデータを取り出すとき、その対応を表としてまとめたものもルックアップテーブルといえる。テーブルの作成方法には、コンパイル前に計算したものを静的に確保したメモリに格納しておく方法や、プログラムの初期化処理中に計算（メモ化）やプリフェッチを行っておく方法がある。また、入力された値がルックアップテーブルにあるか調べることで入力値のチェックを行ったり、プログラミング言語によっては、ルックアップテーブルに関数ポインタ（あるいはラベルへのオフセット）を格納しておいて入力に応じた処理を行ったりするといった応用的な使い方をされることもある。

https://www.weblio.jp/content/ルックアップテーブル#

### ホップ(Hop)

> A hop is a computer networking term that refers to the number of routers that a packet (a portion of data) passes through from its source to its destination.

https://www.lifewire.com/what-are-hops-hop-counts-2625905

### インデックス

https://www.red-gate.com/simple-talk/sql/learn-sql-server/sql-server-index-basics/
https://www.guru99.com/clustered-vs-non-clustered-index.html

### インメモリデータベース

> インメモリデータベースとは、非リレーショナルデータベースの一種です。データをディスクや SSD に保存するデータベースではなく、データストレージ用のメモリに主に依存します。インメモリデータベースは、ディスクにアクセスする必要性を除くことによって、最小限の応答時間を達成するよう設計されました。 すべてのデータはメインメモリにのみ保存および管理されているので、処理やサーバー障害によって失われてしまうリスクがあります。インメモリデータベースは、すべてのオペレーションをログに保存したりスナップショットを取得したりすることで、データを存続することができます。
インメモリデータベースは、ゲームリーダーボード、セッションストア、リアルタイム分析などの、マイクロ秒の応答時間が必要でいつでもトラフィックが急増する可能性があるアプリケーションに最適です。 

https://aws.amazon.com/jp/nosql/in-memory/

### インメモリキーバリューストア

### プライオリティキュー(Priority queue)

> Priority Queue is an extension of queue with following properties.
1. Every item has a priority associated with it.
2. An element with high priority is dequeued before an element with low priority.
3. If two elements have the same priority, they are served according to their order in the queue.

https://www.geeksforgeeks.org/priority-queue-set-1-introduction/

### アンチキャッシングアプローチ(Anti-caching)

> The traditional wisdom for building disk-based relational database management systems (DBMS) is to organize data in heavily-encoded blocks stored on disk, with a main memory block cache. In order to improve performance given high disk latency, these systems use a multi-threaded architecture with dynamic record-level locking that allows multiple transactions to access the database at the same time. Previous research has shown that this results in substantial overhead for on-line transaction processing (OLTP) applications.

>The next generation of main memory DBMSs seek overcome these limitations with a different architecture based on main memory resident data. To overcome the restriction that all data fit in main memory, we propose a new technique that we call anti-caching. An anti-caching DBMS reverses the traditional hierarchy of disk-based systems: all data initially resides in memory, and when memory is exhausted, the least-recently accessed records are collected and written to disk.

https://hstore.cs.brown.edu/documentation/deployment/anti-caching/

### 不揮発性メモリ(Non-volatile memory)

> Definition - What does Non-Volatile Memory (NVM) mean?
Non-volatile memory (NVM) is a type of computer memory that has the capability to hold saved data even if the power is turned off. Unlike volatile memory, NVM does not require its memory data to be periodically refreshed. It is commonly used for secondary storage or long-term consistent storage.

> Non-volatile memory is highly popular among digital media; it is widely used in memory chips for USB memory sticks and digital cameras. Non-volatile memory eradicates the need for relatively slow types of secondary storage systems, including hard disks.
Non-volatile memory is also known as non-volatile storage.

https://www.techopedia.com/definition/2793/non-volatile-memory-nvm

### ドリルダウン(Drill down)

> ドリルダウンとは、多次元データ分析の手法のうち、データ集計の階層レベルを下げていき集計項目を参照し分析する手法のことである。
ドリルダウンは、日本語では「掘り下げる」という意味である。掘り下げる対象は集計結果であり、データ分析の過程で集計結果の下位レベルのデータ内容を確認してより精緻な分析を行う場合に使う。

https://www.sophia-it.com/content/ドリルダウン

### スライス, ダイス(Slice, Dice)

> The main difference between slice and dice in data warehouse is that the slice is an operation that selects one specific dimension from a given data cube and provides a new subcube while the dice is an operation that selects two or more dimensions from a given data cube and provides a new subcube.

https://pediaa.com/what-is-the-difference-between-slice-and-dice-in-data-warehouse/

### GoogleのDremelの発想

> Dremel is a scalable, interactive ad-hoc query system for analysis of read-only nested data. By combining multi-level execution trees and columnar data layout, it is capable of running aggregation queries over trillion-row tables in seconds. The system scales to thousands of CPUs and petabytes of data, and has thousands of users at Google.

https://research.google/pubs/pub36632/

### スタースキーマ(ディメンジョンモデル), スノーフレークスキーマ

> In the Star Schema, the center of the star can have one fact table and a number of associated dimension tables. It is known as star schema as its structure resembles a star. The star schema is the simplest type of Data Warehouse schema. It is also known as Star Join Schema and is optimized for querying large data sets.

> A Snowflake Schema is an extension of a Star Schema, and it adds additional dimensions. It is called snowflake because its diagram resembles a Snowflake.
The dimension tables are normalized which splits data into additional tables.

https://www.guru99.com/star-snowflake-data-warehousing.html

### CPUサイクル

https://www.encyclopedia.com/computing/dictionaries-thesauruses-pictures-and-press-releases/cpu-cycle

### L1キャッシュ

> CPUのキャッシュは、L1が32KB、L2が256KB、L3が2MBという風に多層に分かれている

https://gigazine.net/news/20160912-cpu-cache-level/

### チャンク(Chunk)

> チャンクとは、大きな塊、ぶつ切り、大量（の）、などの意味を持つ英単語。ITの分野では、大きなデータを分割して制御情報を付加したひとまとまりの断片などのことをチャンクと呼ぶ。

http://e-words.jp/w/チャンク.html

### マテリアライズドビュー(Materialized View)

> データベース管理システムは関係モデルに従うため、ビュー は仮想的な テーブル であり、データベースに対するクエリの結果を表す。ビューを参照または更新すると、その処理はビューの対象となった実際のテーブルへの参照または更新へ変換され、実行される。
マテリアライズドビュー (Materialized View; 体現ビューともいう)はこれとは異なるアプローチを取り、クエリの結果を実際のテーブルにキャッシュする。キャッシュされたデータは元のテーブルが変更されるたびに更新される。そのため、最新でない状態を取得する可能性はあるが、効率的なアクセスが可能になる。特にデータウェアハウスでは実際のテーブルに対して頻繁にクエリを実行することは非常にコストが高いため、マテリアライズドビューが有効である。

https://ja.wikipedia.org/wiki/マテリアライズドビュー

### データキューブ（Data Cube）

> データキューブ（Data Cube）とは、プログラミングにおいて三次元（以上の）配列に格納されたデータであり、時系列の画像データを表していることが多い。画像がカラーであれば配列は四次元であることが多く、画像のX座標、Y座標、時刻、RGBカラープレーンがそれぞれの次元に対応する。多くの高級言語ではデータキューブや高次元配列を内容に関わらずひとつのものとして扱うことができる。そのような言語としてはAPL、IDL、Numerical Python、Perl Data Language があり、プログラマは動画データなどを線型代数学とベクトル算術を使用して簡単に処理することができる。一部の言語（Perl Data Language など）では画像のリストとデータキューブを明確に区別しているが、多くの場合区別はない。

https://ja.wikipedia.org/wiki/データキューブ

### ハイパーキューブ




## 第4章 エンコーディングと進化

### マーシャリング(Marshalling)

> In computer science, marshalling or marshaling is the process of transforming the memory representation of an object to a data format suitable for storage or transmission,[citation needed] and it is typically used when data must be moved between different parts of a computer program or from one program to another. Marshalling is similar to serialization and is used to communicate to remote objects with an object, in this case a serialized object. It simplifies complex communication, using composite objects in order to communicate instead of primitives. The inverse of marshalling is called unmarshalling (or demarshalling, similar to deserialization).

https://en.wikipedia.org/wiki/Marshalling_(computer_science)

### リストア(Restore)

> リストアとは、バックアップされたデータを用いて、データを元の状態に戻すことである。

https://www.weblio.jp/content/リストア

### Jsonスキーマ

https://json-schema.org/

### Avro

http://avro.apache.org/docs/current/

### 前方互換性, 後方互換性(Forward compatibility, Backward compatibility)

> To verify and test developed software or hardware to see if it is compatible with future versions of other platforms or not is known as forward compatibility.

> To verify if a developed software or hardware product is compatible with older platforms or not is known as backward compatibility.

https://www.tcognition.com/blog/forward-backward-compatibility-testing-examples/

### 自己記述型

### Jsonデータベース

### アーカイブストレージ(Archive storage)

https://www.solarwindsmsp.com/content/backup-archive

### Ajax(Asynchronous JavaScript + XML)

https://qiita.com/hisamura333/items/e3ea6ae549eb09b7efb9

### サービス指向アーキテクチャ(SOA), マイクロサービスアーキテクチャ

> マイクロサービス・アーキテクチャーは、アプリケーションを構造化するための1つの選択肢です。アプリケーションは、俊敏性、拡張性、可用性に優れた、完全に独立したより小さいコンポーネントに分割されます。

> SOAは、容易にアクセス可能なサービス・インターフェースとしてアプリケーションの機能を公開し、そのデータとロジックを次世代アプリケーションでより使いやすいものにします。

https://www.ibm.com/developerworks/jp/websphere/library/techarticles/soa_microservices_architecture/index.html

### サービスディスカバリ(Service discovery)

> Service discovery is the process of automatically detecting devices and services on a network. Service discovery protocol (SDP) is a networking standard that accomplishes detection of networks by identifying resources. Traditionally, service discovery helps reduce configuration efforts by users who are presented with compatible resources, such as a bluetooth-enabled printer or server.

https://avinetworks.com/glossary/service-discovery/

### メッセージパッシングシステム(Message passing)

> Message passing is a type of communication between processes or objects in computer science. In this model, processes or objects can send and receive messages (signals, functions, complex data structures, or data packets) to other processes or objects.

https://www.defit.org/message-passing/

### セマンティクス(Semantics)

https://stackoverflow.com/questions/3355349/what-does-the-word-semantic-mean-in-computer-science-context/3355473