IT用語でよく聞かれる「高可用性」「可用性が高い」という言葉。
システム運用では覚えておきたい用語の一つでもあります。
この記事では「高可用性」の基本的な考えと、「信頼性」「冗長性」との違いについて解説します。
高可用性とは
高可用性の解説の前に可用性について説明します。
可用性とは、製品やシステム、サービスが特定のユーザーにとってどれだけ効果的に、効率的に、満足して使用できるか(停止することなく稼働し続けられるか)を指す概念です。
例えば、ユーザー・パフォーマンスの低下や消費者にとって不親切な顧客体験が1日でも続くと、何千人ものユーザーが離れてしまいます。
サービスが利用できないことによるコストは、億単位で測ることもできるでしょう。
可用性は主にソフトウェア設計、ウェブデザイン、ユーザーインターフェース(UI)設計において重要視されますが、あらゆる製品やサービスに適用されます。
そして、高可用性(High Availability, HA)は、システムやサービスが長期間にわたって連続的に稼働し、中断やダウンタイムが最小限に抑えられる能力を指します。
高可用性と信頼性の違い
このように説明すると「信頼性」「冗長性」と何が違うの?と思われるかもしれません。
どちらもシステム設計において重要な概念ですが、実はそれぞれ異なる側面に焦点を当てています。
高可用性は、システムが長期間にわたって連続稼働し、中断やダウンタイムを最小限に抑える能力を指します。
高可用性は、システムがいつでも利用可能であることを保証することを目的とします。
例えば「99.9%の稼働時間」のように、アップタイムの割合が重要な指標です。
一方で、信頼性はシステムが特定の条件下で、特定の期間にわたって正確かつ一貫して機能する能力を指します。信頼性の高いシステムは、エラーや故障が少なく、予測可能なパフォーマンスを提供します。
また、エラー処理、品質保証、堅牢な設計によって達成されます。
高可用性と冗長性との違い
冗長性は、システムやネットワークが故障や障害に対して耐性を持つように設計されていることを指します。
これは、重要なコンポーネントのバックアップや複製を意味し、一部が故障してもシステム全体が機能し続けることを保証します。
高可用の目標は「いつでも利用できること」ですが、信頼性は「正しく機能すること」、冗長性は「一部が故障してもシステム全体として機能すること」を目標としているとイメージすると分かりやすいでしょう。
システム運用において高可用性が重要な3つの理由
高可用性が重要と考えられている理由の背景には、ビジネスへの影響、信頼性、災害対策があげられます。
- ビジネスへの影響: システムのダウンタイムは、収益損失、顧客満足度の低下、ブランドイメージの損傷につながる可能性があります。
- 信頼性の向上: 高可用性を備えたシステムは、ユーザーに信頼性の高いサービスを提供します。
- 災害対策: 自然災害やハードウェアの故障など、予期せぬ事態にも対応できるようになります。
可用性を高める6つの方法
また可用性を高める方法の一つにデータベースがあります。
高可用性データベースとは、ハードウェアの停止やネットワークの問題が発生しても、サービスを中断することなく運用できるように設計されたデータベースのことです。
高可用性データベースは、多くの場合、サービス・レベル・アグリーメントで規定されているものをも上回ります。
データベースといっても様々な種類がありますが、選ぶ際には下記の6つを押さえておくと良いでしょう。
- 冗長性を設計する:システムの重要なコンポーネントを複製し、一部が故障しても全体が機能し続けるようにします。
- フェイルオーバー機構: 主要なシステムがダウンした場合、自動的にバックアップシステムに切り替える機能です。
- ロードバランシング: トラフィックやリクエストを複数のサーバー間で分散させ、過負荷によるダウンタイムを防ぎます。
- スケールアウト・スケールイン:負荷に合わせて分散させるサーバの台数を変更することで、ダウンタイムを防ぎます。
- 定期的なバックアップ: データの損失を防ぐために、定期的にデータをバックアップします。
- 監視とアラート: システムのパフォーマンスを監視し、問題が発生した際には速やかに通知します。
高可用性データベースの代表的な機能
高可用性データベースは、単一障害点を排除し、冗長システム間の信頼性の高いクロスオーバーを確保し、環境問題やハードウェアまたはソフトウェアの故障などの障害を直ちに検出することで、より高い稼働時間を保証します。
高可用性データベースの代表的な機能には下記があります。
- サーバーやノードのフェイルオーバー
- ホットスタンバイ
- データレプリケーション
- 分散マイクロサービスアーキテクチャ
Aerospike Databaseで実現できること
最大限のアップタイムと可用性を実現するために構築されたAerospike Databaseは、最大の稼働率99.999%と可用性を実現します。
主な特徴は3つです。
- 一般的な障害に対して非常に回復力が高い
- 自動フェイルオーバーでデータを確実に保存し、サーバーレベルでレプリケーションを提供
- 動的クラスタ管理、Aerospike Smart Client™、地理的レプリケーションなど、当社のテクノロジーのさまざまなコンポーネントによって、アップタイムと可用性を可能に
高可用性の事例
ここでは、Aerospike Databaseによって高い可用性を実現した事例を2社ご紹介します。
高可用性の事例〜楽天〜
楽天はAerospike Databaseを導入するまでは、同社のデータベースがターゲティング広告プラットフォームに最適化されていないという課題を抱えていました。
そのため、ターゲティング広告をサポートするために必要となる、スピードとボリュームを処理できるデータストアが必要だったのです。
広告サービスは24時間365日稼働していなければなりません。なぜならダウンタイムは収益の損失を意味するからです。
データベースの可用性が高ければ、サービスを停止したり多くのリソースを使用したりすることなくメンテナンスやアップグレードを行うことができます。
導入後は上記の要件だけでなく、チームの運用効率も向上。仮にノードがダウンしたり、サーバーが再起動したりするなどの問題が発生した場合でも、エアロスパイクであれば自動的に解決することができます。
楽天の詳しい事例についてはこちらでもご覧いただけます。
高可用性の事例〜Charles Schwab〜
金融大手のCharles Schwabは、7兆7000億ドルの資産管理を支えるために、単一の運用データストア、ローカルキャッシュの回避、コードの再利用、CLR/JVMの焦点というアーキテクチャ原則に基づいてデータベースアーキテクチャを最新化しました。
Charles Schwabは、リアルタイムデータの重要性を認識し、日中の記録システムとしてAerospike Databaseを採用。この採用により、彼らは価格変動を分析し、短期取引を実行するためのリアルタイムデータを提供することができるようになりました。
現在、Charles Schwabは7兆7000億ドルの資産を管理し、99.99%の可用性を備えた完全な仲介サービスを提供しています。
Aerospikeを分散型データベースとして利用することで、毎日750億件のトランザクションを処理し、各ゾーンで約150TB、毎秒110万の読み取り、毎秒45万の書き込みのスループットを実現しています。
Charles Schwabの詳しい事例についてはこちらでもご覧いただけます。
まとめ:高可用性実現の一つとしてデータベースの見直しがある
ビジネスにおいてダウンタイムなしにシステムを稼働させることは、多様化する消費者のニーズを満たすために重要な要件の一つとなっています。
本動画では、高可用性以外にリアルタイムデータに対応するために必要な高スループット、低レイテンシー(遅延)について、初心者にも分かりやすく解説しています。
ぜひ合わせてご覧ください。