システム開発

一般的なシステム統合プロトコルについて

システムを設定する時、Low Couplingと High Cohesionを満たすことを確保するように、システムを小さなモデルに分けることが多いです。

または、システムを小さなサービスを分けて組み合わせることも多いです。

これにより、システムのスケーリングが簡単になり、システムのフォールトトレラントも確保することができます。

しかし、上記のようにシステムを分割すると、統合に関する問題が発生してしまうことも…。

システムを一緒にスムーズに稼働するためには、適切な組み合わせを選択するべきです。この記事ではそんな適切なシステム統合プロトコルについて紹介していきます。

  • 適切なシステム統合プロトコルについて知りたい方
  • 社内のIT人材が不足している方

これらに当てはまる方におすすめの記事となっています。これを読めばシステム統合プログラムについて丸わかりですよ。

一般的なシステムの組み合わせ方法の例

PHP と MySQL組み合わせ

PHPとMySQLは異なるテクノロジーです。(PHP:プログラミングの言語 MySQL:データベース管理のシステム)。

開発の時にPHPとMySQLを接続する必要があります。PHPはMysqli、 PDO等のMySQLへ接続できるようにいくつかの方法をご紹介します。アクセス方法とデータベース処理を提供する拡張機能です。

MySQLへの接続の為、ホスト、ポート、ユーザー名、パスワード等のいくつかのパラメータを宣言しましょう。

他のパラメータを無視して、ホストとポートを注意してください。

MySQLは tcp/socketでサーバーへのアクセス方法を提供します。これはシステムにアクセスして、組み合わせる為のプロトコルです。ほとんどプログラミング言語とデータベースがこのプロトコルをサポートしています。

MySQLサーバーが実行される時、サーバソケットがポート3306(MySQLのデフォルトのポート)待機します。このポートへのアクセスがある場合(PHP等から)、依頼情報によりMySQLが結果を返します。

ソケットが2つの通信仕組みを提供します。1つは仮想的なポートを使用します(ポート3306)。もう1つはソケットのファイルシステムを使用します(UNIXソケット)。

このファイルがシステム内のプロセス間の内部的な通信を担当します(1つのプログラムが複数のプロセスを含む)。

UNIXソケットのファイルは同じサーバ上に2つのプロセスがある時の使用可能性です。PHPとMySQLが異なるサーバ上にある場合、仮想的なポートのみを組み込み使用することができます。

PHP と NGINXの組み合わせ

NGINXがWebサーバー、 Proxy、 Load Balancer等のシステムに多くの影響を与えます。

基本的に、NGINX と PHPを連携する方法はPHPとMySQLに似ています。これらはソケットによって通信します。

NGINXを使用する為、PHP-FPMという特別なPHPのバージョンが必要です。NGINX と Apache仕様管理の仕組みが異なりますので、この問題ができるようにPHPのバージョンが必要です。

PHP- FPMはローカルアクセスまたはリモートアクセスの為にポート9000またはUNIXソケットのファイルを開きます。

Docker Client と Docker Machine

Dockerには、 Command Line Interface (CLI) の使用は Docker Clientに作業しているということです。

コマンドを入力する時、Docker Clientが RESTful標準に従ってDocker Machineへコマンドを送信します。

しかし、送信の仕組みがHTTPではなくソケットです。

それから、 Docker Machine へソケットができるウェブサイトを作成することに基づき、Docker管理プログラムが構築できます。

Docker Composeシステム

まず、Docker Composeによって実行される各サーバが個別のサーバ―であることを理解することが必要です。

つまり、このサーバーのプロセスが他のサーバーのプロセスを呼び出すことができません。他のネットワークプロトコルを通じることで通信することができます。

通信できるように、これらのサービスが同じネットワーク上にある必要があります(Overlay Networkと呼ばれる)。

このネットワークがDocker 自体によって作成され、そのネットワークにコンテナを付けます。その時、付かれるサービスの名がhostnameになります。

例えば、 PHPサービスがSocket portを通じてMySQLを呼び出せるように、MySQLとポート3306という hostnameを宣言するべきです。

なお、NGINX と PHPに対するPHPとポート9000というhostnameを宣言するべきです。

一般的なシステムの組み合わせる方法

HTTP Protocol

