MSA設計にChatGPTを活用してみた感想

MSA設計にChatGPTを活用してみた

ChatGPTがアーキテクチャ設計を?

最近、ChatGPTを業務に積極的に活用しています。

コード作成やデバッグに使うのはもう一般的ですが、今回はMSA(Microservice Architecture)の設計段階で使ってみました。既存のモノリシックサービスをマイクロサービスに分離するプロジェクトを進めながら、ChatGPTにアーキテクチャの相談をしてみたのです。

結論から言うと、思ったより使えました。

どこに活用したか

主にこういった部分で助けてもらいました。

サービス境界の設定。モノリスからマイクロサービスに分離する時、最も難しいのが「どこで切るか」です。ChatGPTに現在のシステム構造を説明して「これをMSAに分離するならどう分けられるか?」と聞いたところ、かなり合理的な提案が出てきました。そのまま使えるわけではありませんが、思考の出発点としては良かったです。

通信パターンの選択。サービス間通信を同期(REST)にするか非同期(メッセージキュー)にするか迷った時、それぞれの長所短所と状況別の推奨を聞きました。教科書的な回答ではありますが、整理されていて意思決定の参考として良かったです。

障害シナリオのシミュレーション。「この構成で決済サービスがダウンしたらどうなるか?」のような質問を投げると、連鎖障害のシナリオを列挙してくれます。見落としていた部分を発見するのに役立ちました。

限界も明確

ChatGPTがアーキテクトを代替することはできません。

まず私たちのシステムの実際の状況を知りません。トラフィックパターン、チーム構成、既存コードの状態、ビジネス上の制約…全部説明しても実際のコンテキストを完全には理解できません。

「正解」ではなく「一般的なベストプラクティス」を教えてくれます。MSA設計は状況によって正解が異なりますが、ChatGPTは教科書的な回答に近いです。「うちのチームは3人でレガシーコードが10万行なんだけど」のような現実的な制約を反映した回答は期待しにくいです。

そして時々、自信を持って間違ったことを言います。特に最新のライブラリやツールの詳細についてハルシネーションが出ます。回答をそのまま信じず、必ず検証が必要です。

最も有用だった使い方

結局ChatGPTが最も有用だったのはラバーダックデバッグの相手としてです。

一人でアーキテクチャを設計すると、自分の考えに閉じこもりがちです。「これでいけるのでは?」と確信すると反対意見が見えなくなります。ChatGPTに自分の設計を説明しながら「これに問題はないか?」と聞くと、思いもよらなかったエッジケースを提示してくれます。

以前は同僚に「これちょっと見てくれない?」とお願いしていたのが、深夜2時でも答えてくれる同僚ができたようなものです。もちろん本物の同僚の経験と直感は代替できませんが。

実践ワークフロー

私が定着した活用方式はこうです:

  1. まず自分で設計案を作る
  2. ChatGPTに設計案を説明してレビューを依頼する
  3. 指摘された部分のうち妥当なものだけ反映する
  4. 実装段階で詳細を質問する

核心は「ChatGPTが設計するのではなく、自分が設計してChatGPTがレビューする」方式です。主導権は常に自分が持つこと。そうすれば結果に対する責任も明確になります。

AIツールが生産性を上げてくれるのは確かですが、「AIが何とかしてくれるだろう」は危険です。ツールはツールに過ぎません。