モノリスからマイクロサービスまで|アーキテクチャ設計思想・流行りの歴史
① 外側の設計と内側の設計
動画でも最初に説明されていますが、 アーキテクチャには大きく2種類あります。 外側- サービスをどう分割するか
- サーバーをどう配置するか
- システム全体の構造
- コードをどう整理するか
- ビジネスロジックをどう書くか
- 保守しやすい設計
マイクロサービス
↓
その中身が
MVC
DDD
クリーンアーキテクチャ
② モノリス
昔はほぼ全部モノリスでした。ユーザー
↓
Webサーバー
・会員
・注文
・決済
・商品
・管理画面
全部一つ
なぜ昔はモノリスだったのか
理由は単純で サーバーが高かったから。 2005年頃は1サーバー
100万円
モノリスのメリット
- 作るのが速い
- デバッグしやすい
- データベースが一つ
- テストしやすい
③ SOA
ここは若い人は知らない人も多いです。 SOA (Service Oriented Architecture) 2000年代中頃に流行りました。 当時 企業は人事
会計
物流
販売
全部別システム
Webサービス化
APIで繋ぐ
なぜSOAは流行らなくなった?
SOAP XML ESB Enterprise Service Bus など とにかく重かった。 企業向けなので仕様書100ページ
④ Netflixが世界を変えた
動画でもかなり時間を割いています。 実は Netflixは マイクロサービスを発明したわけではありません。 世界中に広めた会社です。なぜNetflixだったのか
Netflixは ある日 大量アクセスで サーバーが頻繁に落ちました。 昔はDVDレンタル会社でしたが 動画配信になってから アクセス量が桁違いになります。 そこで AmazonのAWSへ移行。 さらに全部小さく分割
ログイン
作品検索
レコメンド
課金
視聴履歴
⑤ Chaos Monkey
これは業界でも有名です。 Netflixが作った Chaos Monkey 名前が最高ですよね(笑) 何をするかというと本番サーバーを
勝手に落とす
理由は 「落ちても動く設計」 を強制するため。 つまり
サーバーA死亡
↓
サーバーBへ切替
⑥ マイクロサービスの落とし穴
ここが最近のトレンドです。 数年前 世界中がマイクロサービス最強!
50サービス
例えば注文処理
注文API
↓
在庫API
↓
配送API
↓
決済API
↓
メールAPI
だから最近は 分けすぎた という反省があります。
⑦ モジュラーモノリス
今かなり人気です。 考え方は見た目は一つ
中だけ分離
注文
商品
会員
↓
コードだけ分ける
最近のスタートアップでは かなり採用されています。 理由は 十分速いから。
⑧ サービスベースドアーキテクチャ
動画でも紹介されています。 これは5〜10個くらい
適度に分ける
⑨ MVC
ここから内側。 MVCは Rails人気のおかげで 日本では非常に有名です。Model
View
Controller
⑩ DDD
DDD Domain Driven Design ここは誤解が多いです。 DDDは 設計手法というより 業務理解の方法論です。 例えば 病院なら 医師 看護師 患者 診察 予約 全部言葉を統一します。 これを **ユビキタス言語(Ubiquitous Language)**と呼びます。 実際の現場では、「この『顧客』って法人?個人?契約者?利用者?」のような言葉のズレがバグや仕様漏れにつながることがよくあります。⑪ ヘキサゴナルアーキテクチャ
別名 Ports & Adapters これはDB
Web
外部API
MySQL
↓
PostgreSQL
⑫ クリーンアーキテクチャ
これは Robert C. Martin(通称 Uncle Bob)が提唱した考え方です。 有名なのが依存方向
↓
全部内側
ただし
業界では クリーンアーキテクチャを そのまま採用する会社は 実は少ないです。 理由は 少し大げさだから。 必要以上にファイルが増えController
UseCase
Interactor
Presenter
Gateway
Repository
Entity
⑬ 最近(2025〜2026年)の流れ
ここは動画では軽く触れる程度ですが、業界全体では次のような傾向があります。- まずはモジュラーモノリスで始める
- 本当に必要な部分だけサービス分割する
- DDDの考え方で業務を整理する
- AI(Claude Code、Copilotなど)を活用しやすいように、責務が明確で読みやすいコードを書く
この動画の本質
この動画が一番伝えたいのは、アーキテクチャには「最強」は存在せず、時代の課題を解決するために生まれたものだ、ということです。
- 小さなサービスなら、シンプルなモノリスが最も効率的なことが多い。
- チームや利用者が増え、運用上の課題が出てきたら、モジュラーモノリスやサービス分割を検討する。
- コードの内部設計では、MVC・DDD・クリーンアーキテクチャなどを「目的に応じて」組み合わせる。
エンジニア転職チャンネル(RUNTEQ公式)の動画「モノリスからマイクロサービスまで|アーキテクチャ設計思想・流行りの歴史」について、IT業界の裏話や興味深い雑学を交えて詳しく解説します!
🏛️ 1. はじめに:アーキテクチャは「外側」と「内側」の2つに分けて考える
アーキテクチャという言葉は一括りにされがちですが、本質的には以下の2つに大別されます。
-
外側のアーキテクチャ(アプリケーション・システムの分割単位): インフラやデプロイ単位として、サービス全体をどう切り分けるか(モノリス、マイクロサービスなど)。
-
内側のアーキテクチャ(コード・クラス構造の設計): クラスファイルやデータの持ち方、依存関係をどう整理するか(MVC、DDD、クリーンアーキテクチャなど)。
歴史やトレンドを整理する上でも、この「外と内」の視点を持つことが非常に重要です。
🌐 2. 外側(システム・デプロイ単位)の歴史とトレンド
① モノリス(Monolith Architecture) [01:34]
-
概要: 全ての機能やコードが「1つの巨大なアプリケーション・サーバー」にまとめられている構成(例:初期のRuby on Railsアプリなど)。
-
歴史と雑学: すべてのシステム開発はここからスタートします。シンプルで作りやすい反面、サービスが巨大化(Amazon級の規模)すると、デプロイ(本番反映)の失敗による影響範囲が計り知れず、修正に何時間もかかる「恐怖の塊」になってしまいます。
② SOA(Service-Oriented Architecture:サービス指向アーキテクチャ) [02:26]
-
概要: 2000年前後にガートナー社などが提唱。社内のバラバラなシステムを「サービス」という単位で切り分け、互いに連携させようという発想。
-
裏話・雑学: 当時のIT業界では、すべての通信を仲介する巨大な連携基盤(ESB:Enterprise Service Bus)を導入するのが大流行しました。しかし、IBMなどの大手ベンダーが売るこのESB製品は非常に高額で、設定やミドルウェアの運用が複雑怪奇でした。「導入は大変なのに思ったほど楽にならない」という痛い失敗を多くの企業が経験し、ビジネス寄りの思惑(大手が儲かる仕組み)が強すぎた歴史があります。
-
例外の成功例: 奇しくもこのSOAの思想を先取りして大成功を収めたのがAmazonです。1995年に1台のサーバーから始まった同社は、2001年頃にはすでにサービス単位での分割(150種類以上のサブサービス、顧客数6,000万人規模)を実践していました [04:33]。
③ マイクロサービス(Microservices) [05:24]
-
概要: サービスを極限まで小さく分割し、データベースも含めて完全に独立させるアーキテクチャ。
-
歴史とエピソード:
-
引っ張ったのはNetflixです [05:29]。2008年8月、Netflixは単一のリレーショナルデータベースが壊れる大事故を起こし、DVDの発送が3日間ストップしてしまいました。これを機に「一部が壊れても全体が止まらない仕組み」へ舵を切ります [06:04]。
-
当時は動画配信ではなくDVDの郵送レンタル会社だったNetflixですが、2009年からAWSへの移行とシステムの細分化を開始し [06:36]、2016年1月に1,000以上のサービスへの分割を完了しました [08:14]。
-
カオスモンキーの誕生: 「障害は起きるもの」としてシステムを設計するため、本番環境のサーバーをわざとランダムに落として耐性をテストする狂気のツール「カオスモンキー」がNetflixから生み出されました [07:31]。
-
命名の背景: こうした現場の試行錯誤が実を結んだ後の2014年、著名エンジニアのマーティン・ファウラー氏らが「マイクロサービス」という言葉で体系化・命名し、世界中に爆発的なブームが巻き起こりました [08:44]。
-
④ 最近のトレンド:「いいとこ取り」への揺り戻し [09:41]
マイクロサービスは強力ですが、「リポジトリが分かれすぎて管理が複雑」「開発コストが跳ね上がる」という課題があります。そのため、現在は以下のような「いいとこ取り」が模索されています。
-
モジュラモノリス(Modular Monolith): インフラやデプロイはモノリスのまま、コードベースの内部をドメインごとにきっちり境界で区切る手法 [10:03]。巨大なRailsアプリで知られるShopifyなどがこの道を選び、綺麗に進化させています [10:14]。
-
サービスベースドアーキテクチャ(Service-Based Architecture): マイクロサービスほど細かく分けず、ざっくりとした機能単位(例:ログイン機能、登録機能など)で分けつつ、裏側のデータベースなどは共通化する現実的な落とし所 [10:46]。
🧱 3. 内側(コード・設計思想)の歴史とトレンド
① MVC(Model-View-Controller) [12:29]
-
歴史: 1978年にトリグ・リンスカウ氏がプログラミング言語「Smalltalk」向けに考案 [12:35]。
-
背景: 50年近く前の発想でありながら、現在もRuby on Railsなどの主要フレームワークの根底に生き続けている、歴史的傑作のパターンです [12:51]。
② DDD(Domain-Driven Design:ドメイン駆動設計) [13:08]
-
歴史: 2003年にエリック・エヴァンス氏が提唱 [13:13]。
-
背景: 「注文をキャンセルする」といった、現場のビジネス現場で実際に使われている言葉(ユビキタス言語)をそのままコードの構造に落とし込んでいく考え方 [13:21]。銀行や保険など、業務ロジックが極めて複雑なドメインで真価を発揮します。
③ ヘキサゴナルアーキテクチャ(Ports & Adapters) [13:46]
-
歴史: 2005年にアリスト・コバン氏が提唱 [13:49]。
-
背景: アプリケーションの中心(ビジネスロジック)を、UIやデータベースといった外部の都合から切り離し、どちらも後から自由に取り替えられるように守る(六角形の図で表現される)思想です [14:03]。
④ クリーンアーキテクチャ(Clean Architecture) [14:18]
-
歴史: 2012年頃に提唱・整理された、現在のデファクトスタンダード。
-
背景: ヘキサゴナルやDDDの考え方をさらに洗練させ、「依存の方向は常に外側から内側へ」という原則を徹底したもの [14:38]。一番外側に「変わりやすいもの(UI、フレームワーク、DB)」を置き、一番中心には「絶対に変わらないビジネスルール」を配置します [14:48]。
💡 4. まとめ:全体を貫く共通の思想とAI時代の現在地
動画の終盤で語られている通り、外側の歴史も内側の歴史も、根底にある思想は一貫しています。
そして現在は、AIの普及によって開発スピードが圧倒的に爆発した反面、コードの「技術的負債」も溜まりやすい時代になっています [16:18]。だからこそ、「どの部分を守るべきか」「どこを割り切るべきか」という設計思想の本質を理解しておくことが、エンジニアにとってますます重要になっています。
この動画は、RUNTEQ公式の「エンジニア転職チャンネル」で2026年10月20日に公開されたもの。菊本久寿さん(RUNTEQ代表)が、**外側(システム全体の分割・デプロイ単位)と内側(コード内部の構造・依存関係)**の2軸で、アーキテクチャの歴史と流行をざっくり整理しています。
「マイクロサービスが最強!」という神話を一旦崩して、「結局どう設計すればいいの?」という実務寄りの視点に持っていく構成が、転職・学習層向けに上手いです。
以下、動画の流れに沿って解説しつつ、雑学と業界の裏話を交えます。
外側と内側の違い(動画 00:46〜)
アーキテクチャを語るとき、多くの人は「モノリスかマイクロサービスか」という外側の話に終始しがちです。でも実際には、**外側(どう分けるか・どうデプロイするか)と内側(コードの中でどう責務を分けるか)**は別物です。
- 外側:デプロイ単位、チームの独立性、障害の波及範囲、スケーリングの単位
- 内側:MVC、DDD、ヘキサゴナル、クリーンアーキテクチャなどの「コードの書き方・依存の方向」
この2つを混同すると、「マイクロサービスにしたのに中身がスパゲッティ」みたいな悲劇が起きます。業界ではよくある話です。
外側の歴史:モノリス → SOA → マイクロサービス → 揺り戻し
1. モノリスアーキテクチャ(01:34〜)
全部が1つのアプリケーションに詰まった状態。シンプルで最初は最強です。
問題点が出てくるのは規模が大きくなってから。コードベースが肥大化し、変更の影響範囲が読めなくなり、デプロイが怖くなる。いわゆる「Big Ball of Mud(大きな泥だんご)」状態。1990年代後半から指摘されていた古典的な問題です。
2. SOA(Service-Oriented Architecture)(02:26〜)
2000年代の企業システムで流行した「サービス指向」。機能をサービスに分け、ESB(Enterprise Service Bus)という共通バスでつなぐ思想。
雑学・業界話:SOAは「再利用性」と「レガシー統合」を強く意識していました。ただし、ESBが中央集権的になりすぎて、結局ボトルネックになるケースが多かった。「サービスに分けたのに、バスが単一障害点」という皮肉がよく語られます。マイクロサービスはこの反省から「バスを薄く、サービスを独立に」という方向に振ったもの、という見方ができます。
3. マイクロサービスとNetflix(05:22〜)
2010年代前半から爆発的に流行。James LewisとMartin Fowlerの2014年の記事が火付け役になりました。
Netflixが象徴的です。DVD配送からストリーミングへ移行する過程で、自前のデータセンターからAWSへ移行し、数百のマイクロサービスに分解していきました。
業界の名物エピソード:Chaos Monkey(07:30〜) Netflixが作った「ランダムに本番インスタンスを殺すツール」です。 理由はシンプルで、「障害は必ず起きる。だったら、起きてほしい時間(営業時間)に意図的に起こして、復旧力を鍛えよう」という発想。 2008年に自社データセンターでデータベース障害が起きて3日間ほぼ止まった経験が、この過激なアプローチの原点だと言われています。 後に「Simian Army」という一群のツールになり、Chaos Kong(リージョン全体を落とす)まで登場しました。カオスエンジニアリングという分野の原点です。 「障害を怖がるな、むしろ味方にしろ」というNetflixの文化が、ここによく表れています。
4. マイクロサービスの問題点と揺り戻し(09:28〜)
独立デプロイやスケーラビリティのメリットの裏で、
- 分散トランザクションの難しさ
- 運用・監視コストの爆発
- サービス間のネットワーク遅延
- テスト環境の複雑化
などが顕在化。「マイクロサービス疲れ」が起き始めました。
動画ではその対策として2つ挙げられています:
- ① モジュラーモノリス(09:51〜) 見た目は1つのモノリスだが、内部をモジュール境界できっちり区切る。ネットワークを挟まず、プロセス内で呼ぶのでシンプル。将来マイクロサービスに切り出しやすい「準備されたモノリス」として、ここ数年特に評価が高まっています。
- ② サービスベースドアーキテクチャ(10:44〜) マイクロサービスほど細かくせず、ある程度まとまった「サービス」単位で分ける中間形態。実務ではこの辺の「ちょうどいい粒度」を探るケースが増えています。
業界の空気感(2020年代後半〜): 「最初からマイクロサービスで始めるな。まずモノリス(できればモジュラー)で始めて、本当に必要になった部分だけ切り出せ」というのが、Martin Fowler自身も含めて主流の意見になっています。Segmentが140以上のマイクロサービスからモノリスに回帰した話などは、典型例としてよく引き合いに出されます。
内側の話(12:25〜)
外側をどうするかに関わらず、コードの中身の構造も進化してきました。
- MVC(12:29〜):古典。ViewとModelをControllerでつなぐ。シンプルだが、ビジネスロジックが肥大化しやすい。
- DDD(Domain-Driven Design)(13:08〜):業務ドメインを中心にモデリングする思想。境界づけられたコンテキストなどの概念が、後のマイクロサービス分割にも影響を与えました。
- ヘキサゴナルアーキテクチャ(Ports and Adapters)(13:46〜):ドメインを中心に置き、外側の技術(DB、UI、外部API)をアダプターでつなぐ。依存の方向を内側に向ける。
- クリーンアーキテクチャ(14:18〜):Robert C. Martin(Uncle Bob)が整理したもの。依存関係のルールをより厳密にしたもので、ヘキサゴナルの進化形・体系化版とも言えます。
これらは「外側をマイクロサービスにしても、内側がぐちゃぐちゃだと意味がない」という現実を反映しています。
まとめのニュアンス(15:31〜)
動画全体のメッセージは、だいたいこうです:
- 「流行っているから」で選ぶな
- チーム規模・ドメインの成熟度・運用能力に合わせて選べ
- 外側を分ける前に、内側のモジュール境界をきちんと作っておくのが大事
- モジュラーモノリスは、今かなりバランスの取れた選択肢になっている
雑学的な補足: アーキテクチャの流行は、だいたい「前のスタイルの限界を解決しようとして次が生まれ、その次の限界でまた揺り戻しが起きる」というサイクルを繰り返しています。モノリスの限界 → SOA → マイクロサービス → モジュラーモノリス、という流れは、まさにその典型です。
実務で「うちはマイクロサービスにすべきか?」と聞かれたら、まず「チームは何人? ドメイン境界は安定してる? 運用できる人はいる?」と聞き返すのが、最近の賢いエンジニアの定番対応になりつつあります。
必要なら、動画で触れられている各アーキテクチャの「向いているケース/向いていないケース」をもう少し深掘りします。
動画の本文(字幕)は見られず、概要欄の目次と私の知識をもとにした解説です。実際の動画の話と細部が違う可能性はありますが、流れはほぼ同じはずです。
全体像:「外側」と「内側」の設計
動画は設計を2つの視点で分けています。
- 外側: システム全体をどう分割して配置するか(モノリス → SOA → マイクロサービス → 揺り戻し)
- 内側: 1つのアプリの中のコードをどう整理するか(MVC → DDD → ヘキサゴナル → クリーンアーキテクチャ)
どちらも「変更に強くしたい」「チームが大きくなっても開発を止めたくない」という同じ悩みへの答えで、規模が違うだけです。
外側の歴史
モノリス 1つのアプリに全機能を詰め込む構成です。小さいうちは、デプロイも調査も簡単で最強です。ただ、規模が大きくなると「1行直したら全体を再デプロイ」「どこを触ると壊れるか誰も分からない」状態になります。
SOA(2000年代) 機能をサービス単位に分けて連携させる発想です。ただ、当時はサービス間の連携に重量級のESB(企業サービスバス)やSOAP/XMLを使うことが多く、「重い、複雑、ベンダー主導」と評判を落としました。
雑学として有名なのが、2002年頃のAmazonです。ジェフ・ベゾスが「全チームは機能をAPIとして公開せよ。守らない者はクビ」という趣旨のメールを送ったという逸話があります。元Amazon・Googleのスティーブ・イェギーの有名な投稿で広まった話で、AWS誕生の土台になったとも言われます。
マイクロサービスとNetflix Netflixは2008年に大規模なDB障害で数日間DVD出荷が止まり、「単一障害点を作らない」ためにAWSへ移行し、サービスを細かく分割しました。ここから生まれたのがChaos Monkeyで、本番環境のサーバーをわざとランダムに落とし、「落ちても平気な設計」を強制します。「障害は起きるもの」という前提に立つ発想は、今のSREやカオスエンジニアリングにつながっています。
用語自体は2011年頃のワークショップで使われ始め、2014年にマーティン・ファウラーらの記事で広く知られるようになりました。
マイクロサービスの落とし穴
- サービス間通信、分散トランザクション、監視、デプロイ基盤など運用が一気に難しくなる
- 分け方を間違えると、サービスが密結合のまま分散した「分散モノリス」になる
- 組織の構造がそのまま設計に出る(コンウェイの法則)ので、Netflixのような大組織でないと割に合わない
有名な事例が、Amazon Prime Videoが2023年に、ある監視サービスをマイクロサービスからモノリスに戻してコストを約9割削減したという公開記事です。Segmentも2018年に似た事例を出しています。
現実解としての2つの選択肢
- モジュラーモノリス: デプロイは1つのまま、内部をモジュールで厳密に分ける。Shopifyが有名で、Railsの作者DHHの「Majestic Monolith(威風堂々のモノリス)」もこの系譜です。
- サービスベースドアーキテクチャ: マイクロサービスほど細かくせず、数個の大きめのサービスに分ける中間案です。
内側の歴史
- MVC: 1979年、ゼロックスのパロアルト研究所でトリグヴェ・ライネスが考案しました(Smalltalk)。45年以上前の考え方がRailsなどに今も生きています。Railsでは「Fat Model」問題がよく起きます。
- DDD: 2003年のエリック・エヴァンスの青本が元です。「技術ではなく業務(ドメイン)を中心に設計する」考え方で、実はマイクロサービスの「どこで切るか」の基準(境界づけられたコンテキスト)としても使われます。
- ヘキサゴナル: 2005年、アリスター・コーバーンが提唱しました。中心に業務ロジックを置き、DBや外部APIなどとの接点を「ポート&アダプター」にします。六角形なのは「入口が複数ある」ことを表すためだけで、6という数に意味はありません。
- クリーンアーキテクチャ: 2012年にUncle Bob(ロバート・C・マーティン)が提唱しました。ヘキサゴナルやオニオンなどの共通点を整理したもので、核心は「依存の向きは外から内だけ」というルールです。同心円の図は有名ですが、本質はこの一点です。
まとめ
- 「マイクロサービスが最強」は誤解で、組織規模や課題に合った選択が正解
- 迷ったらまずモノリス、必要になったらモジュラーモノリスで境界を磨き、本当に必要なところだけ分離するのが現実的
- 外側の分割と内側の整理は**同じ原則(関心の分離・依存の向き・境界)**でつながっている
新人エンジニアや転職を考える人は、流行りの名前を覚えるより「なぜそれが生まれたか」の背景を知っておく方が、面接でも実務でも役立ちます。特定のパート(Chaos Monkeyの仕組み、クリーンアーキテクチャのRailsでの実践など)を掘り下げることもできます。
なぜ業界はモノリス → SOA → マイクロサービス → モジュラーモノリスへと揺れ戻しているのかという、ソフトウェア設計の「流行の歴史」を語る動画です。 特に面白いのは、
- 外側(システム全体の構造)
- 内側(プログラム内部の構造)
- 小説全体の構成
- 文体や語りの構造
第一章 モノリスの時代
2000年代前半くらいまで、 ほぼ全てのWebサービスはモノリスでした。 モノリス(Monolith)とは巨大な一枚岩という意味です。 例えば
- 会員管理
- 商品管理
- 注文管理
- 決済
Webサーバー
↓
巨大アプリ
↓
DB
という構造。
実はこれは悪くありません。
むしろ
小さい組織なら最強です。
雑学1
YouTubeもFacebookも最初はモノリス 意外に思われるかもしれませんが、 巨大IT企業も最初はほぼ全部モノリスです。 理由は簡単。 マイクロサービスより遥かに開発が速い。 スタートアップでは 「綺麗な設計」 より 「今週リリースできるか」 のほうが重要です。第二章 SOAの登場
モノリスが巨大化すると問題が出ます。 例えば注文機能を修正したい
↓
全体テスト必要
↓
リリース失敗
↓
全部止まる
そこで登場したのが
SOA (Service Oriented Architecture)
です。
サービス単位で分ける。
注文サービス
顧客サービス
決済サービス
みたいな考え方。
ただし、
SOAは今でいうマイクロサービスほど細かくありません。
雑学2
SOAは企業システム文化の産物 SOAを推進していたのは IBM Oracle SAP などの巨大企業。 そのため XML SOAP などの非常に重厚な規格を使っていました。 若いエンジニアが見ると 「なんでこんな面倒なことしてたの?」 と思いますが、 当時の企業システムでは標準化が非常に重要だったのです。第三章 Netflixとマイクロサービス革命
ここで伝説が登場します。 Netflixです。 動画にも出てきますね。 実はNetflixは2008年頃の大障害で苦しみました。 その後、 AWSへ移行しながら 巨大モノリスを分割。 そこで生まれたのが有名な マイクロサービスアーキテクチャ。認証サービス
検索サービス
推薦サービス
配信サービス
全部別々。
Chaos Monkeyとは何か
動画にも出てきた Chaos Monkey これは業界ではかなり有名です。 普通は 「サーバーは壊れない前提」 で設計します。 Netflixは逆。必ず壊れる前提で作るという思想。 そこで Chaos Monkey というプログラムを作り、 本番環境のサーバーをランダムに停止させました。 普通の会社なら怒られます。 しかしNetflixは 「落ちても動くシステム」 を作るためにわざと壊した。 これがカオスエンジニアリング文化の始まりです。
雑学3
宇宙開発と似ている Chaos Monkeyの発想は 航空宇宙工学に近いです。 ロケット開発では 安心のために壊す。 エンジニアリングの世界では 信頼性の高いものほど 徹底的に壊されます。第四章 マイクロサービスの幻想
2015年頃から起きたこと。 業界全体が 「マイクロサービス最強!」 と言い始めました。 しかし現実は違いました。マイクロサービスを導入すると 開発者は
新たに
- API設計
- 分散トランザクション
- ネットワーク障害
- サービス監視
- Kubernetes
- CI/CD
業界あるある
若手エンジニア 「マイクロサービスやりたい!」 ベテランCTO 「まだ早い」 という会話が本当にあります。 理由は 組織が10人なのに Google並みの構造を導入しても意味がないから。第五章 モジュラーモノリスへの回帰
近年注目されているのが モジュラーモノリス。 これは非常に面白い流れです。 考え方はデプロイは一つ
コードは分割
です。
つまり
注文モジュール
顧客モジュール
決済モジュール
と分離しながら、
実行ファイルは一つ。
言い換えると マイクロサービスの思想だけ借りる のです。 これが最近の実務ではかなり人気。
なぜ流行りが戻ったのか
ソフトウェア業界には 不思議な歴史があります。 集中 ↓ 分散 ↓ 再集中 を何度も繰り返す。 実はコンピュータ業界全体がそうです。1960年代 メインフレーム ↓ 1980年代 クライアントサーバー ↓ 2000年代 Web ↓ 2010年代 クラウド ↓ 2020年代 AIクラウド集中
歴史は振り子運動です。 アーキテクチャも同じ。
後半の「内側」の話
ここから動画は MVC DDD ヘキサゴナル クリーンアーキテクチャ へ進みます。 これは システム全体ではなく プログラム内部をどう整理するか という話です。MVC
最古参。Model
View
Controller
RailsやLaravelで有名。
初心者には分かりやすい。
しかし巨大化すると辛くなる。
DDD
Domain Driven Design エリック・エヴァンスの名著から始まりました。 重要なのは コードではなく 業務知識を中心に考える という点。 実はこれは文学好きの人には面白い思想です。 登場人物ではなく、 物語世界(ドメイン)を先に作る感覚に近い。ヘキサゴナル
Ports and Adapters とも呼ばれます。 特徴は データベースやUIを交換可能にすること。 つまりビジネスロジック
↑ ↓
DB
Web
API
CLI
が独立する。
クリーンアーキテクチャ
ロバート・マーチン(Uncle Bob)。 有名な同心円構造。 哲学は一つ。依存方向を内側へ向けろです。 ビジネスルールは永続化技術に依存するな。 という考え。
この動画の最大のメッセージ
15分の歴史を一言で要約すると「流行のアーキテクチャを選ぶな。自分たちの組織に合うものを選べ」です。 業界では Netflixの成功例だけが語られがちです。 しかし実際には、 社員20人の会社と 社員数万人のNetflixでは 問題そのものが違う。 だから
- 小規模ならモノリス
- 成長したらモジュラーモノリス
- 本当に必要になったらマイクロサービス
モノリス → マイクロサービスは進化の一本道ではなく、
「分割したい欲望」と「複雑さを減らしたい欲望」の終わらない綱引きなのだ、と見ると、この動画の面白さがさらに見えてきます。
用户要求我基于一个关于软件架构演进史的YouTube视频,从“杂学”和“行业故事”的角度进行解说。我需要先进行第一轮搜索,覆盖SOA、微服务、Netflix、Chaos Monkey、模块化单体、服务基础架构和清洁架构等关键主题。
第一轮搜索已经完成。现在需要根据搜索结果,进行第二轮搜索,以补充细节或验证信息。我需要打开一些相关的链接。
这些搜索结果提供了关于SOA、微服务、Netflix、混沌工程、模块化单体等主题的背景信息。接下来我需要补充搜索关于服务基础架构、DDD、六边形架构和清洁架构的细节。为了更全面地获取信息,我将同时进行多项搜索。
搜索结果显示,关于服务基础架构的信息可能不够具体。不过,我已经掌握了足够的信息来回答用户的问题。我的回答将涵盖从单体到微服务的演进、Netflix的案例、混沌工程、模块化单体、服务基础架构以及清洁架构等主题。我将以杂学和行业故事的形式来组织内容,并引用相关来源。现在开始组织最终的回答。
あの動画、アーキテクチャの歴史を「外側」と「内側」の2軸で整理していて、とても分かりやすい構成でしたね。動画の内容に沿いながら、教科書にはあまり載っていない業界の裏話や雑学を交えて、各アーキテクチャが「なぜ生まれ、何に悩み、どこへ向かっているのか」を深掘りしてみます。
🏛️ 第1幕:モノリスという「巨人」の光と影
すべての始まりはモノリス(Monolith)。アプリケーションの全機能を一つの塊として開発・デプロイする、最も伝統的なスタイルです。動画でも触れられていましたが、機能が少なくチームが小さいうちは「実装が早い」という絶大なメリットがあります。
しかし、成長とともに「巨人」は厄介な問題を抱え始めます。コードベースは密結合し、ほんの一部の修正でもアプリ全体の再起動が必要になり、ダウンタイムが発生します。スケールアウトも「アプリ全体を丸ごと複製する」非効率な方法しかなく、チームの意思決定も中央集権的にならざるを得ませんでした。
🌐 第2幕:外側の革命 ~SOAからマイクロサービス、そして「揺り戻し」~
このモノリスの限界を突破するため、システムを「外側」から分割する動きが始まります。
SOA(サービス指向アーキテクチャ) は2000年代初頭に登場しました。モノリスを「ビジネス上の活動」に基づいて複数の独立したサービスに分解する思想です。しかし、当時のSOAはSOAPなどの重厚長大な標準プロトコルに依存し、導入や運用が非常に複雑で、期待されたほど普及しませんでした。
マイクロサービス は、このSOAの反省を踏まえ、2014年にThoughtworksのJames Lewis氏とMartin Fowler氏によって提唱されました。SOAの「サービス分割」という本質は継承しつつ、REST APIなどの軽量な通信を採用し、サービスごとに独立したデプロイとスケールを可能にしたのです。
🎬 業界を震撼させたNetflixの「混沌」~Chaos Monkeyの衝撃~
マイクロサービスを語る上で外せないのがNetflixの事例です。彼らは2011年頃から、AWS上の分散クラウドアーキテクチャへ大規模な移行を進めました。その背景には、2008年に主要データベースの故障で3日間もサービスが停止した苦い経験があります。
単一障害点をなくすためには、「障害は必ず起きる」という前提に立つ必要がありました。そこでNetflixのエンジニアが開発したのが Chaos Monkey です。これは、本番環境のサーバーをランダムに強制停止させるという、一見“破壊的”なツールです。これにより、常に障害に耐えうる設計(レジリエンス)を強制的に検証し、エンジニアは「動くはず」ではなく「壊れても大丈夫」という自信を得られるようになりました。この思想はカオスエンジニアリングとして確立され、のちにNetflixはChaos Monkeyをオープンソース化し、業界全体の耐障害性向上に貢献しました。
🔄 第3幕:現実的な着地点 ~モジュラーモノリスとサービスベースド~
しかし、マイクロサービスは銀の弾丸ではありませんでした。サービス間の複雑な通信、分散トランザクション、運用負荷の増大といった問題に直面する企業が続出します。Segment社はマイクロサービス化した後、運用オーバーヘッドの増大に耐えかねて、数年後にモノリスへ回帰したことで知られています。
こうした「揺り戻し」の中で生まれたのが、モノリスとマイクロサービスの中間に位置する現実的な解です。
-
モジュラーモノリス:デプロイはモノリスのままですが、内部を明確なモジュール境界で分割します。モノリスのシンプルな運用性を保ちつつ、マイクロサービスへの段階的な移行も可能にする「いいとこ取り」のアプローチです。Shopifyが導入したことで注目されました。
-
サービスベースドアーキテクチャ:モノリスとマイクロサービスの中間的な特性を持ち、マイクロサービスの複雑さを避けつつ、適度な分割によるスケーラビリティを確保する折衷案です。
🧠 第4幕:内側の美学 ~ソフトウェアの「心臓部」を守る戦い~
動画の後半は、システムを「内側」からどう設計するか、というソフトウェア内部の構造の話に移ります。ここでの共通の敵は、ビジネスロジック(ドメイン)と技術的関心事(UI、DBなど)の混在です。
-
MVC:1979年にSmalltalkの世界で生まれた古典的なパターンで、UI、データ、制御を分離します。
-
DDD(ドメイン駆動設計):2003年にEric Evansが提唱しました。ソフトウェアの複雑さの根源は「ビジネスドメイン」にあるとし、ドメインモデルを中心に据えて開発する思想です。単なる技術パターンではなく、ドメインエキスパートとの対話を通じてモデルを磨き上げる戦略的設計を含む点が特徴です。
-
ヘキサゴナルアーキテクチャ(ポートとアダプター):2005年にAlistair Cockburnが提唱しました。アプリケーションの「内側(ドメイン)」と「外側(技術)」を分離し、UIやDBを交換可能にすることを目的としています。
-
クリーンアーキテクチャ:2012年にRobert C. Martin(Uncle Bob)が提唱しました。ヘキサゴナルやオニオンアーキテクチャなどの思想を集大成し、「依存性は常に外側から内側(ドメイン)へ向かう」という依存性逆転の原則を徹底します。これにより、ドメインロジックをフレームワークやDBから完全に隔離します。
💎 まとめ:アーキテクチャに「最強」はない
動画の締めくくりは、「マイクロサービスが最強」というわけではないというメッセージでした。アーキテクチャの歴史は、「トレードオフの選択」の歴史です。
-
モノリスはシンプルだが、成長すると硬直化する。
-
マイクロサービスは柔軟だが、分散システムの複雑さと運用負荷を伴う。
-
モジュラーモノリスはその中間で、現実的なバランスを取る。
そして、DDDやクリーンアーキテクチャは、外側のアーキテクチャが何であれ、ソフトウェアの心臓部であるドメインロジックを守り、変化に強くするための普遍的な設計思想です。
チームの規模、ビジネスのフェーズ、そして解決すべき課題に合わせて、適切なトレードオフを選択することこそが、エンジニアリングの本質なのだと、この動画は教えてくれているように感じました。