無駄に複雑な
ピタゴラ装置
「Netflixも同じ構成だから」と、月間1万PVのサイトにマイクロサービスを導入しましたね。
ボールが転がって、旗が立って、ドミノが倒れて、やっと「Hello World」が表示される。
それは見ていて楽しいかもしれませんが、運用するのは悪夢です。
- 機能追加するために、3つの異なるリポジトリを修正する必要がある
- データの流れを説明するのに、ホワイトボード一面の図が必要だ
- 「なぜKubernetesを使っているのですか?」と聞かれて即答できない
- エラーが発生したとき、どのLambdaが死んだのか探すのに1時間かかる
ビジネスの目的は「問題を解決すること」であり、「最新技術を使うこと」ではありません。
01. 単純さは「究極の洗練」
レオナルド・ダ・ヴィンチは言いました。「単純さは究極の洗練である」と。
AWSのアイコンをパズルのように組み合わせた複雑な構成図は、賢さの証明ではありません。
それは「無能さ」の証明です。
本当に賢いアーキテクトは、EC2一台とRDS一台で、信頼性の高いシステムを作ります。
壊れる場所も
増える。
02. カーゴ・カルト(積荷信仰)
戦時中、南の島の原住民は、米軍が滑走路を作ると物資が空から降ってくるのを見ました。
戦後、彼らは竹で飛行機の模型と管制塔を作り、空を見上げて待ちました。
これが「カーゴ・カルト」です。
Googleと同じ技術を使えば、Googleのようになれるわけではありません。
形だけ真似ても、中身(エンジニアの数とスキル)が伴わなければ、ただの竹細工です。
03. マイクロサービスの前にモノリスを極める
最初からマイクロサービスにするのは自殺行為です。
まずは「モジュラ・モノリス(綺麗に分割されたモノリス)」を作りましょう。
コードの中で境界線(モジュール)を引けないチームが、
ネットワーク越しに境界線を引けるわけがありません。
分割は、システムが肥大化し、どうしようもなくなってからで十分です。