はじめに
アソビュー開発チームの頭島です!
アソビューのプロダクト開発では「外部システムとの連携を行う」ケースがよくあります。そして外部システムとの連携においては、IF設計やトランザクション・リトライ処理の設計など、考慮すべき要素がいくつもあります。 この記事ではそうした設計において、アソビューがどのような工夫をすることで、 システムの可用性や信頼性を向上させているのかをご紹介します。
外部連携のスキーム紹介
アソビューでは多様なスキームで外部システムと連携しています。そのうち一部抜粋してご紹介します。
アソビューAPIを利用してもらう
外部システムに複数のAPIを提供しています。
発券API
アソビューが取り扱っている商品情報を外部システムに提供しています。 外部システムはその商品の販売時にアソビュー発券APIを呼び出すことで外部システムのユーザーに電子チケットを提供できます。
▼ 子どもとお出かけ情報サイト「いこーよ」との連携記事
着券API
アソビューは電子チケットの利用方法として「もぎり」と「QRコード」を提供しています。 また最近、アソビューでチケット販売していただいている施設様において、DX文脈やUX向上の施策として「入場ゲート」を導入するケースが増えています。 この場合ユーザーは「入場ゲート」にアソビューが発行した「QRコード」をかざしてスムーズに入場できます。その裏側では「入場ゲート」のシステムがアソビュー着券APIを呼び出すことでユーザーのチケットのステータスを「利用済み」に変更することができます。
▼アクアワールド茨城県大洗水族館様の導入記事
アソビューが外部システムを利用する
商品マスタ連携
外部システム提供のAPIを利用して商品を販売します。
販売データ連携
施設様がご利用中の会計システムなどにアソビューが販売データを連携します。
外部連携において気をつけていること
3つの観点で施策をご紹介します。
- 可用性
- 連携失敗時のリカバリー
- データ同期の仕組み
可用性
アソビュー APIを利用してもらう場合
障害発生時に外部システムへ与える影響を最小限にするため、3つの施策を実施しています。
1. 異常検知
提供しているAPIにおけるエラーレートがしきい値を超えた場合、またはパフォーマンスが低下した場合はslackに通知しています。可能な限り少ないタイムラグで「調査開始」と「APIを利用いただいているパートナー様への周知」を行います。
2. パフォーマンス監視
Datadogのダッシュボードを利用してパフォーマンスを監視しています。 また定期チェックを行い、基準値を下回った場合は最優先で調査及びチューニングを実施します。
3. DB分離
「内部システム」と「外部に提供しているシステム」においてDBを分離しています。内部システムDBの負荷が上がった場合などに外部システムに与える影響を最小限にしています。
アソビューが外部システムを利用する場合
外部システムから受ける影響範囲を局所化するために、2つの施策を実施しています。
1. APIタイムアウト設定
エンドポイント毎にタイムアウト設定をいれています。これによりスレッド枯渇を防止します。
2. サーキットブレーカー設置
エンドポイント毎にエラーレートのしきい値を定めており、しきい値を超えた場合は外部システムとの連携を一時的に遮断します。
こちらの記事で詳しくご紹介しているのでぜひご覧ください! tech.asoview.co.jp
連携失敗時のリカバリー
システム連携が失敗した場合、可能な限り自動リカバリする仕組みにしています。 そのために2つのデータ管理をご紹介します。
1. データ連携状況(連携待ち・連携済み・連携失敗)
連携失敗しているデータは一定の条件に基づき自動再連携します。
2. データ連携失敗時の原因
失敗の原因によっては調査が必要です。 ログ検索の手間を省くことができ「再連携」or「調査」の意思決定を手助けします。
データ同期の仕組み
外部システムとマスタデータを同期している場合は差分が発生する可能性があります。
1. 差分データの把握
マスタデータ更新に関する webhook が提供されていないシステムと連携する場合、毎朝slackで差分データを通知しています。
2. 一部手動によるデータ同期
同期処理の一部は手運用しています。理由は意図しないデータの上書きを防ぐためです。 外部システムのマスタ管理は施設様によって行われることが多いです。その場合データ同期前に差分チェックすることによって意図しない設定で販売されることを防止します。 特に料金などユーザにとってクリティカル・センシティブな設定については双方のシステムのダブルチェックが販売商品の品質担保に繋がります。 結果的に施設様の設定ミスなどを検知できビジネス上の信頼関係構築につながることがあります。
しかしながら、外部システム連携の商品数増加によって手運用のコストも増加します。商品の品質を担保しつつコスト削減できる方法を検討中です。
まとめ
アソビューのプロダクトにおける外部システム連携を支える技術についてご紹介しました。 考慮すべき点とその優先度は、アーキテクチャや連携方法など様々な外部要因によって変わります。 常にベストな選択肢を模索しながらプロダクト開発を進めていきたいです。
さいごに
使用している技術スタックや他の話にもご興味がありましたらこちらもぜひご覧ください。
アソビューでは「生きるに、遊びを。」をミッションに、一緒に働くメンバーを募集しています! ご興味がありましたらお気軽にご応募いただければと思います!