プロダクトマネージャー#プロダクトマネージャー#仕事雑談

PoC/MVPでいきなりMicroserviceアーキテクチャを使うべきか

新規プロダクトの開発(4人チーム)を任されているPMです。フェーズとしてはPoC/MVPの段階です。


基本的に技術的判断はエンジニアに任せているのですが、チームの中で中長期的にスケールするMicroserviceアーキテクチャで最初から作るべきと主張する人と、あくまでもMVPなので開発スピードを上げるためにMonolithでささっと作っちゃうべきと主張する人で意見が分かれているのですが、みなさんだったらどちらを選びますか?


私個人の見解としてはそもそも将来の保証がないプロダクトなので最初はMonolith、MVPが成功してがっつりリソースを突っ込むと判断した時点で最悪作り直すか、どこかのタイミングで時間をかけてMicroserviceに移行してもいいんじゃないかと思っています。後、以前別の会社の時に数名チームでMicroserviceアーキテクチャで開発していた時もそもそもMicroserviceのメリットを人数的にあまり活かしきれなかったという経験もあります。


似たような経験があれば是非コメントで教えてください。

(編集済み)
135
16

コメント

コメント一覧

前提いろいろあるとは思いますけど、PMF前の場合は monolith だなーって気持ちです。

MVPなのに、microserviceかmonolith か議論が必要なほどの規模のプロダクトを作ろうとしているのが、あまりよくない状況かもしれない、とは思いました。

バックエンドの主用部分は一人で作り上げられる範囲のサービスとして、その人の好きな手法で作ればいいかと思いました。

(議論しても、結局は好みの話しになると思いますし。)

typescript でモノレポな構成でマイクロサービス方式で作ってますが、実装コストにおいては、体感的にモノリスとそう変わらない気がします。

(プロダクトの性質によるかもしれない)


ただし、CI/CDの運用コストはモノリスよりかかると思います。運用パターン設計に得意な人がいなかった場合は辛いかもしれません。

あ、でも補足すると、自分の担当はBE、FEがそれぞれあるだけで、BEが複数あるなパターンではありません。

インフラもサーバレスでk8sではありません。


この段階で、4人でBEが複数あり、k8sくらいな構成なら、大変かもしれません。

マイクロサービスは相当サービスが成長しないと無駄にメンテナンスコストを上げるだけですので、必要になったらその都度アーキテクチャを変えれば良いと思います。

特にPoC や MVP の段階だとプロトタイプをなるべく早く壊して作ることが求められると思いますので、そのアジリティの観点からしてもマイクロサービスはおすすめできません。

PoC(実証実験。プロダクトではない)とMVP(最小限ではあっても顧客にリリースするプロダクト)はまったくの別物という認識なのですが、どちらでしょう?


個人的には、microservicesの経験のないエンジニアが一度経験してみることは重要だと思うので、PoCならmicroservicesでやってみるのも手かと思います。MVPだったら向こう5年くらいの生産性を重視したいのでmonolithですね。

コメントありがとうございます。正確には既にPoCは終わっていて、MVPですね。かなり初期開発という定でまとめてしまいました。

モノリスの一択かなと思います。PMFさえ達成していないならアーキテクチャにこだわる必要もないし、モノリスの規模でも上場まではいけると思うので。


GitHubの規模でさえマイクロサービスは失敗したとCTOは語っているので、そういう事例をいくつか上げて説得してみるとかですかね。

皆さんコメントありがとうございます。


ちなみにPMがこのような技術選択に意見出すのってどう思われます?あくまでも専門家はエンジニアなのであんまり余計なこと言わないほうが良いのかなと...

技術的に対等な立場で話せるなら、できるだけ客観的な議論はした方がいいとは思います。(あとで、こんなこと知ってれば、こうしなかったのに、、、ということはないように。)

主観的な議論に移ってきた時点で、エンジニアの意見が統一しているなら任せるのがいいとは思いました。


基本的に納得されていない設計、アーキテクチャをエンジニアに押し付けてもいい方向に進まず、納得しているなら例え多少失敗したとしても大きな学びになるとは思います。

開発チームが20人以上になってから、マイクロサービス化するか検討すればよいと思いますよ

そもそも論の話しでPoCの段階からマイクロサービス化したい理由がわからないとコメントしづらい気がしますね。

その理由に妥当性を感じるかどうかで意見が変わるかなと。

検証スピードが重要なフェーズなので、モノリスで作るのが王道かなと思います。

規制産業で将来マイクロサービスに作り変えること自体が大きなリスクになるなら最初からマイクロサービスを選択するというのもありますが。

YAGNIに倣うならモノリスですね

チームが納得する色んな観点の議論ができるといいと思います

- マイクロサービスでテスタビリティ落ちないか?

- ローカルでのデベロッパー体験が犠牲にならないか?

- CI/CD難しくならないか?

- プロダクトのためでなく自分のレジュメのためにマイクロサービスを選んだりしてないか?

- 悪いのはモノリスではなくテストなしスパゲティ肥大化レガシーなのではないか?

MVPで、マイクロサービスはナシですね。


短期実装重視で、モノリスでいいでしょう。どうせ、要件、ドメイン、サービスは変わってゆくので。


どうしてもマイクロサービス化を想定したいなら、とりあえずモジュラーモノリスにするアプローチもありますが、MVPなら、それすらやり過ぎだろうと思います。

諸々チームで話し合いまして結果としてモノリスで行くことになりました。改めて精査してみたらマイクロサービスは経験として積みたいという主張が強く、今のプロダクトのフェーズとしてはモノリスが適切との判断です。


皆様諸々コメント頂きありがとうごさいます。

コミュニティ
企業一覧
求人
給料