MSA設計にChatGPTを活用してみた感想
MSA設計にChatGPTを活用してみた
ChatGPTがアーキテクチャ設計を?
最近、ChatGPTを業務に積極的に活用しています。
コード作成やデバッグに使うのはもう一般的ですが、今回はMSA(Microservice Architecture)の設計段階で使ってみました。既存のモノリシックサービスをマイクロサービスに分離するプロジェクトを進めながら、ChatGPTにアーキテクチャの相談をしてみたのです。
結論から言うと、思ったより使えました。
どこに活用したか
主にこういった部分で助けてもらいました。
サービス境界の設定。モノリスからマイクロサービスに分離する時、最も難しいのが「どこで切るか」です。ChatGPTに現在のシステム構造を説明して「これをMSAに分離するならどう分けられるか?」と聞いたところ、かなり合理的な提案が出てきました。そのまま使えるわけではありませんが、思考の出発点としては良かったです。
通信パターンの選択。サービス間通信を同期(REST)にするか非同期(メッセージキュー)にするか迷った時、それぞれの長所短所と状況別の推奨を聞きました。教科書的な回答ではありますが、整理されていて意思決定の参考として良かったです。
障害シナリオのシミュレーション。「この構成で決済サービスがダウンしたらどうなるか?」のような質問を投げると、連鎖障害のシナリオを列挙してくれます。見落としていた部分を発見するのに役立ちました。
限界も明確
ChatGPTがアーキテクトを代替することはできません。
まず私たちのシステムの実際の状況を知りません。トラフィックパターン、チーム構成、既存コードの状態、ビジネス上の制約…全部説明しても実際のコンテキストを完全には理解できません。
「正解」ではなく「一般的なベストプラクティス」を教えてくれます。MSA設計は状況によって正解が異なりますが、ChatGPTは教科書的な回答に近いです。「うちのチームは3人でレガシーコードが10万行なんだけど」のような現実的な制約を反映した回答は期待しにくいです。
そして時々、自信を持って間違ったことを言います。特に最新のライブラリやツールの詳細についてハルシネーションが出ます。回答をそのまま信じず、必ず検証が必要です。
最も有用だった使い方
結局ChatGPTが最も有用だったのはラバーダックデバッグの相手としてです。
一人でアーキテクチャを設計すると、自分の考えに閉じこもりがちです。「これでいけるのでは?」と確信すると反対意見が見えなくなります。ChatGPTに自分の設計を説明しながら「これに問題はないか?」と聞くと、思いもよらなかったエッジケースを提示してくれます。
以前は同僚に「これちょっと見てくれない?」とお願いしていたのが、深夜2時でも答えてくれる同僚ができたようなものです。もちろん本物の同僚の経験と直感は代替できませんが。
実践ワークフロー
私が定着した活用方式はこうです:
- まず自分で設計案を作る
- ChatGPTに設計案を説明してレビューを依頼する
- 指摘された部分のうち妥当なものだけ反映する
- 実装段階で詳細を質問する
核心は「ChatGPTが設計するのではなく、自分が設計してChatGPTがレビューする」方式です。主導権は常に自分が持つこと。そうすれば結果に対する責任も明確になります。
AIツールが生産性を上げてくれるのは確かですが、「AIが何とかしてくれるだろう」は危険です。ツールはツールに過ぎません。