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.9k
カオナビにおける マイクロサービスの取組と今後の展開 / kaonavi rearchitecturing
カオナビにおける Re Architecturing の現状、今後の方向性について
Ryo Tomidokoro
March 15, 2022
Tweet
Share
More Decks by Ryo Tomidokoro
See All by Ryo Tomidokoro
開発者が知っておきたい複雑さの正体/where-the-complexity-comes-from
hanhan1978
8
3.4k
Spec Driven Development入門/spec_driven_development_for_learners
hanhan1978
2
1.8k
フロントエンドがTypeScriptなら、バックエンドはPHPでもいいじゃない/php-is-not-bad
hanhan1978
8
14k
どうすると生き残れないのか/how-not-to-survive
hanhan1978
17
15k
100分で本番デプロイ!Laravelで作るWebアプリケーション作成/100min_web_app_cicd
hanhan1978
1
260
PHPerのための計算量入門/Complexity101 for PHPer
hanhan1978
8
3.6k
集中して作業する技術/how_to_work_deeply
hanhan1978
65
55k
PHPでデータベースを作ってみた/create-data-with-php
hanhan1978
11
11k
ADRを一年運用してみた/adr_after_a_year
hanhan1978
8
4.9k
Other Decks in Technology
See All in Technology
TUNA Camp 2026 京都Stage ヒューリスティックアルゴリズム入門
terryu16
0
640
Embeddings : Symfony AI en pratique
lyrixx
0
430
Kubernetesの「隠れメモリ消費」によるNode共倒れと、Request適正化という処方箋
g0xu
0
160
出版記念イベントin大阪「書籍紹介&私がよく使うMCPサーバー3選と社内で安全に活用する方法」
kintotechdev
0
120
Navigation APIと見るSvelteKitのWeb標準志向
yamanoku
2
130
PostgreSQL 18のNOT ENFORCEDな制約とDEFERRABLEの関係
yahonda
0
150
Datadog で実現するセキュリティ対策 ~オブザーバビリティとセキュリティを 一緒にやると何がいいのか~
a2ush
0
180
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
3
2k
20260323_データ分析基盤でGeminiを使う話
1210yuichi0
0
210
パワポ作るマンをMCP Apps化してみた
iwamot
PRO
0
240
タスク管理も1on1も、もう「管理」じゃない - KiroとBedrock AgentCoreで変わった“判断の仕事”
yusukeshimizu
0
150
AgentCoreとLINEを使った飲食店おすすめアプリを作ってみた
yakumo
2
270
Featured
See All Featured
Reality Check: Gamification 10 Years Later
codingconduct
0
2.1k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.8k
Agile that works and the tools we love
rasmusluckow
331
21k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
260
Crafting Experiences
bethany
1
97
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
150
Large-scale JavaScript Application Architecture
addyosmani
515
110k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
How to Think Like a Performance Engineer
csswizardry
28
2.5k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
120
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 ご清聴ありがとうございました。