## システム構成図(レンタカードットコム) ```mermaid flowchart TB %% ユーザー U(["お客様<br/>Browser"]) Aapp(["お客様<br/>アプリ"]) %% Linux側 subgraph LNX["ontra-rentacar(Linuxホスト)"] direction TB RP["Nginx(リバースプロキシ)<br/>:443"] subgraph DC["Docker コンテナ群"] direction TB F["container_front<br/>フロントサイト<br/>(PHP・Laravel)"] A["container_api<br/>rentacar-api<br/>(Laravel)"] end end %% カスタマーサポート(黄色枠の外) CS(["カスタマーサポート<br/>Browser"]) %% Windows側(黄色枠) subgraph WIN["Windows サーバー群"] direction TB subgraph IISG["IIS(Windows)"] direction TB BO["バックオフィス<br/>管理画面(BO)"] INV["在庫連携<br/>(連携サービス)"] end DB[["DBサーバー<br/>Oracle Database<br/>(Windows)"]] end %% 外部連携(黄色枠の外) subgraph AUTH["オーソリサーバー(外部連携)"] direction TB ASRV["クレジット認証・決済API<br/>(Auth Server)"] end MARIADB[["MariaDBクラスタ<br/>(外部DB / クラスタ構成)"]] subgraph GMO["GMOマルチペイメント(外部クレジット決済)"] direction TB GMOAPI["決済APIエンドポイント<br/>(GMO Multi Payment)"] end %% レンタカー会社(黄色枠の外) BJR["バジェット<br/>在庫連携のみ"] JSJR["Jネット・スカイレンタカー<br/>在庫・予約連携"] %% 経路(ユーザー系) U -->|"HTTPS通信"| RP Aapp -->|"アプリリクエスト"| A RP -->|"Webリクエスト"| F RP -->|"APIリクエスト"| A F -->|"API呼び出し"| A %% カスタマーサポート → BO CS -->|"HTTPS通信"| BO %% API/BO/在庫連携 ↔ DB A -->|"SQL実行"| DB BO -->|"参照・更新"| DB INV -->|"在庫同期"| DB %% レンタカー会社 → 在庫連携 BJR -->|"API通信(在庫)"| INV JSJR -->|"API通信(在庫・予約)"| INV %% 決済系 A -->|"クレジット認証・決済通信"| ASRV ASRV -->|"データ同期"| MARIADB F -->|"決済リクエスト送信"| GMOAPI A -->|"決済結果受信"| GMOAPI ``` <small> ### 1. **ユーザーアクセス** - **お客様(Browser)**:HTTPS通信でフロントサイトにアクセス。予約・検索・決済などを行う。 - **お客様アプリ**:スマートフォンアプリからAPI経由でシステムと通信し、Webと同等の予約処理を実行。 --- ### 2. **ontra-rentacar(Linuxホスト)** - **Nginx(リバースプロキシ)** 外部からの通信を受け付け、HTTPS終端およびルーティングを担当。 フロント(Web)とAPIのリクエストをそれぞれのDockerコンテナに振り分ける。 - **container_front(PHP・Laravel)** レンタカー予約サイトのUIを提供。検索・予約・決済画面など、ユーザー操作の起点。 クレジット決済時はGMOマルチペイメントのAPIを呼び出す。 - **container_api(Laravel)** Web/アプリ双方のリクエストを受け、ビジネスロジックを処理。 Oracle DatabaseへのSQL実行、オーソリサーバーへの認証通信、GMO決済結果の受信を担当。 --- ### 3. **Windowsサーバ群** - **カスタマーサポート(Browser)** Windowsサーバ群の上に配置され、HTTPS通信でバックオフィス(BO)へ接続。 顧客対応や予約確認など、管理者操作を実施。 - **バックオフィス(BO)** 業務担当者用の管理画面。顧客データ・予約情報の参照/更新やキャンセル処理などを行う。 - **在庫連携(連携サービス)** IIS上で稼働し、各レンタカー会社との在庫・予約データ連携を実行。 API経由で在庫同期・予約確定・キャンセル反映などを処理。 - **DBサーバ(Oracle Database / Windows)** メインデータベースとして稼働。サイト全体の在庫・顧客・予約データを保持し、BOおよびAPIから参照される。 --- ### 4. **レンタカー会社とのデータ連携** - **バジェット** 在庫連携のみ実施。IIS上の在庫連携サービスを通じて在庫データを同期。 - **Jネット・スカイレンタカー** 在庫および予約連携を実施。共通基幹システム上でAPI通信により在庫・予約情報を双方向同期。 --- ### 5. **外部連携システム** - **オーソリサーバー(Auth Server)** クレジットカードの認証・決済処理を担当。 API(Laravel)から送信された決済リクエストを受け取り、認証結果を外部MariaDBクラスタへ同期。 - **MariaDBクラスタ(外部DB / クラスタ構成)** オーソリサーバーからの決済・承認結果を保持。冗長構成により高可用性を確保。 - **GMOマルチペイメント(外部クレジット決済)** フロントからの決済リクエストを受け付け、結果をAPIに返却。 決済処理・3Dセキュア対応・返金など、決済全般を担う外部サービス。 --- ### 6. **通信フロー概要** 1. お客様(Browser/アプリ)からHTTPS通信でNginxにアクセス。 → フロントサイトまたはAPIに振り分け。 2. フロントサイトは画面表示と決済リクエスト送信を担当。 APIが予約・顧客・在庫などの実処理を行う。 3. APIはOracle Databaseに対してSQL実行を行い、在庫・予約情報を更新。 4. クレジット決済時、APIがオーソリサーバーへ認証リクエストを送信し、結果をMariaDBクラスタに記録。 5. GMOマルチペイメントを通じた外部決済処理が行われ、結果がAPIへ戻される。 6. 在庫連携(IIS)がレンタカー会社各社とデータを同期。バジェットは在庫のみ、Jネット・スカイレンタカーは在庫+予約両方を処理。 7. カスタマーサポート担当者はBOを経由してデータを参照・更新。 --- ### 7. **ログ管理** - **Webアクセスログ(nginx)**:`/var/log/nginx` 外部アクセス・通信リクエストの記録。 - **APIアプリログ(Laravel)**:`/var/www/rentacar/rentacar-api/storage/logs` 各種API処理、外部通信、例外エラーを記録。 - **IISアクセスログ**:`C:\inetpub\logs\LogFiles\W3SVC*` 管理画面および在庫連携の通信履歴を保存。 --- ### 8. **システム全体のフロー** 1. お客様がブラウザまたはアプリからアクセスし、Nginxを経由してWeb/API層へ接続。 2. フロントサイトがUI処理・入力データ送信を担当し、APIが実際の予約・認証・在庫更新を担当。 3. APIはOracle Databaseを操作して在庫・顧客・予約を更新し、必要に応じてオーソリサーバーへ決済リクエストを送信。 4. オーソリサーバーはクレジット認証処理を行い、結果をMariaDBクラスタに保存。 5. 決済関連情報はGMOマルチペイメント経由で外部カードネットワークと連携。 6. IIS上の在庫連携がレンタカー会社(バジェット/Jネット・スカイレンタカー)とのデータ同期を実行。 7. カスタマーサポート担当者はバックオフィスを通じて予約情報を管理し、顧客対応を行う。 8. 各サーバは独立したログ領域を持ち、運用監視・障害分析に活用される。 --- ### 🗂 ドキュメント管理情報 | 項目 | 内容 | |------|------| | **ドキュメント名** | レンタカードットコム システム構成図・構成概要 | | **バージョン** | v1.0 | | **作成日** | 2025年10月28日 | | **作成者** | オンライントラベル株式会社 西村 | | **確認者** | オンライントラベル株式会社 森田 | | **次回改訂予定** | 構成変更時またはシステム刷新時(例:次期API基盤リプレイス時) | | **備考** | 本資料は ontra-rentacar 環境を基準とした2025年10月時点の構成を示すものです。<br>以後の改修・移設に伴い更新予定。 | --- </small>
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up