QUO CARD Digital Innovation Lab Tech Blog

クオカード デジタルイノベーションラボの技術ブログです

QUOカードPayシステムを内製化しました!

デジタルイノベーションラボの齋藤です。

2024年7月24日にQUOカードPayシステムを内製化しました。これにより、発行・決済・残高管理に関わるシステムはすべて内製化されました。

背景

2017年12月の部署の立ち上げと同時に、QUOカードPayシステム開発プロジェクトが開始しました。私が最初のエンジニアとして入社し、エンジニアやデザイナーが社内にいなかったため、システムは外注で構築しました。しかし、外注ではノウハウが社内に蓄積されず、スピード感にも課題があったことから、システムの内製化を決定しました。

期間

4年程かかりました。

システム開発の進め方

私が入社した時点でリリース時期はほぼ決まっており、私自身もプロジェクト開始時にはドメイン知識が全くない状態でした。社員もシステム開発の経験が豊富ではないと聞いていたため、スクラッチで開発すると要件定義に時間が掛かり、予定通りリリースできなくなる可能性が高いと考えました。システム開発プロジェクトは要件定義の問題で失敗する事が多いと考えています。要件定義で問題が発生しないよう、同様なシステムで利用実績のあるパッケージを利用し、早期立ち上げを図ることにしました。またリリース後の保守を考えるとスクラッチソースコードも提供してもらう形が良かったですが、そもそもサービスが立ち上がらないリスクが高いと考え、パッケージを利用することにしました。

システム開発の進め方

ITプロジェクトはリリース時期が遅くなるにつれ更に遅延したりお蔵入りしてしまう可能性が高まると考えています。そのため、まずはできるだけ早期にリリースするというのを最優先に考えました。

QUOカードPayシステムは加盟店等と接続しており、外部向けAPIのインターフェース(I/F)を変更すると接続先にも改修が必要になります。そのため、APIのI/Fは変更せずに進める必要がありました。

旧システムでは他社のパッケージを利用していたため、ソースコードは公開されていませんでした。そのため、外部向けのI/Fを維持しつつ、ソースコードやデータベース(DB)はすべてゼロから作成し直しました。

できれば段階リリースとしたかったですが、現行システムに手を入れる事が難しいため、今回はビッグバンリリースを行いました。

やったこと

業務把握

システム化対象を把握するために、旧システムを利用している業務フローを作成しました。詳細に作成せず、各部署がどの業務でどの機能を使用しているかを把握できるレベルで作成し、必要に応じて問い合わせができるようにしました。

スコープ整理

機能追加は極力避け、現状の機能を再現するのではなく、できるだけ少ない工数で実現できる方法を採用しました。

旧システムの保守ベンダに協力依頼

幸いなことに、旧システムの保守ベンダーから協力を得ることができ、テストおよび不明点の問い合わせ対応をお願いしました。非常に協力的で信頼できるベンダーであり、今回は内製化を進めましたが、将来的に再度協力をお願いする機会があればと考えています。

並行稼働

現行のI/Fと差異がないようにするため、リリース前の数か月間、稼働中の旧システムに届いたリクエストを記録し、新システムで再実行、結果の差異がないかを確認しました。

QAチーム立ち上げ

もともとQAチームは存在していませんでしたが、新たにチームを立ち上げました。

リリースのリハーサル

作成した作業手順や設定に問題がないか、リリース前にリハーサルを実施しました。初回のリハーサルでいくつかの問題が発生したため、合計2回実施しました。

内製化中に発生した問題

データ移行

主に移行ツールの問題で、正しく移行できているかの確認に時間がかかりました。またS3等にアーカイブしているデータがあり、こちらの移行も時間がかかりました。

業務の洗い出し漏れ

認識できていなかった業務がありました。

見積もり

スプレッドシートで見積もりしていましたが、運用の曖昧さや人的ミスで計算修正や管理が都度大変でした。

自動テスト

単体テストよりも結合テストを多めに作成してしまい、CIのテストが時間がかかるようになってしまいました。所謂アイスクリームコーン型になっているため、改善予定です。

旧システムへの機能追加

内製化している際中も現行システムへの機能追加が行われていたが、それらが想定よりも多く、見積もりが想定以上に膨れてしまいました。

リリース後

変わったこと

内製化以前は何か変更しようとするとそれなりの時間が掛かる事があったり、そもそも実現できないということがありました。 内製化後は上記のような制約が無いため、また自分たちで作ったシステムのため、機能改善や障害対応のスピードが向上しました。

また旧システムのDBはパッケージのため汎用的に作られており、理解が難しい部分がありました。新システムでは自分たちが理解しやすい設計になっており、エンジニアの認知負荷が下がり、調査の工数も下がりました。

リリース後に発生した不具合

幸い大きな不具合は発生しませんでしたが、軽微な問題がいくつか発生しました。今のところ全て数日以内に解消できています。

今後やっていきたいこと

旧システムでは、様々な理由で対応できなかった機能追加や改善がありました。今後は順次改善していきたいと考えています。

最後に

ここまでお読みいただき、ありがとうございました!

クオカード デジタルイノベーションラボでは、機能追加や改善のスピードを加速させるため、各チームで新しい仲間を募集しています。

少しでも興味をお持ちいただけた方は、是非カジュアル面談でお話しましょう!

quo-digital.jp