giftee Tech Blog

ギフティの開発を支えるメンバーの技術やデザイン、プロダクトマネジメントの情報を発信しています。

「システムを停止させない」—— eGift Systemチームのミッションと取り組み

ギフティでエンジニアをしている清見です。この記事では私が携わっているeGift Systemのエンジニアチームについて紹介します。

eGift Systemとは

eGift Systemは、SNSやメールなどオンラインで手軽に贈れるeギフトサービスを支える基盤システムです。プロダクトエコシステムのこの辺りを担っています。

https://speakerdeck.com/giftee_dev/giftee-product-book-2024?slide=3

具体的には、以下の機能を提供しています。

eギフトの生成

商品と交換できるeギフトが効力を持つためには、まず正しいデータとして発行される必要があります。eGift Systemは多種多様なeギフトの形式に対応させるため、eギフト提供者ごとに異なる複雑な仕様を吸収し、常に適切な形式でeギフトを生成する役割を担う汎用性の高い基盤として設計されています。

具体的には、発行の瞬間にお店のレジで読み取れるバーコードや、シリアル番号を生成し、固有のURLを持つeギフトとして送り出しており、ここから生まれるeギフトが多くの流通の起点となっています。giftee.comで販売されるeギフトの発行もこのシステムで行っています。

eギフトの消込

eギフトが悪用されないよう、一度使われたeギフトが再度使われないようにする必要があります。したがって、eGift Systemでは使用されたタイミングで「消込」という処理を行い、再利用できないようにしています。eGift Systemでは、POSや専用端末、QR読込など、さまざまな方法でこの消込を行います。外部システムと連携し、利用状況を同期させることで不正利用を防ぎ、安全なギフト体験を支えています。

販売・管理機能の提供

eギフトとして販売する商品の管理や、発行・利用状況を一元管理するCMS(Content Management System:コンテンツ管理システム)を提供しています。また、eギフト提供者独自の販売サイトを構築する機能も備えており、自社サイトを通じて販売することを可能にします。

チームのミッション

ギフティはToC向けからToB向けへと事業領域を広げ、提供するプロダクト群も年々拡大を続けています。その中でも、eGift Systemは創業初期から稼働し続け、eギフトの「生成」と「消込」という根幹を支え続けてきました。

万が一システムが停止してしまうと、eギフトの生成や消込が不可能となります。店舗でeギフトが使えなければ、ユーザーの体験を損なう他、店舗側のオペレーション混乱や経済的損失を招き、eギフト提供者からの信頼も大きく損ないます。

eGift System は生成や消込の側面で様々なサービスと連携しています。先述のプロダクトエコシステムの図で示すと、このような範囲のサービスに影響します。

影響範囲が非常に広く多大な影響を与えてしまうことがわかるかと思います。

そのため私たちは、常にシステムを正常稼働させることを最重要のミッションとして掲げています。このミッションを遂行するため、以下の2軸を重視しています。

  • システムの安定稼働と信頼性を担保すること
  • 早期復旧により停止時間を最小化すること

掲げたミッションを実現するために、私たちは日々の業務の中で様々な取り組みを行っています。この記事では詳細まで踏み込んで解説はしませんが、私たちのチームが実践していることについてかいつまんでご紹介します。

システムの安定稼働と信頼性を担保すること

深夜作業によるリスク低減

影響範囲の大きい機能開発や改修をリリースする場合や、バージョンアップ、インフラ構成の変更に伴うメンテナンスは深夜に実施するようにしています。深夜帯ではeギフトの利用が少ないので、リリースやメンテナンス作業の結果システムに不具合が生じた場合に及ぶ影響を最小化できるためです。

また、深夜作業は基本的に2人以上で実施し、ミスがないようにしています。さらに、メンテナンスでは実施前に検証環境でリハーサルを行い停止時間を把握しておくことや、切り戻しの基準や手順を準備しておくことで、有事の際の停止時間を最小限に抑えるよう努めています。

データ整合性の担保

多種多様なPOSレジや決済端末と連携する性質上、DBが分散する構造となっています。その結果、外部システムとのデータ不整合により、eギフトが利用できないことや、不正利用のリスクが発生します。実際にこのような状況が発生してしまうと、eギフト提供者やユーザーの信頼を大きく損ねてしまいます。そのため、冪等性を持ったリトライ処理や、外部システムから定期的に利用データを取り込む突合によってデータの整合性を保つようにしています。

早期復旧により停止時間を最小化すること

迅速な復旧対応

突発的なアクセス数の増加やシステムエラーの発生、インフラのキャパシティ不足など、システム停止につながる事象が発生した場合は、業務で使用しているチャットツールに通知しています。深夜の障害が発生した場合でも対応できるように、24時間監視を行い異常があれば電話で通知される体制を整えています。チームには、通知に対して即座に誰かがリアクションし、初動対応が始まる文化が根付いており、検知時間と復旧時間の短縮を意識して動いています。

直近では、外部の知見を取り入れながら障害対応手順の見直しを行いました。現行の運用を再整備したことで、属人性を排除し初動の速度向上につながりました。 tech.giftee.co.jp

また、eGift Systemはeギフトの生成に関わる多数の外部サービスと連携しています。 したがって、外部サービスのシステムが停止したり動作が不安定になると連鎖的にeGift Systemにも影響が出ます。そういった場合でも、迅速に社内周知を行い、必要に応じてエンドユーザーに告知、障害が発生している連携先サービスへ問い合わせ、といった対応をすることで影響を最低限に抑えるよう努めています。

BCP対応

大規模な災害や事故を想定したBCP(Business Continuity Plan、事業継続計画)の一環として、地理的に離れた複数のリージョンを設け、レジリエンス強化に取り組んでいます。また、実際にシステム拠点の切り替えが必要な事象が発生した場合にスムーズに切り替えが行えるよう、年に1度システム拠点の切り替え訓練を実施しています。この訓練が、定期的な手順書の確認やバックアップ用システム拠点の構成見直しにもつながっています。

おわりに

eGift Systemは、eギフト事業全体を支えるプロダクトです。システムを止めないという強い責任感を持ちながら、サービスの信頼性維持に努めています。 本記事を通じて興味を持っていただけましたら、ぜひカジュアル面談からお話ししましょう。

giftee.co.jp