サーバーへのメールとデータ(および独自のデータ)の保存は大きな責任であり、品質、パフォーマンス、信頼性に大きな注意を払っています。 Hotmailが年中無休で1日24時間動作するように、エンジニアリングとインフラストラクチャに多額の投資を行っています。 これらの取り組みについてほとんど耳にすることはありません。何かがうまくいかないときは、まれなケースでそれらについて聞くことになり、当社のサービスは問題に直面します。
Hotmailはあらゆる面で巨大なサービスです。 主なものは次のとおりです。
- 当社のサービスは世界中で利用可能です。 Hotmailは36の言語で59の地域市場に出荷されています
- 13億を超えるメールボックスを提供しています(一部のユーザーは複数のメールボックスを持っています)
- 毎月3億5千万人以上がHotmailを積極的に使用しています(comScoreによると2009年8月)
- 1日に30億を超えるメッセージを処理し、10億を超えるスパムメールをフィルタリングします
- データ量は1か月あたり2ペタバイト増加します
- 現在、155ペタバイト以上のデータが保存されています(この投資の70%、通常は写真)
- 世界最大のSQL Server 2008データベースがあり、何千ものSqlサーバーを制御および管理しています。
Hotmailのユーザーインターフェイスは氷山の一角にすぎず、ほとんどの革新は内部で行われ、ユーザーには見えないことが想像できます。 この記事では、システム全体のアーキテクチャの概要を説明します。 後続の投稿のいくつかの機能を詳しく見ていきます(翻訳者から:コミュニティがこの記事を気に入ったら、これらの後続の投稿を翻訳できます)
建築
Hotmailおよびその他のWindows Liveサービスは、世界中のいくつかのデータセンターでホストされています。 Hotmailは、論理的にスケーラブルな要素-クラスターに編成されます。 さらに、各データセンターのクラスター間で負荷を分散するインフラストラクチャがあります。
- 送受信メールを処理するためのサーバー
- スパムフィルター(翻訳者から:コミュニティがこの記事を気に入ったら、スパムフィルターに関するブログ投稿をHotmailに翻訳できます)
- ユーザーデータと監視システムから受信したデータの保存
- インシデントの監視と対応のインフラストラクチャ
- 自動コード展開の管理と更新の更新のためのインフラストラクチャ
1つのクラスターには、数百万人のユーザー(ハードウェアの年齢に応じて異なります)と、以下を含むサーバーの自律セットがあります。
- フロントエンドサーバー-メッセージのウイルスをチェックし、POP3やDeltaSyncなどのプロトコルを使用してブラウザーまたは電子メールクライアントとの通信を担当するコードを配置するサーバー
- バックエンドサーバー-SQLサーバー、ファイルサーバー、スパムフィルター、データストレージとスパムフィルターの監視、エージェントおよびサーバーカタログ、受信および送信メール処理
- ロードバランサー-負荷を均等に分散して全体的なパフォーマンスを向上させるために使用されるハードウェアとソフトウェア。
誤動作とデータ損失の防止は最優先事項であり、これを防ぐためにあらゆる予防措置を講じています。 失敗する可能性のあるものはいずれも時間が経つにつれてそうなるという前提で、障害を効率的に処理するようにサービスを設計しました。 ハードウェア障害が発生しています。使用している数十万のハードドライブのうち、障害が発生しているものがあります。 幸いなことに、アーキテクチャと障害のタイムリーな処理により、顧客はこの種の障害に気付くことはほとんどありません。
クラッシュを防ぐいくつかの方法を次に示します。
- 冗長性-SQL Serverストレージアレイの組み合わせを使用して、データを保護します。 アクティブおよびパッシブのフォールトトレラントテクノロジを使用しています。 これは、常に同期されている多くのサーバーとデータのコピーがあることを示す珍しい方法です。 合計で、ハードウェアエラーが発生した場合のデータ損失の可能性を最小限に抑えるために、データの4つのコピーを異なるドライブとサーバーに保存します。
- このアーキテクチャのもう1つの利点は、ダウンタイムなしで、更新プログラムの展開やセキュリティの修正などの定期的なメンテナンスを実行できることです。
- 監視-ソフトウェアとハードウェアを監視するための広範なシステムがあります。 数千のサーバーが、サービス、トランザクション、およびシステム全体のパフォーマンスの状態を監視します。 私たちのサービスは非常に大きいため、パフォーマンスと稼働時間を一緒に追跡するだけでなく、クラスターレベルと地理的な場所でも追跡します。 システムの全体的なパフォーマンスを見たときに、あなたの個人的な経験が戻ってきて、失われないことを確認したいと思います。 私たちは各ユーザーに関心を持っています。 今後の投稿では、監視とパフォーマンスについて詳しく説明します。
- 対応チーム-24時間対応の対応チームがあり、グローバルモニタリングシステムを監視し、問題がある場合はいつでも行動を起こします。 必要に応じてエンジニアが数分間対応できる拡張プロセスがあります。
技術プロセス
私たちのアーキテクチャと、中断のないサービスを確保するための手順について少しお話ししました。 ただし、当社のサービスは静的ではありません。 使用による成長に加えて、定期的に更新を行っています。 したがって、私たちのプロセスは、途切れないサービスを提供するためのアーキテクチャと同じくらい重要です。 パッチや小さなアップデートからメジャーリリースまで、新しいコードをデプロイする際には、特定の予防措置を講じています。
テストと展開。 開発者ごとに、開発者と協力して仕様の開発と作成、テストインフラストラクチャの作成、新しい機能をテストする自動テストの作成、および品質の確保に貢献するテストエンジニアがいます。 品質について話すときは、安定性と信頼性だけでなく、使いやすさ、パフォーマンス、セキュリティ、アクセシビリティ(障害を持つユーザー向け)、プライバシー、スケーラビリティ、すべてのブラウザの機能性についても話します。
私たちは広告によって資金提供されている無料のサービスであるため、非常に効果的でなければなりません。 したがって、システムの展開、構成、およびメンテナンスは高度に自動化されたプロセスです。 自動化により、人為的エラーのリスクも軽減されます。
コードの展開と変更管理。 テストラボには数千台のサーバーがあり、クライアントに届くずっと前にコードを展開してテストします。 データセンターには、開発の最終段階で「ドッグフード」とベータ版をテストするために特別に予約されたクラスターもあります。 ハードウェアまたはソフトウェアの更新、またはセキュリティパッチであるかどうかにかかわらず、ラボでのすべての変更を確認します。
すべてのエンジニアリンググループがリリースに署名すると(テスターやエンジニアを含む)、世界中のクラスターで段階的な更新プログラムの展開を開始します。 通常、これには数か月かかるため、時間がかかるだけでなく、サービスの品質とパフォーマンスに影響を与えないようにします。
一部の機能を個別に有効または無効にすることもできます。 更新プログラムを展開することもありますが、それらの組み込みを遅らせます。 まれに、セキュリティまたはパフォーマンス上の理由で一部の機能をブロックします。
おわりに
このトピックでは、Hotmailが示唆する開発の規模を理解する必要があります。 私たちはあなたのために私たちのサービスの技術的な卓越性と継続的な改善に取り組んでいます。 私たちはサービスがどのように成長しているかを研究し続け、あなたのフィードバックに真剣に耳を傾けます。あなたの考えや質問をここに私にコメントしてください。 私は、Windows Liveチーム全体のように、サービスの情熱的なファンです。エンジニアになることもできますが、何百万人ものユーザーと一緒にサービスを利用しています。