0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RMIとREST APIの違い

Posted at

RMIとREST APIの違いを気になったからChatGPTに聞いてみた

私はSES企業で働くSE3年目のものです。
現在、某金融機関の2次請けエンジニアとしていわゆるレガシー現場で働いています。

某金融機関のシステムは20年ほど前から作られて、使用されているのはJava Struts2です。
そこで使用されているWebアプリケーションやWebサービス間でデータをやり取りするための手段は「RMI」です。

モダンな言語ではほとんどがREST APIが使われているのでしょうか。
働いた経験がないので、あまり詳しくはわからないのですが、REST APIとRMIの違いについて背景からChatGPTに聞いてみました。

以下引用です。

RMIとREST APIの違い

RMI REST API
通信モデル Javaオブジェクト間のメソッド呼び出し(RPC) HTTPベースのリソース操作(GET/POST/PUT/DELETE)
プロトコル RMI専用プロトコル(Java RMI) HTTP(標準的で汎用)
データ形式 Javaオブジェクトの直列化(Serializable) JSONやXML(言語非依存)
利用できる言語 Java専用 任意(Java, Python, JavaScriptなど)
保守性 Java依存で密結合になりやすい HTTP+JSONで疎結合
デバッグのしやすさ 専用ツールや知識が必要 ブラウザやcurlなどでもテスト可能
ファイアウォール越え 難しい場合が多い(RMIポートなど) HTTPなので通りやすい
例外処理 Java例外で制御(RemoteExceptionなど) HTTPステータスコード(400, 500など)で制御

【現場目線の違い】

  1. 開発者の自由度・拡張性
    • RMI:Java以外からアクセスできない。機能追加や改修がJava前提になる。
    • REST API:非Java(フロントエンドやPythonなど)からもアクセスできる。将来マイクロサービス化も容易。

  2. 可搬性と保守性
    • RMI:クライアントとサーバーで共有するインターフェース(.classや.jar)が必要。バージョンのずれに弱い。
    • REST:URL+HTTPでインターフェースを定義でき、契約(API仕様)さえ守れば自由度が高い。

  3. 可視化とAPI管理
    • RMI:どんなメソッドがあるか確認するにはコードを見ないといけない。
    • REST:OpenAPI(Swagger)などで自動生成・ドキュメント化が可能。

【なぜRMIが使われているのか?】

• Javaベースで統一されている既存システム。
• 社内LANの閉じたオンプレ環境ならセキュリティ上問題になりにくい。
• Java開発者だけで完結する小規模 or 閉じたシステム。

まとめ

つまり、金融システムのような堅牢なセキュリティが求められるかつ、20-30年前のJavaで作られたシステムではRMIを使用することが多いのではという結論です。
まあ、金融機関のシステムは本当にレガシーですし、スパゲッティ状態のものが多いです。
それは今のVUCAの時代を想定したシステム設計ではなく本当に誰も手をつけたがらない、まさにカオスな状態といえますし、なかなかこのRMIからREST APIにリファクタリングするのは難しい話なのは承知ですが、こうやってモダンな技術とレガシー技術の比較ができるのはレガシーシステムを触っているからこその特権かもしれませんね。

皆さんの何かしらの力添えになれたら幸いです。

AKI

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?