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
カオナビにおける マイクロサービスの取組と今後の展開 / kaonavi rearchitec...
Search
Ryo Tomidokoro
March 15, 2022
Technology
2
4.2k
カオナビにおける マイクロサービスの取組と今後の展開 / kaonavi rearchitecturing
カオナビにおける Re Architecturing の現状、今後の方向性について
Ryo Tomidokoro
March 15, 2022
Tweet
Share
More Decks by Ryo Tomidokoro
See All by Ryo Tomidokoro
フロントエンドがTypeScriptなら、バックエンドはPHPでもいいじゃない/php-is-not-bad
hanhan1978
8
12k
どうすると生き残れないのか/how-not-to-survive
hanhan1978
17
13k
100分で本番デプロイ!Laravelで作るWebアプリケーション作成/100min_web_app_cicd
hanhan1978
1
160
PHPerのための計算量入門/Complexity101 for PHPer
hanhan1978
8
2.8k
集中して作業する技術/how_to_work_deeply
hanhan1978
62
49k
PHPでデータベースを作ってみた/create-data-with-php
hanhan1978
11
10k
ADRを一年運用してみた/adr_after_a_year
hanhan1978
8
4k
B+木入門:PHPで理解する データベースインデックスの仕組み/b-plus-tree-101
hanhan1978
5
5.2k
ADRを一年運用してみた/our_story_about_adr
hanhan1978
5
2.3k
Other Decks in Technology
See All in Technology
Kotlinで学ぶ 代数的データ型
ysknsid25
5
1.1k
VCpp Link and Library - C++ breaktime 2025 Summer
harukasao
0
180
Securing your Lambda 101
chillzprezi
0
280
Tenstorrent HW/SW 概要説明
tenstorrent_japan
0
400
New Cache Hierarchy for Container Images and OCI Artifacts in Kubernetes Clusters using Containerd / KubeCon + CloudNativeCon Japan
pfn
PRO
0
160
AWS全冠したので振りかえってみる
tajimon
0
140
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
46
27k
Workflows から Agents へ ~ 生成 AI アプリの成長過程とアプローチ~
belongadmin
3
160
DroidKnights 2025 - Jetpack XR 살펴보기: XR 개발은 어떻게 이루어지는가?
heesung6701
1
110
生成AIをテストプロセスに活用し"よう"としている話 #jasstnano
makky_tyuyan
0
170
2025/6/21 日本学術会議公開シンポジウム発表資料
keisuke198619
2
340
本部長の代わりに提案書レビュー! KDDI営業が毎日使うAIエージェント「A-BOSS」開発秘話
minorun365
PRO
14
1.8k
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
A designer walks into a library…
pauljervisheath
206
24k
Raft: Consensus for Rubyists
vanstee
140
7k
The Cult of Friendly URLs
andyhume
79
6.4k
How GitHub (no longer) Works
holman
314
140k
The Cost Of JavaScript in 2023
addyosmani
50
8.4k
Rails Girls Zürich Keynote
gr2m
94
14k
Why You Should Never Use an ORM
jnunemaker
PRO
56
9.4k
The Language of Interfaces
destraynor
158
25k
How STYLIGHT went responsive
nonsquared
100
5.6k
Music & Morning Musume
bryan
46
6.6k
Transcript
@hanhan1978 カオナビにおける マイクロサービスの取組と今後の展開 SaaS.tech #1 LT
@hanhan1978 カオナビにおける マイクロサービスの取組と今後の展開 SaaS.tech #1 LT
@hanhan1978 カオナビにおける リーアキテクチャリングの取組と今後の展開 SaaS.tech #1 LT
弊社におけるモノリシックサービス改善の取組や経緯です。 少しでも参考になると幸いです。 4 本日のお話
5
現状のソフトウェアアーキテクチャー 6
- PHP (Laravel) - AWS (EC2) - モノリシック いわゆる LAMP
スタック 2012年4月の事業開始から、2回ほどのリアーキテクチャリング 7 https://dev.classmethod.jp/articles/ec2-lamp-al2-userdata/ ※Amazon Linux2 のLAMP環境、PHP7.2と MariaDB10.2.10をUserDataで初期設置してみた
現状の問題点 3つ 8
1. ソースコードの問題点 9
- 機能追加による暗黙知の増大 - ファイル数・ディレクトリ数の増加 - Package by Layer の限界 -
機能ごとに微妙にアーキテクチャーが異なる 10
結果として、Dev/Ops 共に認知負荷が増大 → 一人あたりのコミット数は低下傾向 11
2. インフラの問題点 12
- EC2 (これ自体は問題じゃない) - 開発環境はコンテナ - ECS 等に乗り換えられないと旨味が少ない 13
CodePipeline 利用や、 Blue/Green デプロイなど 改善は進んでいる ソフトウェアエンジニア側がインフラレイヤーに もう少し踏み込める形が望ましい PHPのバージョンアップとか、PHPのバージョンアップとか 14
3. チーム開発の問題点 15
- 開発チーム (Dev) -> 機能開発後は解散 - Dev の開発物は Ops の範疇として積まれる
16
仲が悪いわけではない。 暗黙知の継承など、スムーズに行えているとは言い難い Ops は日に日につらくなる どこかで見たコンウェイの法則 17
ここまでのまとめ 18
- いわゆる事業会社あるある - ゆでガエル状態 19
状況は日に日に悪くなっている気配を感じる 問題の大きさが、各チームが保持するゆとりでは 解決できない大きさになっている Big Ball of Mud 化しつつある 20
21 このへんで、銀の弾丸が求められる
最近のイキのいい銀の弾丸 - マイクロサービス - モジュラーモノリス というあたりで私は入社しました。(2020年11月) 22
@hanhan1978 • 富所 亮 • 所属 ◦ 株式会社カオナビ • 肩書
◦ エキスパート (??) • 役割 ◦ マイクロサービス化担当 ◦ リアーキテクチャリング担当 23
24 弊社における取り組み
25 高度な情報戦 https://codezine.jp/article/detail/15176?p=2
バズワードは使ってますが、私達は正気です。 手段を目的にしない! 26
最近のマイクロサービスについての情報 27
- Mercari - Retty - 本イベント 皆様アウトプットしてくれてありがとう... 28
コアドメインを含めたマイクロサービス化は、相当の困難が ありそう 集約として切り離しやすそうな機能は事例がチラホラ BFFとかもよく聞く 29
マイクロサービス化の結果として縦割り組織ができないか? Customer Success の阻害要因にならないか? 慎重な組織設計も求められる 30
マイクロサービス化は、その後の運用 チーム体制、その他考慮することがたくさんある ログどうする?デバッグどうする?結果整合性?とりあえずツラい 31
最近のモジュラモノリスについての情報 32
33 原点確認 http://www.codingthearchitecture.com/presentations/sa2015-modular-monoliths
34 http://www.codingthearchitecture.com/presentations/sa2015-modular-monoliths 分散デカ泥団子
モノリスを適切なモジュラー分割できないのは マイクロサービス以前 モジュラーモノリスの実例は、少しずつ出てきている 最近は弊社と同じ境遇の会社がモジューラモノリスに舵を切っている雰囲気を感じ ている 35
36 神発表の予感 https://fortee.jp/phperkaigi-2022/proposal/95bc3631-7683-4201-9f82-d7e7feeb7bab PHPerKaigi 2022, 4/9〜11 チケット発売中
Reアーキが現在考えていること 37
モノリスの複雑化の増大に対して どうやって軽減、改善していくかという構想・妄想 38
39 基本の考え方
40 モノリスを水平・垂直で考える
41 水平の例
- 認証 - 通知 - メール送信 - バッチ フレームワークにおいて、ミドルウェアで切り出されるような機能群 コアドメインから疎結合にしやすい
AWSのマネージドサービス利用、マイクロサービスとしての分割が現実的 42
43 垂直の例
- カオナビの各機能単位のソースコード群 - 各機能から使われる共通モジュール - フレームワーク 機能単位では Package By Feature
で名前空間・ディレクトリで分割 Composer Package として責務分離することで、全体の認知負荷を軽減 44
45 大切にしていること
- 既存の価値提供が毀損されないこと - セキュリティ的に脆弱な構成にならないこと - ビッグリライトを避けること できれば、後戻りができる算段をした上で段階的にやりたい 46
47 アーキテクトが価値を提供する相手
- 顧客・一般ユーザー - 開発者 顧客はもちろん、開発者の開発体験にも寄与したい。 秩序を保ちつつ、チャレンジの余地を残すアーキテクチャーの模索 48
49 実際に取り組んでいること
- プロトタイピングによる実験 - Composer Package を使ったモジュールの分割 - AST に影響を与えにくいリファクタリング -
コメント追加 - メソッド移動、名称変更 - 未使用クラス・メソッドの削除 50
- 考古学調査 - Unknown unknown の掘り出しと文書化 - 曖昧な仕様の調査と文書化 - 複雑な仕様の調査と文書化
- とにかく調べて調べて調べて調べて...... 51
問題から目をそらさない! 52 地味でも、大切な改善を繰り返す。栄光のゴールはその先に見えてくる!
53 https://kaonavi.connpass.com/event/240653/ 来週木曜開催!!
54 私と一緒に考古学調査しませんか? https://corp.kaonavi.jp/recruit/list
55 ご清聴ありがとうございました。