これは現在の世界を支配するプロトコルです。これらはウェブサイト、ビデオ、写真等のネットワークリソースへのアクセスをサポートできます。

ステートレスはHTTPの特殊です。これは初めてのクライアントがサーバーへ依頼を送信した時、二回目まで、サーバーはこのクライアントが依頼を送信するかどうか分からないということです。

このデメリットを克服する為、Session、Cookie、LocalStorage、 Json Web Token等が効果的です。(HTTPがステートフルになる為)。これにより、サーバーが書くクライアントが区別できます。

各システムがサービスという役割を果たします。したがって、Webサービスがあります。

SOAPという標準の通信プロトコルを使用することが以前は多かったそうです。SOAPもHTTP(Web)及びSMTP(Mail)プロトコルの両方で使用することができます。

その後2000年以降、RESTという1つの標準を発明されました。

この標準を使用するシステムが RESTful Serviceと呼ばれます。これは現在Web APIで一般的に使用する標準です。RESTの本質はStatelessですので(以上の通りに言った)、各クライアントのAuthenticateの為Web Tokenを使用します。

TCP Socket Protocol

前述したように、ソケットはとても古典的なプロトコですが、現在でもかなり使用されています。

ここではTCPソケットのみ考慮されます。TCPソケットのプロトコルには、2台の機械が相互に接続し、情報を送信したい場合絶えず接続を作成しましょう。

なお、UDPという他のプロトコルもあります。このプロトコルはもっと高速で、接続を作成する必要がありません。しかし、パケットの受信が確認できないので信頼性が低いです。

RPC – Remote Produce Call

これはリモート関数を呼び出すための手法のことです。

この関数が現在のプログラムがないので、サーバーまたは他のプログラムを実行するべきです。

例えば、内部のチャートプログラムがある場合、ユーザーの登録を実行する為のクライアント確認のザーバーを構築していきましょう。クライアントは確認を依頼する時、サーバーへリクエストを送信します。このリクエストがRPCと呼ばれます。

 RESTful Serviceを設計する時、ログイン、ログアウト等の機能がRPCと見なします。

基本的に、RPCはRESTと同じように通信設計のことを指します。HTTP Protocol または TCP Socketでこの仕組みが実装できます。

現在、RPCは複数のサーバーから関数を呼び出す必要がある高性能化問題によく使用されます。

その中では Thrift 及び gRPCという2つのRPCフレームワークが一番有名です。

これはユーザーがサーバーと遠隔手続き呼び出しが構築できる2つフレームワークです。Thrift及びgRPCはRPC実行が簡単になるため安易なインタフェースを提供します。

現在、ThriftはFacebookに使用されています。ちなみに、gRPCはサービス統合用のGoogleに使用されています。

Message Queue

Message Queueは分散システムの重要なテクノロジーです。分散システムは複数のサーバー、救数のサービス、複数のデータベースを含みます。

これらはお互いに連携し、動作します。良い1つの分散システムはCAP Theoremを確保する必要のシステムです。

サービス数が増えると、サービス間の通信が混乱になります。

メッセージキューは別のサーバーで遠隔手続き呼び出しまたはリソースコードへの呼び出しが1つのメッセージと見なすという提案します。その後、メッセージブローカは構成され、各サービス間でメッセージを通信することができます。

メッセージブローカはAMQP プロトコルを実装することが多いです。これは分散システムでメッセージの送受信に関する専門があるプロトコルの一つです。

まとめ

いかがでしたか。この記事では一般的なシステム統合プロトコルについて紹介していきました。

さまざまな組み合わせがあり、それぞれに特徴がありましたね。

dehaでは、5年ほど前から、ベトナムオフショア開発を行っています。

システム統合の為のメッセージブローカとしてKafkaを導入しています。本日紹介したシステム統合プロトコルについてや、Kafkaに関してなど興味がある方はぜひご気軽にお問い合わせください。

お問い合わせはこちらから

Van Nguyen

Recent Posts

AIエージェントの活用による弊社の成功事例をご紹介

近年、AI技術の進化とともに、業務効率化やサービス向上を目的とした「AIエージェント」の導入が急速に進んでいます。 弊社でも、この流れを受けてAIエージェントの導入を進め、多くの現場で業務の質とスピードの両立を実現することができました。 この記事では、実際に弊社が取り組んだAIエージェントの活用事例を紹介しながら、AI導入によるメリットとその可能性についてご紹介いたします。 AIエージェントが気になる方 AIエージェントの事例が知りたい方 社内の人材不足にお悩みの方 これらに当てはまる方におすすめの記事となっています。これを読めばAIエージェントの成功事例が丸わかりですよ。 (more…)

