2023/7/19のTECH PLAYでの発表資料です。 https://techplay.jp/event/908123
0新たなマイクロサービス取り組みの実例株式会社一休宿泊プロダクト開発部バックエンド開発チーム江口 潤技術負債に立ち向かうエンジニアを助けるマイクロサービス化一休の7年間の取り組み事例から紐解く成功と失敗を分けるポイント2023/07/19
View Slide
1株式会社一休宿泊プロダクト開発部バックエンド開発チーム江口 潤2022年1月に一休へ中途入社。宿泊予約サービスのバックエンド開発・運用及び、決済マイクロサービスの新規開発に従事。最近はインスタでプレーリードッグを見る事にはまっています。
2目次●決済プラットフォーム概要●技術選定●境界線をどこに引くか●整合性を崩さない●今後の展開
決済プラットフォーム概要
4カード決済モジュールが3つ?
5一休サービス決済プラットフォームサービス導入前外部サービスGMO PGPAY.JP決済モジュールモジュール①モジュール③モジュール②レストラン予約スパ予約宿泊予約決済予定 決済履歴 会計類似の決済モジュールが乱立。凝集度が低く各サービスに決済関連機能が漏洩し、再利用するメリットが少ない。新サービス追加の度に決済関連機能を開発。決済予定 決済履歴 会計決済予定 決済履歴 会計
6一休サービス 決済プラットフォーム決済プラットフォームサービス導入後外部サービスGMO PGPAY.JP決済予定決済履歴会計国内宿泊予約レストラン予約スパ予約決済に関連する機能を集約。再利用するメリットが多く、新サービスの開発が容易。
7一休サービス 決済プラットフォームまずは新規サービスへ決済プラットフォームを導入中ふるさと納税外部サービスGMO PGPAY.JP国内宿泊予約レストラン予約スパ予約新サービスA新サービスB決済予定決済履歴会計
技術選定
9主要技術スタックフロントエンド バックエンド インフラ柔軟にオートスケールされるAurora Serverless v2を採用
境界線をどこに引くか
11曖昧なドメイン境界(1/8)一休サービス予約精算決済プラットフォーム決済予定決済履歴会計?会計は一見、決済プラットフォームの持ち物ではなさそう。
12曖昧なドメイン境界(2/8)前提として、カード決済額は一休を一度経由し、宿泊施設様へ振込がされる。そのため、一休でお金の管理(会計管理)が発生。
13曖昧なドメイン境界(3/8)決済プラットフォーム起点で債務が増加し、一休サービス起点で債務が減少する。この債務の増減を、決済プラットフォームと一休サービスのどちらで管理すべきか?
14一休サービス 決済プラットフォーム曖昧なドメイン境界(4/8)ふるさと納税外部サービスGMO PGPAY.JP国内宿泊予約レストラン予約スパ予約新サービスA新サービスB会計会計会計会計会計会計 各一休サービスに会計管理を任せる場合、サービスを新しく作る度に同様の実装が必要になってしまう。決済予定決済履歴会計
15一休サービス 決済プラットフォーム曖昧なドメイン境界(5/8)ふるさと納税外部サービスGMO PGPAY.JP国内宿泊予約レストラン予約スパ予約新サービスA新サービスB会計会計会計会計会計会計 会計管理も集約することで、新規サービス開発が容易に。決済予定決済履歴会計
16曖昧なドメイン境界(6/8)経理業務として、最終的には会計データを会計システムに連携している。会計管理機能を各一休サービスに持たせると、経理担当者もそれぞれの画面を操作する必要があって手間。
17曖昧なドメイン境界(7/8)会計管理機能を決済プラットフォームに集約し、経理担当者の手間を軽減。
18曖昧なドメイン境界(8/8)一休サービス予約精算決済プラットフォーム決済予定決済履歴会計結論、新サービス開発時のコストと経理担当者の負担軽減のため、(決済に関わる)会計管理機能は決済プラットフォームに集約した。ドメインを跨ぐ機能はプラットフォーム側に寄せた方が良さそう。
19どこまでを共通化すべきか(1/3)バッチ処理で決済が行われており、決済に失敗した場合にお客様へカード変更依頼メールをお送りする場合がある。このメールも各一休サービスを介さず、決済プラットフォームから直接送る案があった。
20どこまでを共通化すべきか(2/3)カード変更依頼のメールには、一休サービスしかもっていない予約情報などを出したい。
21どこまでを共通化すべきか(3/3)結論、決済プラットフォームからは通知をするのみとし、メール送信は一休サービスで行うことにした。ドメイン知識がない場合は処理を移譲したほうが良さそう。
整合性を崩さない
23ざっくりシステム構成
24失敗したら自力でロールバック(補償トランザクション)
25バッチでも整合性をチェック補償トランザクション失敗の可能性もあるため、バッチによって二重で整合性を担保。
今後の展開
27一休サービス 決済プラットフォーム今後の展開ふるさと納税外部サービス国内宿泊予約レストラン予約スパ予約新サービスA新サービスBGMO PGPAY.JP決済業務をプラットフォームで一元管理するため、既存サービスにも導入を進める予定。決済予定決済履歴会計
28まとめ●凝集度の高いマイクロサービスを作る●ドメインを跨ぐ機能はプラットフォームへ●ドメイン知識がなければ処理は移譲する●補償トランザクションが失敗する可能性も考慮する