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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Ryo Tomidokoro
March 15, 2022
Technology
2
4.8k
カオナビにおける マイクロサービスの取組と今後の展開 / 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.3k
Spec Driven Development入門/spec_driven_development_for_learners
hanhan1978
2
1.5k
フロントエンドがTypeScriptなら、バックエンドはPHPでもいいじゃない/php-is-not-bad
hanhan1978
8
13k
どうすると生き残れないのか/how-not-to-survive
hanhan1978
17
14k
100分で本番デプロイ!Laravelで作るWebアプリケーション作成/100min_web_app_cicd
hanhan1978
1
240
PHPerのための計算量入門/Complexity101 for PHPer
hanhan1978
8
3.4k
集中して作業する技術/how_to_work_deeply
hanhan1978
65
54k
PHPでデータベースを作ってみた/create-data-with-php
hanhan1978
11
11k
ADRを一年運用してみた/adr_after_a_year
hanhan1978
8
4.7k
Other Decks in Technology
See All in Technology
20260208_第66回 コンピュータビジョン勉強会
keiichiito1978
0
140
Embedded SREの終わりを設計する 「なんとなく」から計画的な自立支援へ
sansantech
PRO
3
2.5k
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
1
1.9k
M&A 後の統合をどう進めるか ─ ナレッジワーク × Poetics が実践した組織とシステムの融合
kworkdev
PRO
1
450
制約が導く迷わない設計 〜 信頼性と運用性を両立するマイナンバー管理システムの実践 〜
bwkw
3
940
配列に見る bash と zsh の違い
kazzpapa3
1
150
プロダクト成長を支える開発基盤とスケールに伴う課題
yuu26
4
1.3k
SREのプラクティスを用いた3領域同時 マネジメントへの挑戦 〜SRE・情シス・セキュリティを統合した チーム運営術〜
coconala_engineer
2
650
AzureでのIaC - Bicep? Terraform? それ早く言ってよ会議
torumakabe
1
560
CDK対応したAWS DevOps Agentを試そう_20260201
masakiokuda
1
290
Kiro IDEのドキュメントを全部読んだので地味だけどちょっと嬉しい機能を紹介する
khmoryz
0
200
Azure Durable Functions で作った NL2SQL Agent の精度向上に取り組んだ話/jat08
thara0402
0
190
Featured
See All Featured
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
78
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
50
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
640
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
82
The Mindset for Success: Future Career Progression
greggifford
PRO
0
240
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.3k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.6k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.1k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
6.9k
A Tale of Four Properties
chriscoyier
162
24k
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 ご清聴ありがとうございました。