Share
Embed
"統合ERP"とアプリケーションアーキテクチャ
2024年 freee技術の日で使用した登壇スライドです。
session archive: https://www.youtube.com/live/Vih4vuNxPT4?si=ZCxIcz6wGu6J0Sxo&t=9300
keitatomozawa
June 01, 2024
Transcript
38 slides
-
• freeeのビジョン • アーキテクチャのこれまでと現状 • “業務の分断” を起こさない為のドメ イン境界の設定 • 業務ドリブンなドメイン境界がもたら
す分断 • 分断を解消するための“繋げる”技術 agenda -
• freeeのビジョン • アーキテクチャのこれまでと現状 • “業務の分断” を起こさない為のドメ イン境界の設定 • 業務ドリブンなドメイン境界がもたら
す分断 • 分断を解消するための“繋げる”技術 agenda -
7 だれもが⾃由に経営できる 統合型経営プラットフォーム。 だれもが⾃由に⾃然体で経営できる環境をつくるために、「統合型経営プラットフォーム」を開発‧提供します。 バックオフィス業務を統合することで、⾃動化と業務全体の効率化。さらに経営全体を可視化することで、 これまでにないスマートかつ最適なアクションまで実⾏できるプラットフォームへと進化させていきます。 また外部サービスとも連携したオープンプラットフォームとして、多様なビジネスニーズに対応。 ユーザーネットワークの中における相互取引の活性化も強化していきます。 プラットフォームの提供のみならず、スモールビジネスに携わる⼈の環境そのものを
より良くしていく取り組みを⾏うことで、世の中の変化を促します。 Vision -
経営を阻む3つの「分断」 1 業務の分断 例 • 給与の⽀払額を間違えた • 請求額を間違えた 例 •
従業員が紙で提出してくれ ない限り、業務が進まない • 紙のありかがわからない 2 1 3 -
• ただのシステム導入では必ずしも「業務の分断」「コミュニケーションの分 断」「データの分断」を解決できない • それらをを解決するための “統合型” • では、そのような “統合型” のアプリケーションを作る上で、どういったポイ
ントを意識していけば良いのか • まずはこれまでのアーキテクチャから振り返る why 統合: 経営を阻む3つの分断 -
• freeeのビジョン • アーキテクチャのこれまでと現状 • “業務の分断” を起こさない為のドメ イン境界の設定 • 業務ドリブンなドメイン境界がもたら
す分断 • 分断を解消するための“繋げる”技術 agenda -
• 2013年にfreee会計リリース後、2014年にはfreee人事労務(当時は給与 計算のサービス)をリリース • その過程で、プロダクト間で共有したい基盤系の機能のマイクロサービス 化が進行 ◦ 認証認可・課金等、プロダクトを跨いでも共通であって欲しい機能群 • 一方、個々のサービスはモノリスとして発展
◦ サービス・組織の発展とともにいわゆるモノリスが故の難点も見えてくる 複数プロダクトの展開と基盤系サービスの発展 -
• 大雑把な現状のアーキテクチャ ◦ 外向けの “プロダクト”の単位が一つごとにモジュラモノリスのサービス ◦ 基盤系の機能群についてはマイクロサービスで提供 • モジュラモノリスであることの強みとして、プロダクトの進化に合わせてドメ イン理解とともにモジュールの分割粒度を徐々に変えていくことが可能なこ
とがあげられる • では、今のアーキテクチャで「3つの分断」は回避できるだろうか? 現状のアーキテクチャまとめ -
• freeeのビジョン • アーキテクチャのこれまでと現状 • “業務の分断” を起こさない為のドメ イン境界の設定 • 業務ドリブンなドメイン境界がもたら
す分断 • 分断を解消するための“繋げる”技術 agenda -
• マイクロサービスにせよモジュラモノリスにせよ重要になるのはドメイン境 界の設定 ◦ ドメイン境界≠ユーザーから見たサービス境界ではあるが、間違ったドメイン境界の設 定は「業務の分断」に繋がる • 特に物理的に分割された複数のサービス間で後から重要な結びつきが必 要なことがわかると大変 ◦
物理的な構成を変えるのももちろん大変だし、物理的な構成を変えないままその重要 な結びつきを表現するもの大変 • では何をもってサービスの境界を設定するか? ソフトウェアアーキテクチャにまつわる悩み -
• BtoBの領域は多くのSaaSが出現 するより前からパッケージ製品は もちろん、各企業内製のシステム を作っていたり、広く認知されてい るわけではないが様々な知見が 存在している • その中の一部は書籍などで触れ ることができる
BtoBのドメインは先駆者がいる領域 梅田弘之氏著 「グラス片手に~ 」シリーズ 販売管理システム編では、そっくりそのまま使え るわけではないが、業務の説明に加え詳細なレ ベルでのテーブル設計の例が紹介されている -
• 実現したいユーザーストーリーの積み重ねで考えるのではなく、「こうなって いてほしい」データ構造から考える ◦ 「こうなっていてほしい」に既知の知見が生きる ◦ 先述したような共有知になっているようなものはもちろん、freeeのようにすでに成長し ているプロダクトであれば、その中での運用の肌感も生かせる • ここは絶対にjoinするであるとか、このデータとこのデータのトランザクショ
ンは絶対に必要、というようなところからドメイン分割のラインを見極める • なぜデータから考えると良いのか? データモデリングから考える -
• 高度に組織化された会社活動では、データを作るために人間が “業務” を 行う ◦ 極論どんぶり勘定で良いのならば財布のお金の増減だけ見れば十分で、管理する必 要のある “業務” は存在しない
• そのため、どのようなデータを管理したいのかが業務の流れを理解するの には非常に重要 • ドメインの境界をどこに設定するかについては、大雑把にいえば会計処理 にまつわるところは経理部が勤怠や給与は労務部が、といったように実際 の組織を想像した時に違う部署になるような業務領域は、物理的な結合が 必要なほど強い結びつきにはならないことの方が多い データこそが業務の核 -
• freeeのビジョン • アーキテクチャのこれまでと現状 • “業務の分断” を起こさない為のドメ イン境界の設定 • 業務ドリブンなドメイン境界がもたら
す分断 • 分断を解消するための“繋げる”技術 agenda -
• そもそも統合ERPであるfreeeを使うメリットは何か • 日々の記帳をし、決算書を作るだけであれば仕訳が打てるシステムがあれ ば十分 • 統合ERPではその先を提供したい。例えば... ◦ 決算がよくなかった→何が原因かを理解し、対策を打ちたい ◦
営業利益が赤字になったとして、具体的にどの案件での赤字なのか?どんな経過だっ たか?そもそもの見積もりは? 課題の一例: データの一貫性、トレーサビリティ -
• つまり、統合ERPの強みはドメインを跨いでもデータが “繋がっている” こと が重要 • 個別のプロダクトでただただ記録をつけているだけでは、プロダクトを跨い だ時にデータの間の関係性が記録できない(意識してそういう運用を敷く必 要がある) •
→ “データの分断” の一例 課題の一例: データの一貫性、トレーサビリティ -
• ワークフローにおいては「申請者」と「承認者」の二つの視点がある • 申請者の視点 ◦ 「経費精算申請」をする時は、どういう目的で何にどれだけの金額を使ったかが重要 ▪ 承認された結果、自動的に経費精算の振り込みのデータも作って欲しい ◦ 「有休申請」をする時は、いつ取るかや何日残ってるかなどが重要
▪ 承認されたら、勝手に勤怠の登録もして欲しい • 申請者からの視点では、どのドメインの申請であるかは重要 ◦ 申請の画面がその申請が属するドメインのサービスにあるのは自然 課題の一例: ユーザーによる視点の差 -
• 承認者の視点では、それがどのドメインの申請かは重要ではない • 承認しなければいけないものが数十も溜まっているのに、それが複数のプ ロダクトに分散しているとなかなか大変 • 承認者の視点では、「全部の承認がまとめてみたい」 • 業務ドリブンで設定した境界が、またある人にとっては “分断”
に感じられる 例 • → “コミュニケーションの分断” の一例 課題の一例: ユーザーによる視点の差 -
• freeeのビジョン • アーキテクチャのこれまでと現状 • “業務の分断” を起こさない為のドメ イン境界の設定 • 業務ドリブンなドメイン境界がもたら
す分断 • 分断を解消するための“繋げる”技術 ◦ と、解決できていない課題も少しご紹介 agenda -
• 承認者の視点ではプロダクトの境界を意識したくない • そのために「すべての承認すべき申請」を集約し、一覧できる機能を提供 • 幾つのプロダクトにまたがって存在する申請を束ねて一覧するために Elasticsearchを利用 • 一覧の必要はあるが、例えばそれらの申請を束ねて承認したい、といった ことはないので、結果整合でElasticsearch等の参照のためのDBに入って
いれば十分 ◦ 厳密にはあるかもしれないが、申請を跨いだトランザクションは不要と言えるだろう 申請承認領域における “繋げる” 技術 -
• これまで様々な経緯を経てたどり着いた現在のプロダクトやドメインの境界 は、 “業務の分断” を起こさないための一定の妥当性があった • これで全ての問題が解決されるわけではなく、プロダクト・ドメインの境界を 跨いで解決しなければいけない課題もあり、そうした課題にアプローチする のが統合基盤チーム •
複数のプロダクト・マイクロサービス間を解決したい課題の特性に合わせて 上手く “繋ぐ” 技術が今後のfreeeでは重要になっていく まとめ