oranie's blog

旧:iをgに変えると・・・なんだっけ・・・

【チラ裏】あなたは本当にそのデータストアが好きで使うんですか?

チラシの裏的な雑記です。

サービスに新しいデータストアを選ぶ際にこの辺を情熱を持って説明してくれる人が好き、という話です。

  • そのデータストアを使う理由はなんですか?みんなが使い慣れている物から変える理由は「有名な会社が使っていて^^」「他のチームが使っていて^^」とかではなくて、既存の物では解決出来ない問題を解決するアプローチになっていますか?
  • もし単純にキャッチアップしておきたいというレベルなら、あなたの趣味で作るシステムで運用する、では欲求を満たせませんか?
  • 同じようなプロダクトは他にもあると思いますが、そのプロダクトで無ければいけない理由はなんですか?
  • まだ新しいプロダクトだった場合、あなたはそのコードを読んで、バグを報告して、必要であればパッチを書く覚悟を持っていますか?
  • あなたはチーム内でそのプロダクトの第一人者になる、という覚悟がありますか?他のメンバーへの啓蒙や情報共有を率先して出来ますか?
  • もしそのデータストアが不具合や開発停止で駄目だった場合に移行する手段をちゃんと考えていますか?サービス停止時間を伴う必要が有るのならチームは納得していますか?
  • CAP定理やACIDなどの特性を把握していますか?トランザクションなどが無い場合、自分で実装する必要がある事を想定していますか?
  • 性能を向上させる時にどういうアプローチを取るべきなのか検討をしていますか?総データ量や1つのデータの大きさ等を色々なパターンで考えていますか?スケールアップなのかスケールアウトなのか、またそのバランスなども考えていますか?
  • HWスペックでも根拠のある話が出来ますか?「CPUコアは多ければ多いほど良い。メモリも多めね。Diskも容量一杯欲しいなぁ」というのは誰でも言えるので、言わないほうがマシなレベルです。
  • バックアップ、リカバリ、ノード障害時の挙動などを把握していますか?データの保全性などについて理解していますか?
  • 分散型クラスタなどの場合、どのようなアルゴリズムでデータが分散されるか把握していますか?レプリカを持つ場合も同様です。
  • もしあなたが全てを面倒見るのでは無い時、運用する人はそのデータストアについてどう考えていますか?上に書いたような情熱を持っていない場合、あなたがその人の情熱を補えますか?その議論をする時間も作れないのであれば、間違いなく誰も得しないと思います。
  • 最後に一番大事な事。そのプロダクトを使う事は「ユーザーの為」ですか?

なぜそのデータストアをシステムに選択したとかは理由が色々あるだろうし事情も違うのであれだけど、もし自由に選んで良いというような時にチャレンジングな物を選ぶ時にはちょっと冷静に考えて見て欲しい、という気持ちがあって、それはなんでだろうなーというのを整理したらこういう事を言って欲しいんだなー、とか逆に自分もこういう事を理解しないといけないんだなぁというメモでした。

こういう情熱持っている人と一緒に仕事出来ると辛くても嬉しいですよ!むしろ勉強させて頂いてますm(_ _)m