株式会社リゾーム システム企画・開発部 第3グループの鳥井です。
読書会の第8回目のレポートです。
前回のレポートは、こちらになります。
8回目レポート
今回は、第8章「アプリケーション間の連携」で参加者は4名でした。
それぞれの感想・意見交換
アプリケーション間の連携方式
- 代表的なものは以下の4つ
- ファイル転送
- データベース共有
- Web API
- メッセージング
- 弊社でよくやる方式なのはファイル転送、WebAPI連携も多少やっている。
Web API設計
- 更新も削除もPOSTにする
- アプリケーションの独立性が高くなり、修正の影響を小さくできる
- 更新や削除もPOSTで行うのはRESTに反するので、どうだろう..。
- 大は小を兼ねるAPI
- 必要のないパラメータまで理解しなければならなくなる
- 受け取ったデータから必要なデータを取り出す処理が必要になる
- 計算ロジックの置き場所
- 以下の理由から、単純なものも含めてクライアント側を基本とするのが良い気がする。ただし、DBで集計できるものなどはWeb API側で処理する。
- どちらに書くべきか判断に迷わなくなる
- ロジックを書いてある箇所が特定しやすい
- 以下の理由から、単純なものも含めてクライアント側を基本とするのが良い気がする。ただし、DBで集計できるものなどはWeb API側で処理する。
- 登録と参照を分ける
- リソース単位を分ける
非同期メッセージング
- 非同期メッセージングをアプリケーション間で使ったことはない気がする..。
- dRubyを使えばできる?
マイクロサービス化
- 試行錯誤がしづらそうだと思った。サービス単位の分離を上手にやらないといけない。
- 対象業務への理解が不十分な場合はモノリスで作っておき、後々分けていくのが良いかも
- サーバーレス&マイクロサービスが今後の主流になっていくとは思うが、それはある程度サービスが枯れてからが良さそう
まとめ
今までWeb APIを利用することがあまりありませんでしたが、本章を読み進めることでWeb API自体やシンプルでより良い設計の方法について理解を深めることができたと思います。
ただし、Web API側のシンプルさを追求する一方でリクエストの頻度やクライアント側の負担についても考慮する必要があると感じました。
本章を通じて得た知見を活かしてシンプルで保守しやすいWeb API設計を意識しつつ、サービス全体としても最適な設計を模索していきたいと思います。