Headed to QCon 2024 in San Francisco? Book a meeting with us!

規模を拡大するために必要な4つの要素

これらのコンセプトを念頭に置くことで、アーキテクチャを確実にスケールレディにすることができる。

Jack Christie
Author

Share

想像してみてください。あなたは大きなアイデア、つまりスタートアップを立ち上げるためのMVPに懸命に取り組んできました。顧客の悩みを解決する新サービス、ユーザーを幸せにするちょっとした修正などです。

そして、それがうまくいったと想像してください。あなたは自分のアイデアをユニコーンに変えました。あなたは新しいトップ商品を発売しました。あなたは突然、何千人もの忠実なユーザーを声高な支持者に変えました。おめでとう!パーティーの時間です!

そして今度は、規模が大きくなりすぎたり、スピードが速すぎたり、あるいはピーク時にバックエンドコンポーネントの1つが計画メンテナンスに入ったりしたために、すべてが崩壊したことを想像してみてほしい。がっかりします。

もしあなたが自分のアイデアを本当に信じているのなら、そして今日私たちが生きている世界をちょっとでも見渡してみたいのなら、最初からスケールの大きなものを作る必要があります。そして素晴らしいことに、実際にそれが可能なのです。真のスケールが可能なのは、オンプレミスの自社チームを維持し、スタッフを配置できる大企業だけという時代は終わりました。クラウドとサーバーレスのユビキタス化により、プロッドを立ち上げる前からスケールレディになることが可能なのです。構築する際に重要な4つのコンセプトがあります。

1.弾力性: キャパシティ・オン・デマンド

弾力性とは、リアルタイムの需要に基づいてリソースを自動的に調整するインフラの能力です。インターネット規模でなくても、トラフィックパターンは通常、急激です。スケールレディのシステムは、必要なものに応じて動的にリソースをスケールアウトしたり、(より重要なこととして)リソースをスケールインしたりできるように準備されていなければなりません。これは、弾力性の割合が重要であるという重要なポイントを提起しています。急増するワークロードに対しては、弾力性は即座でなければなりません。必要な自動スケーリングに10分待たされるなら、イベントはすでに終わっているかもしれません。

Amazon DynamoDBのようなサーバーレス・サービスや、Momentoが提供するすべてのサービスは、マルチテナンシーを活用することで弾力性を実現し、キャパシティを常に割り当て可能な状態に保つことで、コスト効率はもちろんのこと、最適なパフォーマンスを維持することが可能になります!

予測できない数のゲストのためにシナモンロールを焼く準備をしているようなものだ。オーブンが1台しかない場合は大変だが、隣に何百台もの予熱オーブンを備えた業務用ベーカリーの鍵があれば問題ない。

2.可用性: 稼働中

可用性とは、システムが常に稼働し、アクセス可能であり続ける度合いのことです。つまり、可用性と弾力性は関連しています。トラフィックの急増に対処するための前述の即時弾力性がなければ、システムは対処できず、可用性は損なわれます。スケールレディのアーキテクチャは、冗長性、フェイルオーバーメカニズム、ロードバランシングで設計されており、キャッシングフリート内のシャードがホットキーで過負荷になったときのようなサービスの中断を減らすことができます。そして、これは計画外のダウンタイムに限った話です。

計画的なダウンタイムは可用性にも影響するため、メンテナンス・ウィンドウのないサーバーレス・サービスを選択することは、スケールを考える上で賢い選択です。タイミングの悪いアップデートやパッチが、システムの成功の妨げになることは避けたい。

パン作りに夢中になっているときに、突然パントリーに鍵がかかってしまったらどうなるか考えてみましょう。いくら予熱したオーブンがあっても、材料がなければ焼くことはできません。

3.観測可能性: 何が起きているかを知る

観測可能性とは、ログ、メトリクス、トレース、洞察などの出力を通じて、システムの内部状態を理解し分析する能力のことです。システムが複雑化し規模が大きくなるにつれて、システムのパフォーマンス、信頼性、健全性に関するこのビジョンはますます重要になります。

このプロアクティブなアプローチは、最適なパフォーマンスを維持するために不可欠であり、弾力性と可用性を強力に実現します。これは、アプリのボトルネックに迅速に対処するか、壊れたアプリ体験の破片を拾い上げるか、あるいは異常と標準的な動作を正しく区別するかの違いを意味します。観測可能性を採用することで、組織は十分な情報に基づいた意思決定を行い、リソースの利用を最適化し、システムの進化と拡張に伴う全体的な回復力を強化することができます。‍

お菓子作りに例えるなら、焼き上がりを確認できなければ、シナモンロールが生焼けになってしまうかもしれません!

4.スピード:レイテンシーを低く保つ

そして今、最も意外でないものを紹介しましょう。未来はここにあります。そしてその期待は、アプリケーションやサービスの規模が大きくなればなるほど大きくなります。

高速化の鍵は、コード効率からネットワーク・パフォーマンスまで、システムのあらゆる側面を最適化することにあります。マイクロサービスは、よりきめ細かな最適化を可能にし、スケールアップに大きく貢献します。キャッシュは、レイテンシーを減らすために使えるもう一つの強力な手段であり、物事をメモリに保存することで、(それがどこにあろうと)データベースへのネットワーク呼び出しに比べて時間を大幅に節約することができます。

シナモンロールの話に戻りましょう。オーブンはあるし、食器棚には新鮮な材料がぎっしり詰まっています!でも、その食器棚はキッチンの反対側にあるのです!もし、材料をもっと近くに置いておけば、(そしてお腹を空かせたゲストのために)どれだけ時間を節約できるか考えてみてください。

まとめ

弾力性、可用性、可観測性、そしてスピードを念頭に置いて構築すれば、どんなに規模が大きくなっても成功することができます。そして私たちは、サーバーレスのパワーのおかげで、誰でもこれらの信条を守ることが可能な時代に生きています。

何が足りなかった?他に加えるべき材料はありますか?Xでご意見をお聞かせください!

Share