見出し画像

システムアーキテクチャ選定(完結編)~プロダクトを成功に導く

こんにちは。

[前編リンク:なぜ「正解」の技術を選んでも失敗するのか?] では、技術を選ぶ前に自社の「制約」と「非機能要件の優先順位」を血眼になって言語化しよう、という話をしました。

後編となる今回は、いよいよ実践編。集めた情報をもとに、どうやって選択肢を絞り込み、チームやビジネスサイドを納得させ、そして「決断」を歴史に残していくのか。私が実際に修羅場をくぐり抜ける中で研ぎ澄ましてきた、綺麗事抜きの「意思決定のプロセス」をお届けします。


1. 選択肢を絞り込む「プロトタイピング(PoC)」のリアル

前編のプロセスを経て、あなたの手元にはいくつかの候補(ロングリスト)が残っているはずです。「Next.js + Vercel + PostgreSQLの王道構成か、あるいはGo + AWS Lambda + DynamoDBの爆速・高スケーラブル構成か」といった具合に。

ここから2〜3案(ショートリスト)に絞り込むわけですが、カタログスペックや技術ブログの「使ってみた」記事を信じてはいけません。自分たちの手で、コア機能に絞った「捨てられるコード」を書く。 これがすべてです。

「動くゴミ」を作る重要性

ここでのPoCは、綺麗なコードを書く場所ではありません。私たちが検証すべきは、その技術の「最も尖っている部分」と「最も懸念される部分」の2点だけです。

【実録:BさんのPoCでの大誤算】
とあるリアルタイム双方向通信のプロダクトで、Bさんは「流行っているし、スケールしそうだから」と、ある分散キーバリューストアをメインデータベースに据える検証を行いました。ローカルでデータが3件のときは爆速で動き、「これで行きましょう!」とチームに共有。しかし、いざPoCの最終局面で、複雑な条件での結合(Join)や集計クエリが必要になった瞬間、そのデータベースのクエリ制約の壁にぶち当たりました。結局、アプリケーション側で大量のデータをメモリに載せて泥臭くループ処理を回す羽目に。綺麗なドキュメントには書いていない「自分たちのユースケース特有の罠」は、実際に最悪のパターンの負荷やクエリを突っ込んでみないと絶対に牙を剥きません。

PoCコードは、選定が終わったら容赦なくディレクトリごと rm -rf できる割り切りが大切です。本番に流用しようとした瞬間、PoCはただの「技術的負債の前借り」に変わります。

ここから先は

2,732字 / 2画像

¥ 3,000

この記事が気に入ったらチップで応援してみませんか?