データ集約型アプリケーションのスケーリングに関する5つの厳しい真実

<font color="Grey">*[5 hard truths about scaling data intensive applications](https://aiven.io/blog/5-hard-truths-about-scaling-data-intensive-applications)の翻訳です。*</font>

2022年4月14日

# データ集約型アプリケーションのスケーリングに関する5つの真実

データインテンシブ・アプリケーションのスケーリングに関する5つの難問を解決します。

データ集約型アプリケーションのスケーリングに関する5つの厳しい真実についてお話ししましょう。


この記事で取り上げる原則は、クラウドでデータ・ワークロードのスケーリングを行う顧客を支援する中で、私たちが経験を通じて学んだことであり、また私たちのネットワークの人々と話をする中で学んだことです。正しいことに取り組んでいることを確認する方法から、成功するためのセットアップ方法まで、思考のプロセス全体について説明する。


私たちは、お客様だけでなく、お客様をサポートするツールや企業のエコシステムも成功させたいと考えています。


それぞれの原則について、問題を違った角度から考えるのに役立つ考え方や引用についてお話します。そして、あなた自身やあなたのチームが本当にチャレンジすべき質問をいくつか投げかけます。


![The Big Five](https://cdn.sanity.io/images/sczeoy4w/production/eab50bb3d577164d875f0b1499af24194983b214-2500x1667.png?q=80&fit=min&auto=format&dpr=1.5)


## 1.範囲を限定する


正しい問題に取り組み、顧客の痛みに焦点を当てていることを確認したい。そして、私はいつも、大学時代に持っていた、うまくいって、それを維持するという考え方に立ち戻る。そしてこれは、スタートアップで働くことに関連するMVPの概念とぴったり一致する：*MVP（Minimum Viable Product）とは、必要最小限の製品。必要なものを定義し、解決しようとしている問題を定義し、顧客の痛みに焦点を合わせる。それが収益の原動力となる。


私が顧客やスタートアップの友人に尋ねたい挑戦的な質問は、何がより速く成長しているかということだ：


* コードベースと製品バックログ？
* それとも顧客ベースと収益？


楽しい派手な機能を作るだけでなく、一歩引いたところにいることを確認してください。顧客第一主義を徹底してください。真空の中で設計し、構築してはいけません。フィードバックのループがしっかりしていて、うまく実装されていることを確認すること。


## 2.自分の限界と滑走路を知る


ソリューションを設計したら、顧客体験を設計する必要がある。ソフトウェアエンジニアリングやソフトウェアアーキテクチャでは、*滑走路*という概念がある。


ソリューションを構築するプロセスを、滑走路に座っている飛行機と考えてみよう。ブレーキを踏んで、停止し、ピボットして誘導路に旋回する十分な時間と余裕を確保するか、あるいは離陸に完全にコミットするかです。


そして重要なのは、その決断を下すために必要なすべての情報を前もって入手しておく必要があるということだ。その決断を下すために、その場所に到着するまで待つことはない。


ソフトウェア・アーキテクチャも同じです。そして、決断を下す前に、すべての能力、すべての情報、すべての観測可能性、すべてのトレーサビリティ、すべての情報を持っていることを確認したい。それで驚いてはいけない。


そして、私が顧客や友人に挑戦したい質問はこうだ：


* 何人の顧客が多すぎるのか？
* 顧客はいつ増えすぎるのか？


何人の顧客が多すぎるかということに関して言えば、私は桁、つまり一晩で2倍、10倍、100倍の倍数を考えたい。あなたの顧客ベースが2倍になったら、何が壊れるだろうか？


一晩で10倍という話になると、その時点ではたいてい、何が壊れないか、どんなシステムが実際に耐えられるか、どんなインフラが耐えられるかということになる。そして、インデックス戦略やシャーディング戦略、自動スケーリング戦略について興味深い会話が始まる。


そして、ある盲点があることに気づく。そしてまた、顧客が一晩で100倍に増えたとして、その負荷に対応できるシステムとはどのようなものなのか。その負荷に対応できるような正しい方向に向かっているのか？そのボリュームに対応できるようなパターンやプロセスを用意していますか？これが水平スケーリングの例だ。


一方、どの程度の規模の顧客なら「大きすぎる」のでしょうか？顧客のデータ量が多すぎたり、アプリケーションとやりとりするユーザー数が多すぎたりするケースはありますか？アプリケーションの観点から "大きすぎる "をどのように定義するのか？それはデータベースのテーブルやインフラの決定にどのような影響を与えるのでしょうか？何が壊れるのか？あなたの最大の顧客を10倍、100倍とした場合、何が起こるでしょうか？


## 3.観測可能性！


スケーリング戦略を定義したら、それを観察する体制を整える必要がある。盲点に注意すること。すべてが順調だと思い込んではいけない。


わからなければ、最悪の事態を想定し、現状を把握し、それを測定する。そして、能力と安定性はブーリアン状態ではないことを覚えておいてほしい。連続体なのだ。あなたは滑走路を転がっている。決断を迫られるのはいつなのか、必要な情報はすべて揃っているのか。


滑走路の端にさしかかったとき、十分なスピードが出ていなかったり、フラップが出ていなかったりしても驚かないでほしい。


正直なところ、私が本当に尋ねたい難しい質問は、知性に戻る：


* 自分の知らないことを知っているか？
* 盲点はどこですか？
* 何を測定していないのか？


そしてまた、盲点をいくつか特定したら、あるいはそれを考えようとしているときにも、迫り来るどの決断が最も破壊的だろうか？


それらを測定し、必要なすべての情報を確認する。


それを正しく行うのは本当に難しい。しかし、それがあまりにも大きな仕事だと思わせないことだ。


## 4.統合とツールは過小評価されている


ほとんどすべてのテクノロジー、すべてのプログラムやフレームワーク、すべてのクラウドの周りには、ツールや統合の全体的なエコシステムがある。本当に賢い人たちがたくさんいて、それをもっと簡単にしたいと思っている。彼らは難しい問題を解決するのが好きで、あなたの問題は新しいものではない。


もしあなたが開発者なら、Stack Overflowで2年前、3年前の投稿を見たことがあるだろう。これは、巨人の肩の上に立つことに戻る。そこにあるものを使いましょう。常に自分で解決策を考え出さなければならないと感じたり、難しいやり方をしたりしてはいけません。


クラウドの最も高価な部分は、キーボードと椅子の間にあることを忘れないでください。


そこで、私がいつも尋ねたくなる難しい質問がある：*どうやってお金を稼ぐのですか？あなたの会社は収益を上げているのですか？自社のKubernetesクラスタの運用ですか？自社のデータセンターを管理しているのか？独自のロギング・フレームワークの構築ですか？


私がこのようなくだらない質問をするのは、そのようなことをすべて行ってきた企業で働いてきたからだ。それが最終的に優位に立ったのか？わからない。その質問には本当に自分で答えなければならない。


そして、もしそれがお金にならないなら、なぜそんなことをするのか？どんな利点があるのか？優位性はあるのか？そのエンジニアリング・リソースをもっとうまく使わないことで、機会損失を被っていないだろうか？


覚えておいてほしいのは、作るか買うか、フレームワークを使うかアウトソースするか、独自のソリューションを構築するか、選択する時と場所があるということだ。しかし、その時と場所を知る必要がある。


そのことを肝に銘じて、成功への準備を整えよう。何よりも、エコシステムであることを忘れてはならない。あなたはテック・コミュニティの中で生きている。


## 5.何よりも相互の成功


インターネット上には、「速く行きたいなら一人で行け。遠くへ行きたいなら、一緒に行こう。そして、それは技術製品にも当てはまる。新たな専門知識を雇用して社内に導入するにしても、コンサルティング会社のプロフェッショナル・サービスに頼るにしても、マネージド・サービス・プロバイダーを利用するにしても、他者の専門知識を活用できるようにすることで、何が優位性をもたらすのか、そしてそれをどのように活用するのがベストなのかを確実に把握しておく必要がある。


結局のところ、ベンダーやマネージド・サービスは、お金と引き換えにサービスを提供しているのだ。そこで私が尋ねたいのは、次のようなことだ：


* どうやってお金を稼いでいるのか？
* どのように成長しているのか？
* あなたの目標は何ですか？


あなたの口座を毎年100％増やすことだけが目標なのか、それとも相互の成功を定義する異なるメカニズムがあるのか？それがあなたとの関係にどのような影響を与えるか考えてみてください。


## Aivenは正しいことに取り組む


Aivenでは、自分たちの現在地を把握しながら、正しいことに取り組むよう日々努力しています。私たちが成功するだけでなく、お客様やベンダー、私たちがその上に構築するすべてのサポート・プラットフォームも成功するよう、お話した原則をすべて実践しています。


## まとめ


AivenはDatabase As A Serviceプラットフォームであり、開発者の生活をより良くするために開発者によって開発者のために構築されています。業界と同じように、Aivenでは多くの賢い人々が働いています。また、Aivenのサービスを利用している人もたくさんいます。


頭のいい人たちと組んで難しい問題を解決するには、[無料トライアルを開始](https://console.aiven.io/signup)して、Aivenのエキスパートにご連絡ください。本当に難しい問題に一緒に取り組みましょう。


--


製品や機能に関連する最新ニュースを入手するために、[changelog](https://aiven.io/changelog)や[blog](https://aiven.io/blog)のRSSフィード、または[LinkedIn](https://www.linkedin.com/company/aiven/)や[Twitter](https://twitter.com/aiven_io)のアカウントをフォローしてください。