こんにちは、ペイメント事業部システム課マネージャーの戸田です。
今回はサブスクペイのシステム基盤である決済システム開発フローについて紹介します。
決済システムの開発サイクル
まずリリースサイクルですが、請求管理ロボは毎週リリースされますが、サブスクペイは毎月リリースのサイクルで開発を行っています。
リリースが月単位なのは、現在システム環境のほとんどがWindowsサーバーを利用しており、毎月のWindows Updateの適用で一時的にサービス停止を行うため、そのタイミングでリリースも行っております。
また、サブスクペイはクレジットカード情報を取り扱うため、PCI DSSの要件に沿った開発を行っており、開発者とは別の担当者にテストやコードレビューをしていただくので、ある程度余裕を持ったスケジュールにしています。
決済システムの開発フロー
では次に開発フローについてです。
開発フローは基本的に以下となります。
要望確認
プロダクトロードマップ、顧客や社内からの要望、不具合報告などサブスクペイに対して様々な改修要望が日々あがってきます。
それらをペイメント事業部の事業部長、マネージャー、CTOが参加する会議で現在の状況や今後の方向性などをもとに対応優先度を決定します。
リリースプランニング
要望確認で決定した優先度をもとに、マネージャーが今後のリリースしたいものをバックログのリストに追加します。
その後、マネージャーと機能開発メンバーが参加する会議でバックログのリストを見ながら今後のリリース計画を決定します。
尚、最近は概算見積もりにプランニングポーカーを導入していますが、人それぞれの意見があってなかなか面白いですね。
インセプションデッキ作成
こちらは現在メジャー開発と呼ばれる開発期間の長い規模が大きいプロジェクトの場合のみですが、プロジェクトの方針を定めるため、最初にインセプションデッキを作成します。
プロジェクトの期間が長いと、どうしても方向性やゴール定義がブレてしまうことがありますが、そうならないように最初にゴール定義、やること・やらないこと、何を優先するのかを決めるようにしています。
プロジェクトの途中でインセプションデッキ振り返り会を実施し、メンバー全員で今やっていることやこれからやろうとしていることが正しいかを確認するようにしています。
もちろん、プロジェクトをより良い方向に導くため、プロジェクトの状況によってはインセプションデッキをアップデートするなど、柔軟な対応も行っています。
要件定義
開発者は機能開発や不具合対応など開発内容や影響範囲の調査をし、どのような開発を行うかをまとめます。
要件定義の内容は基本的にマネージャーがレビューを行います。
ちなみに、決済システム開発では要件定義はAtlassianのConfluenceにまとめています。
設計開発
開発者は要件定義の内容を参考に設計や開発を行います。
開発したものは、別のエンジニアがセキュアコードおよび規約に沿ったコードになっているかの観点でレビューを行います。
ユニットテスト
開発したものが想定通り動くかを確認するため、開発者はユニットテストのコードを書きます。
書いたテストコードは別のエンジニアがレビューを行います。
チェックシート作成
開発したものが仕様通り動くかを確認するため、開発者はシナリオ形式のチェックシートを作成します。
作成されたチェックシートは、テスト担当者がレビューを行います。
テスト
テスト担当者はチェックシートに沿ってテストを行います。
POレビュー
開発されたものは、リリース前に事業部長やサポートなど関係者に確認してもらうためPOレビュー会を開催します。
スライドによる紙芝居だとイメージがわかりにくいため、POレビューではできるだけ開発環境を使って動くものを見てもらいます。
ドキュメント整備
開発した内容を画面遷移図、DB定義書、パラメータシートなどシステム関連のドキュメントに反映します
リリース手順更新
リリース担当者が用意したリリース手順書にリリース内容の動作確認手順を追記します。
リリース
リリース担当者は手順に従ってリリースを行います。
上記開発フローは「システム変更管理手順」としてPCI DSS要件6とも連動しております。
また、最近は「POレビュー」~「リリース」までの間、機能開発チーム全体で目標数を立てて開発メンバー全員でモンキーテストを実施していますが、いろいろな観点でテストも行われるので、品質の面でも効果が大きいと感じてます。
課題
現在はコードレビューやテストが手動で行われているため、人によってばらつきがあったり、そもそも時間や労力がかかっています。
これらの課題については、より効率よく、また品質レベル向上のため、手動で行っている作業はシステム基盤チームとも相談しながら、どんどん自動化を図っていく予定です。
まとめ
システム開発にはいろいろなやり方があると思いますが、決済システム開発も品質の向上や開発のスピードアップのため、開発者からも意見を取り入れながらより良い開発フローにしていきます。
次回は、本記事にもあるPCI DSSについて触れてみようと思いますので、よろしくお願いします!