この記事を読んでまず思ったのは、「これ、最初は便利で、あとからじわじわ効いてくるやつだ」 ということだった。ひとつの process に全部乗せる設計は、動かし始めるだけなら本当に楽だ。関数呼び出しで済むし、ローカルで試すのも簡単だし、見た目もすっきりする。だからこそ、分割の話はつい後回しになる。でも、著者が描いているのは、その“楽さ”が少しずつ借金になる瞬間なんだと思う。
特に刺さったのは、問題が「コードの結合」ではなく「実行環境の結合」にまで広がっている ところだった。Python の中でモジュールを import してつないでいるだけ、と思っていても、実際には dependency の衝突やメモリの食い合い、再デプロイの巻き込みまで一緒に抱え込む。ここは地味だけど重い。しかも厄介なのは、開発初期にはその痛みが見えにくいことだと思う。デモでは動くし、最初の数機能なら十分だからだ。記事のトーンはかなり実務寄りで、その「あとで壊れる」感じに覚えがある人ほど、うなずく部分が多いはずだ。
もうひとつ印象に残ったのは、MCP を持ち上げすぎていないことだ。著者は、境界が大事なのであって、プロトコルそのものが魔法ではないとかなりはっきり書いている。ここは好感が持てた。最近は何でも新しい protocol や framework に寄せたがる空気があるけれど、この記事はそこを少し引き戻している。単に REST でもよかったかもしれない場面はあるし、caller がひとつしかないなら MCP の価値は薄い、という整理はかなり健全だと思う。
一方で、読んでいて少し気になったのは、「分離したあとに出てくる面倒さ」 のほうはまだ別問題として残る点だ。失敗時にどこまで戻るのか、途中の service が欠けた情報をどう扱うのか、複雑な分岐を orchestrator がどう持つのか。そこはまだ解いていない、と記事自身も認めている。だからこれは完成形の話というより、まず「同居のつらさ」を切り離す第一歩の話なんだと思う。そこをちゃんと限定しているのが、むしろ信頼できた。
参考: When One Process Becomes Too Much: Splitting a Pipeline into MCP Services | Towards Data Science