システム開発

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

システムを設定する時、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

【オフショア開発の価格高騰】各国の最新コスト動向と今後の展望

近年、IT開発の現場では「オフショア開発のコストが上昇している」という声が多く聞かれるようになりました。 かつてオフショア開発は「低コストで開発できる手段」として広く活用されてきましたが、現在ではその前提が変化しつつあります。 為替環境の変化、各国の人件費上昇、グローバル市場の競争激化などにより、オフショア開発の価格構造は大きく変わり始めています。 一方で、日本国内ではエンジニア不足が深刻化しており、企業は開発リソースを確保するために海外人材の活用を続けざるを得ない状況にあります。 つまり、オフショア開発は「安いから使う」ものから、「必要だから使う」ものへと役割が変化しているのです。 この記事では、オフショア開発の最新動向をもとに、各国のコスト動向、企業の発注傾向、案件内容の変化、契約形態の変化、そして今後の展望について詳しく解説します。 オフショア開発を検討している方 開発効率を上げたい方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めばオフショア開発のコスト面について最新の情報がわかるのはもちろん、今後の展望もわかりますよ。 (more…)

3 days ago

【不動産DX】不動産業界に最適なオークション形式とシステム選定のポイント

不動産業界は、これまで「対面営業」「紙契約」「属人的な価格交渉」といったアナログな手法が中心でした。 しかし近年、デジタル技術の進化と顧客行動の変化により、業界全体でDX(デジタルトランスフォーメーション)が加速しています。 この記事ではそんな不動産業界のDX化において、注目されている「オークション形式」についてどんな特徴があるのかや、システムを選定する際のポイントについて見ていきたいと思います。 DX化をすすめたい企業の方 不動産業界の方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めば不動産業界におけるオークション形式のポイントや注意点が丸わかりですよ。 不動産DXが求められる背景とオークションモデルの可能性 国土交通省の電子契約解禁やオンライン重要事項説明の普及により、売買・賃貸のプロセスは大きく変わりました。さらに、ポータルサイト依存型の集客モデルから脱却し、より収益性の高い販売手法を模索する動きが強まっています。 そこで注目されているのが「オークション形式」です。 従来の不動産取引は「売主が価格を提示し、買主が交渉する」という相対交渉モデルが一般的でした。 しかし、オークションモデルでは市場原理をより明確に反映させることが可能です。需要が集中するエリアや希少物件では価格が自然に上昇し、売主にとっては最大利益を得られる可能性があります。 また、オークション形式は透明性の向上にも寄与します。 価格決定のプロセスが明確になり、「なぜこの価格になったのか」という説明責任を果たしやすくなります。 これはコンプライアンス強化が求められる現代において大きな利点です。…

1 week ago

2026年のAIエージェント トレンド【Googleの調査】

