ROBOT PAYMENT TECH-BLOG

株式会社ROBOT PAYMENTのテックブログです

請求書12万件を1時間で。エンジニアらが叶えた「大量発行」への道

「請求管理ロボ for Enterprise」は、請求書の大量発行を実現するSaaS製品です。 サービス誕生に至る開発エピソードをまとめましたので、ぜひご覧ください!




2022年12月某日、請求管理ロボから発行される一日あたりの請求書件数が10万を超えた。処理時間はおよそ3時間、1件あたりの平均は0.1秒だ。 ローンチから8年、経理DXを牽引する請求・債権管理SaaSがいかにして10万件処理を実現したのか、その軌跡を辿る——。

1件の重み、多機能な請求書システムと大量処理

請求管理ロボというシステムは、請求書発行時の処理が複雑で作成するデータが多い。 シンプルな請求書発行システムであれば明細と請求書を作成するのみだが、請求管理ロボでは、売上の作成から計上、計上仕訳の作成、明細の作成、請求書の作成に至るまでを行う。さらに、クレジットカードや口座振替などの決済を実行し、消込仕訳を作成するといった請求書発行後のプロセスも併せて実行している。

そんな請求管理ロボは、顧客数の多い大手上場企業の導入をきっかけに、大きくアップデートされることになった。 それは、月に10万件以上の請求書の自動発行を可能にすること。 他にも、明細の登録量が多く、明細ごとに紐付くカスタム項目を多用する場合に、多くのデータ処理が必要だった。

その時点での請求管理ロボは、導入企業の全ての件数を合算しても、1社の発行件数が一日で10万件を超える実績はなく、明細とカスタム項目のデータ量がこれほど多いケースも同様になかった。

しかし、請求管理ロボは単なる請求書の発行を自動化するだけではなく、その後の集金や入金消込、催促をも自動化する一気通貫したシステム。月10万件以上の入金消込や催促も任せられるとなると、先方の期待は大きかった。

数年先を見越したデータ検証で、安心感のあるシステムを

エンジニアたちが心がけたのは、プロファイリングを行った上で、処理が遅いなどボトルネックになっているところを可視化し、丁寧にチューニング行うということ。 クラウドシステムにおいて何らかの原因になる可能性が高いのは、ネットワーク、CPU等のハード面、そしてデータベースに分けられる。

今回の場合、それぞれをプロファイリングした結果、データベースのチューニングだけで、大幅な改修なしに実現できることがわかった。そのためクエリを安定させるのが主な作業となり、インデックスを指定して実行計画をコントロールした。

特に慎重に行ったのは、データ構成の検証だ。導入時だけ使えればいいというものではなく、2、3年後に請求件数が増える場合も見越して、パフォーマンスが悪くなる可能性があるか、その条件は何か検証しなければならない。 請求先やカスタム項目などあらゆるデータを登録したり、参照したりするのに要する時間を、導入先の実務担当者が行うように一つ一つ実行し確認していったのだ。

CPOの田本とプロジェクトのリーダーを務めた田中に当時の心境を聞くと、「調査の結果、9割くらいの確信がないと前に進めないのがエンジニア。間違った方向で進んで後から気づいても戻るのはとても大変なので、無駄な負債をつくらないためにギャンブルはしない」と語った。期待が大きかっただけに、後ろには下がれない、何とかなるというより何とかするんだという気持ちが大きかったという。

一日で10万件以上自動発行した日

同年11月に、大手企業向けとなる「請求管理ロボ for Enterprise」の提供を開始。これは請求業務が集中する月末月初でもパフォーマンスを落とさず、大量の請求処理を可能にする、耐久性の高いシステムへのバージョンアップだ。この目玉として、10万件対応を打ち出した。

ローンチから2週間足らずの12月某日に、約3時間で10万件以上の請求書を自動発行したことがわかった。これは、当初予定していた「1社単月10万件以上」ではなく「一日10万件以上」の処理ができたと実証されたということになる。

それから年度も変わり2023年4月になると、12万件もの自動発行を現実のものにした。処理時間は1時間強。バージョンアップ以前におよそ1時間で処理できる件数は、平均して2.7万件。それを大きく上回る結果となった。

請求書の自動発行は、発行の条件や項目の詳細によって処理速度が変動する。早い1件もあれば、遅い1件もある。それを踏まえても今回のことは、エンジニアらが日々PDCAを丁寧に回した結果といえるのではないだろうか。

無駄を省いて、丁寧に。技術的向上のための3つのポイント

彼らは請求管理ロボを成長させていく上で、3つのポイントがあるという。

まずは可視化だ。データを可視化することで、請求件数が増えていく途中に問題がないかを常時モニタリングしている。

次にアラート通知をうまく活用すること。ダッシュボードを作成し、毎日状況を確認。発行処理に何らかの不具合が発生した場合や、一定ラインを超えるとアラートが鳴る仕組みをつくり、迅速に対応できる環境を整えている。

最後は、チームビルディング。開発チームだけでなくCRE(Customer Reliability Engineering:顧客信頼性エンジニアリング)と一緒に取り組むことで、改善のためのPDCAをより良いサイクルで回すことができる。

チームビルディングは、請求管理ロボの開発チームではこだわりの強いところである。サービス開始当初から体制ができていたわけではない。ここ数年でCPOやCTO、外部顧問をはじめ、真摯に開発に取り組むための姿勢と環境整備が行われてきた。

万が一、請求管理ロボに不具合が発生し、改善が必要な場合にはパフォーマンスチューニングを行う。チューニングは、1件の請求書を発行・送信するためにかかっていた時間を短縮したり、インデックスからデータを探し出す時間を短縮したりする「処理速度」と、1件の請求書に対応するサーバーや人員を増やす「分散処理」のふたつの視点から考える。

まず前提として、「無駄を省く」というアプローチで、請求管理ロボの心臓ともいえるデータベースをチューニング。徐々に速度の改善や質の向上を図った結果、10万件以上の処理時間はサービス開始当初と比べて約1/100となった。これは平均すると1〜1.5時間で処理を可能にすることを表している。

田中は処理件数が伸びていることに対し、「嬉しい気持ちもあるが、今後も顧客満足度を維持・向上させるためにさらなる改善をしていかなくてはいけないので気が引き締まる」と語った。

経理・請求業務の解像度を高めて

10万件対応のほか、1つのアカウントに複数の請求元を登録できる機能も加わった「請求管理ロボ for Enterprise」は大手企業専任チームの手に渡り、いま多くの企業をサポートしている。

請求管理ロボは導入支援が手厚いとの声も多い。請求管理ロボに関わっている社員たちが、企業は「売掛金を回収する」業務が必須であり、売上原資を回収するラストタッチが請求業務であるということを、顧客の実務担当者と同じくらい理解しているからだろう。

請求管理ロボを運営するROBOT PAYMENTは、今年で24年目に突入する。創業当時からの主軸事業である決済事業に、請求要素を加えて誕生したのが、この請求管理ロボである。

「決済『+α』で世の中の課題を解決する」というブランドアイデンティティを掲げて進んでいく姿に注目してほしい。



We are hiring!!

ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!

speakerdeck.com
www.robotpayment.co.jp