Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
freee 技術の日 2024 Day1 進化していくシステムアーキテクチャ
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Yu Usami
June 03, 2024
Programming
2
11k
freee 技術の日 2024 Day1 進化していくシステムアーキテクチャ
freee 技術の日 2024
にて発表した『進化していくシステムアーキテクチャ』のスライドになります。
発表のアーカイブはyoutubeにて
公開されて
いますので、そちらをご覧ください。
Yu Usami
June 03, 2024
Tweet
Share
More Decks by Yu Usami
See All by Yu Usami
海外進学→現地就職→転職帰国→転職→レイオフ
usami
3
1.1k
Other Decks in Programming
See All in Programming
grapheme_strrev関数が採択されました(あと雑感)
youkidearitai
PRO
1
210
DSPy入門 Pythonで実現する自動プロンプト最適化 〜人手によるプロンプト調整からの卒業〜
seaturt1e
1
630
コーディングルールの鮮度を保ちたい / keep-fresh-go-internal-conventions
handlename
0
170
ふつうのRubyist、ちいさなデバイス、大きな一年 / Ordinary Rubyists, Tiny Devices, Big Year
chobishiba
1
420
Agentic AI: Evolution oder Revolution
mobilelarson
PRO
0
140
Ruby and LLM Ecosystem 2nd
koic
0
270
モジュラモノリスにおける境界をGoのinternalパッケージで守る
magavel
0
3.5k
ご飯食べながらエージェントが開発できる。そう、Agentic Engineeringならね。
yokomachi
1
290
Claude Code の Skill で複雑な既存仕様をすっきり整理しよう
yuichirokato
1
350
CSC307 Lecture 13
javiergs
PRO
0
310
Docコメントで始める簡単ガードレール
keisukeikeda
1
110
AIコーディングの理想と現実 2026 | AI Coding: Expectations vs. Reality 2026
tomohisa
0
1.2k
Featured
See All Featured
Navigating Weather and Climate Data
rabernat
0
130
Building an army of robots
kneath
306
46k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.5k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.3k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
1
1.3k
Site-Speed That Sticks
csswizardry
13
1.1k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
470
Six Lessons from altMBA
skipperchong
29
4.2k
Design in an AI World
tapps
0
160
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
210
Transcript
進化していく システムアーキテクチャ 宇佐美 ゆう 2024年5⽉31⽇
2 宇佐美 ゆう 2023年4月入社 - サービス基盤 全社にまたがるアーキテクチャ課題の 解決と基盤技術開発に従事 システムアーキテクト
1. SaaS企業の成⻑とアーキテクチャの変遷 2. freeeが抱えるアーキテクチャ課題 3. アーキテクチャ課題解決に向けての取り組み 進化していく システムアーキテクチャ
SaaS企業の成長 創業期 急成長期 成長拡大期
創業期 • ユーザー数・売上は0 • 2〜3人で開発 • とにかくリリース! • 開発・運用コストは最低限で
創業期のシステムアーキテクチャ app servers database server load balancer client
freee(2012-2013)のシステムアーキテクチャ app servers database server load balancer client freee会計 MySQL
Rails • CEO含む3人で開発 • 2013/3確定申告リリース目標 • Rails + EC2
SaaS企業の成長 創業期 急成長期 成長拡大期
急成長期 • ユーザー数・売上共に伸びてきた • 10〜20人で開発 • 事業拡大・機能追加・安定稼働 • 資金面の余裕
急成長期のシステムアーキテクチャ client database servers service A service B
freee(2014-2017)のシステムアーキテクチャ client service A freee会計 freee人事労務 共通 Auth • エンジニア
20人ほど • HRプロダクトリリース • 共通機能の切り出し
SaaS企業の成長 創業期 急成長期 成長拡大期
成長拡大期 • 事業の多角化 • 100人超で開発 • 開発生産性・自動化 • コスト最適化
成長拡大期のシステムアーキテクチャ app containers database clusters client
freee(2018-2023)のシステムアーキテクチャ app containers database clusters client EKS Aurora Read-only Replicas
• エンジニア 80〜250人 • 増えたサービスの統制 • DBパフォーマンス問題
freeeが抱えるアーキテクチャ課題 サービス数の爆発 依存関係の複雑化 パフォーマンス問題 開発生産性の鈍化 障害の高度化・重篤化
1. 依存関係をシンプルに 2. 肥⼤化したサービスの分割 3. 標準化‧ガイドライン整備 アーキテクチャ課題解決への取り組み
1. 依存関係をシンプルに 循環依存 相互依存
1. 依存関係をシンプルに PubSubの仕組みで相互依存・循環依存を解消 service A service B
1. 依存関係をシンプルに PubSubの仕組みで相互依存・循環依存を解消 subscribe publish
event stream service A service B
2. 肥大化したサービスの分割 ドメインベースでのサービス分割 ドメイン分析を元に、適切な粒度でのドメイン分割を実現する • 会計モノリスからの各種サービス切り出し • 肥大化したサービスへの追加機能開発制限 • 新規サービスの立ち上げを容易に
3. 標準化・ガイドライン整備 サービス間連携ガイドライン 複数サービスとの連携を前提としたサービスを実装する際の原則・実装例 原則例: • 連携先のサービスが常に正常に動作することを前提としない • freee API標準に準拠し、API経由もしくはイベント経由で連携する
• サービス間での相互依存・循環依存をしない • 分散トランザクションを実装しようとしない
3. 標準化・ガイドライン整備 ドメインサービスのガイドライン ドメインサービスの切り分け方・実装の指針となるべく策定中 検討項目: • SLI / SLO •
DB write がスケールする実装方針 • freee-bootstrap の利用
おわりに アーキテクチャには正解も不正解もない。 あるのはトレードオフだけだ。 『進化的アーキテクチャ』著者 Neal Ford
None