品質が重要なシステムと開発サイクルについて

エンジニアリングマネージャの竹内です。

アソビューでは様々なシステムが存在していますが、品質が特に重要というシステムも存在します。 今回はその中の1つである精算業務を行うシステム(販売管理システム)において、どのような品質対策を行ったかを紹介します。

アソビューの販売管理システムとは?

アソビューのビジネスはアクティビティ予約や電子チケット購入に対して、顧客(レジャー事業者)から手数料を頂くモデルです。 クレジットカードなどの事前決済もあれば現地決済も可能ですので、アソビューから顧客に対して請求することもあれば、支払うこともあります。

最初はアウトドアレジャーから始まったアソビューですが、現在ではさまざまな遊びのジャンルを取り扱っています。ジャンルや事業者によっては商習慣が異なり特殊な精算を行うケースもままあります。 通常では月末締めで精算を行うのですが、例えば

  • 販売ベースか体験(催行/チケット利用)ベースで計上するのか
  • キャンセル料金の取り扱い
  • 興行系イベントだった場合その興行が終了したら精算するため月末締めとは限らない
  • などなど

多様な精算に対応する必要があるため販売管理システムを内製しています。(システムでの対応が間に合ってなかったり、超レアケースで運用で対応している部分もあります・・)

どのような課題か?

販売管理システムはお金の計算が主たる処理であるため高い品質が求められます。しかしながらシステムの不具合によりインシデントが頻発していた時期があり、多いときには5件/月発生していました。

インシデントが発生するたびに、営業・経理・開発で金額が正しいか再計算・検算し確認 を行っていて非常に手間と時間がかかります。当然顧客からの信頼も落ちてしまいます。

このようなことが今後起きないように以下の品質改善を図りました。

対策1: QA をアサインしリグレッションテスト実施を徹底する

インシデントが発生していた当時は、システムの変更やリリースは動作確認が完了次第随時リリースを行っていましたが、テストが十分に行えていない場合もありインシデントにつながっていたケースがありました。

そこで社内の別チームにいたQAメンバーを、このチームへ異動できるよう調整しアサインしました。これによりリグレッションテストを常に実施する体制にしました。リグレッションテストは以下の観点にわけ、これをリリース前に行います

  • 集計データの確認: システム変更前後で集計結果が一致するかを確認
  • 集計業務のシナリオに沿った確認: システム変更した部分が期待通り動作するか確認

また QA はこちらの記事にもあるように Shift Left を意識して動いてくれました。

tech.asoview.co.jp

アサインされた QA はこのシステムについての知見はありませんでしたが、Shift Left に則り開発や経理のメンバーから仕様をキャッチアップしながらテスト設計を行いました。 開発と協力してデータを準備したりテストの精度を上げたりして 1 ヶ月後にはリグレッションテストとして開発サイクルに組み込まれました。 その後も効率よくテストを実施できるようにしたり、テストケースを追加したりとブラッシュアップは続いています。

対策2: 月イチリリースとする

これまでは本番リリースは五月雨に行っていましたが、月に1回としました。理由は以下です。

  • 精算業務は月次で行われている
  • リグレッションテストを効率的に行う

月イチと定めた結果タイムボックスが明確になり、

  • QA期間
  • リリース日
  • 開発期間
  • リリース判定日
  • 振り返り/次月プランニング

などのスケジュールが自然と決めていけます。 スケジュールを決めるときには、「このシステムでは品質が最重要」と位置づけ、まずQA期間をしっかり確保した上で他の期間を決めていっています。

対策3: ビジネス側とのコミュニケーションを定期的にとる

これは対策2の副産物といえるかもしれませんが、スケジュールを決める際にビジネス側との定例ミーティングも設定しました。

  • 要件や課題の確認と優先順位
  • その月のリリース予定の変更内容

前者は今後の開発に関わることなのでもともと行っていましたが、追加で後者を実施するようにしました。 これまではリリース直前にリリース内容を共有していました。 月イチリリースに変更し次月リリース予定を決めることができたため、適切なタイミングでリリース内容をビジネス側に共有できるようになりました。

対策の効果

現在ではシステム起因のインシデントは 0件/月 まできました。成果は一定出せたのではないかと考えています。 特に以下2点は成果を出すためには重要だったと思います。

  • QAというテストを専任できるメンバーを配置しリグレッションテストの計画・設計・実施を毎月確実に実行する
  • 月イチリリースに変更し、リグレッションテストを効率よく確実に実行できるようにする

すべてのシステムにQAをアサインすることは難しいかもしれませんが、品質が特に重要というシステムでは重要な存在だと改めて思いました。QAの存在はとても頼もしいです!!

今後の課題

システム起因のインシデントの発生は抑えられていますが、システムで対応できていない運用部分ではインシデントが発生したり、手間がかかっている状況です。今後はできるだけシステムでカバーできるように且つ高品質でリリースしていくことが課題です。

最後に

アソビュー!のような主力サービスはもちろん目立ちますし華やかに見えるかもしれません。しかしその裏側では地味ですが堅実な開発が求められるシステムも存在します。この記事でさまざまな特性をもつシステムがアソビュー社内に存在し、その領域で活躍している様々なエンジニアがいるということが少しでも伝わればと思います。

そしてエンジニアを絶賛募集中ですので少しでも興味があればお気軽に以下にアクセスください!よろしくお願いします! www.asoview.com