2026年、AI活用は新たなフェーズへと突入します。これまでの「生成AIを使う」段階から、「AIエージェントが業務を遂行する」段階へと進化しています。 Google Cloudが発表したレポート『AI agent trends 2026』では、企業活動におけるAIの中心がAgentic AI(エージェント型AI)へ移行すると指摘しています。 AIエージェントとは、単に質問に答える存在ではありません。目標を理解し、計画を立て、複数のシステムを横断しながら実行まで行う「行動するAI」です。 この記事では、Googleの調査をもとに、2026年を形づくる5つのAIエージェントトレンドを詳しく解説します。 AIエージェントは何か知りたい方 業務効率を上げたい方 これらに当てはまる方におすすめの数となっています。これを読めばAIエージェントのトレンドがわかるのはもちろん、利用のポイントもわかりますよ。 すべての従業員にAIエージェントがつく時代(Agents for Every…

2 weeks ago

3層品質保証で実現する安心のITアウトソーシング体制

グローバル市場におけるITアウトソーシングでは、品質保証は単なる最終テスト工程ではありません。 品質は「工程の最後で確認するもの」ではなく、「開発の初期段階から設計され、統制されるべき経営基盤」です。  従来型のQAがリリース直前のテストに依存するのに対し、DEHA SOLUTIONSではTQA・PQA・SQAの3層構造により、技術・プロセス・サービス全体を横断的に管理しています。 これは単なる品質向上施策ではなく、リスクコントロールと持続的成長を実現するためのガバナンス設計です。  (more…)

2 weeks ago

システム開発におけるPMの役割を徹底解説|失敗や納期遅延を防ぐポイント

システム開発プロジェクトにおいて、成功と失敗を分ける最大の要因は「PM(プロジェクトマネージャー)」の力量だと言っても過言ではありません。 技術力の高いエンジニアが揃っていても、要件が曖昧だったり、スケジュールが破綻したり、関係者間の認識がずれたりすれば、プロジェクトは簡単に炎上します。 特に近年は、アジャイル開発やハイブリッド型開発など手法の多様化、オフショア開発の増加、DX推進によるスピード要求の高まりなど、PMに求められる能力はますます高度化しています。 この記事では、そんなシステム開発におけるPMの役割を体系的に整理し、失敗や納期遅延を防ぐための実践的なポイントを徹底解説します。 システム開発をしたい方 システム開発を効率よく行いたい方 社内にIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めばシステム開発におけるPMの役割がわかるのはもちろん、失敗しないためのポイントも丸わかりですよ。 PMとは何か?システム開発における本質的な役割 システム開発におけるPM(プロジェクトマネージャー)は、単なる進捗管理者ではありません。 PMの本質的な役割は、「プロジェクトを成功に導くための総責任者」であることです。 プロジェクトには必ず「QCD(品質・コスト・納期)」という制約があります。さらに、近年では「スコープ(範囲)」や「リスク」、「ステークホルダー満足度」も重要な要素です。 PMはこれらすべてを統合的に管理し、バランスを取りながら意思決定を行います。PMの主な責任領域は以下の通りです。 目的・ゴールの明確化 要件定義の統括…

2 weeks ago

アジャイル・ウォーターフォールハイブリッド開発の手法とは?オフショア開発に効果?

アジャイル・ウォーターフォールハイブリッド開発は、ウォーターフォール開発の計画性・文書化・統制力と、アジャイル開発の柔軟性・反復改善・顧客密着型の進め方を組み合わせる手法です。 この記事では、そんなアジャイル・ウォーターフォールハイブリッド開発の基本概念から具体的な実践方法、さらにオフショア開発における効果や導入時の注意点まで、体系的に解説していきます。 アジャイル・ウォーターフォールハイブリッド開発が気になる方 オフショア開発に興味がある方 開発効率を上げたい方 これらに当てはまる方におすすめの記事となっています。これを読めばアジャイル・ウォーターフォールハイブリッド開発について特徴わかるだけでなく、導入のポイントも丸わかりですよ。 なぜ今「ハイブリッド開発」が注目されているのか 近年、ITシステム開発の現場では「スピード」と「品質」の両立が強く求められています。市場環境は急速に変化し、顧客ニーズも多様化しています。 その一方で、セキュリティ要件や法規制への対応、社内ガバナンスの強化など、開発プロジェクトに求められる統制レベルは年々高まっています。 このような背景の中で、従来型のウォーターフォール開発だけでは変化への対応が難しく、またアジャイル開発だけでは大規模案件や厳格な要件管理が必要なプロジェクトに対応しきれないケースも増えています。 そこで注目されているのが、「アジャイル・ウォーターフォールハイブリッド開発」です。 これは、ウォーターフォール開発の計画性・文書化・統制力と、アジャイル開発の柔軟性・反復改善・顧客密着型の進め方を組み合わせる手法です。 単なる折衷案ではなく、プロジェクトの特性やフェーズに応じて最適な開発アプローチを選択・融合する実践的な方法論といえます。 特にオフショア開発においては、言語・文化・時差・契約形態といった要素が絡み合うため、開発手法の選択はプロジェクトの成否を左右します。 日本国内で要件定義を固めた上で海外チームに実装を委託するケース、あるいは海外側に一部設計まで任せるケースなど、形態はさまざまです。…

3 weeks ago