2 days ago

AIエージェント導入によくある課題と解決方法

近年、業務効率化や顧客対応の高度化を目的として、企業や自治体、教育機関など多くの組織で「AIエージェント」の導入が進んでいます。 AIエージェントとは、人工知能を活用して自動的に応答や処理を行うシステムの総称で、チャットボットやバーチャルアシスタント、RPA(Robotic Process Automation)などが含まれます。 しかしながら、AIエージェントの導入には多くの期待が寄せられる一方で、現場ではさまざまな課題に直面するケースも少なくありません。 この記事では、AIエージェント導入によくある課題とその解決方法について、具体的に解説していきます。 AIエージェントに興味がある方 AIエージェントの導入に不安がある方 社内の人材不足にお悩みの方 これらに当てはまる方におすすめの記事となっています。これを読めばAIエージェントの特徴がわかるのはもちろん、うまく活用するための方法もわかりますよ。 (more…)

2 days ago

AIエージェントとは?特徴、活用のメリット

近年、AI技術の進化により、私たちの生活やビジネスのあらゆる場面で人工知能(AI)が活用されるようになっています。 その中でも注目されているのが「AIエージェント」です。音声アシスタント、チャットボット、カスタマーサポートなど、さまざまな場面で導入が進むAIエージェントは、業務効率化やユーザー体験の向上に大きな可能性を秘めています。 この記事では、AIエージェントの基本的な定義から、その特徴、導入メリット、さらに活用事例や今後の展望までを網羅的に解説します。 AIエージェントが気になる方 社内の人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めばAIエージェントの特徴や具体的な活用メリットがわかりますよ。 (more…)

7 days ago

ベトナムAI経済2025年|最新経済市場動向を読み解く

AI(人工知能)は、世界各国の経済成長を支える基盤技術として注目されています。 とりわけベトナムでは、政府が国家戦略としてAIの導入を明確に位置づけ、経済、教育、公共行政、スタートアップ育成まで多岐にわたる分野で取り組みを強化しています。 この記事では、「ベトナムAI経済2025年」レポートをもとに、マクロ経済との接続性、国家戦略、セクター別の導入状況、スタートアップ・投資動向、そして将来の展望について解説します。 ベトナムのAIが気になる方 最新のベトナムの経済動向が気になる方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めばAIがもたらすベトナム経済の進化と、その背景にある政策と市場構造を総合的に理解することができます。 (more…)

3 weeks ago

No-BrSEオフショア開発とは?メリット、活用シーンを徹底解説

近年、開発現場では「品質」「スピード」「セキュリティ」のすべてを高次元で実現することが求められています。 特に、高度な専門性や情報セキュリティが重要視される分野では、国内同様の品質と体制が前提となります。 そんな中、「No-BrSEオフショア開発」をご紹介します。 これは従来のオフショア開発におけるブリッジSE(BrSE)を介さず、日本語で直接やり取りができる完全日本語対応のラボ型開発チームを導入するモデルです。 この記事ではそんなNo-BrSE開発の特徴、メリット、適した活用シーンまでを詳しく解説します。 No-BrSEオフショア開発が気になる方 社内のIT人材が不足している方 開発の品質を高めたい方 これらに当てはまる方におすすめの記事となっています。これを読めばNo-BrSEオフショア開発のメリットや活用方法が丸わかりですよ。 (more…)

4 weeks ago

請負型とは?メリット・デメリットから活用シーンまで徹底解説

近年、開発コスト削減やリソース確保を目的として「オフショア開発」を導入する企業が増えています。 その中でも開発スタイルとして注目されているのが「請負型(受託型)」の契約形態です。 この記事では、請負型の基本的な概要から、メリット・デメリット、向いているプロジェクトの特徴、活用シーンまでを徹底解説します。 オフショア開発が気になる方 請負型について気になる方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めばオフショア開発の請負型について メリットデメリットがわかるだけでなく活用できるシーンまで丸わかりですよ。 (more…)

1 month ago