読者の皆様へ: 皆様のご要望にお応えするべく、ノイズを削減する機能セットを開発しました。皆様が関心をお持ちのトピックを、EメールとWeb通知で受け取ることができます。新機能をぜひお試しください。
CDNプロバイダのEnvatoは、同社のエッジネットワークプロバイダを移行し、DDoS(Distributed Denial of Service)システムとWAF(Web Application Firewall)システムをひとつのプロバイダに統合した。インフラストラクチャの変更にモニタリングとレグレッションの継続的フィードバックを組み合わせ、自動化されたテストベースのアプローチのおかげで、同社はこの移行をダウンタイムなしで行うことができた。
EnvatoはCDN(Content Delivery Network)サービスを提供している。他のCDNプロバイダと同様、同社にもエッジサーバのネットワークがある。エッジネットワークは、地理的に近いロケーションからユーザにコンテントを提供するために使用されるものだ。エッジサーバの実体は、実際にホストされているオリジナルサーバから取得したコンテントを提供するプロキシキャッシュである。Envatoのようなベンダを含むほとんどのCDNは、エッジネットワークにセキュリティ対策を組み込んで、DDoSなどの攻撃からガードしている。
EnvatoのエッジネットワークサーバはDDoSスクラブと合わせて、WAFとしての機能も実行する。これにより、セキュリティの問題はオリジナルのインフラストラクチャではなく、エッジ側に移行する。このような攻撃に対処する責任を、オリジナル側から分離するのだ。この種のWAFは一般的に、過去の要求の分析から得られたルールをベースとして使用する。攻撃への対応としては、ブロックする、そのような要求を遅らせる、キャプチャして通知するなど人の介在を強制する、などが考えられる。同じような手法を、CloudFlareやAkamai、Fastlyなど他のベンダも採用している。DDoSスクラブには、考えられるDDoSトラフィックの検出と緩和が関連している。参考までに、Akamiの“State of the Internet Security Report”(PDF[/0})によると、世界的なDDoSとWAF攻撃は、この1年でそれぞれ14パーセントと10パーセント増加している。
Envatoの従来のシステムは、この2つのシステムがデイジーチェーン接続されていて、ユーザの要求はまずDDoSスクラブを通過し、WAFを通った後にオリジンに到達していた。
イメージ提供 : https://webuild.envato.com/blog/migrating-edge-providers/
両システムのデバッグや新たなデプロイメントのロールアウト時の問題、自動化の違い、アラートを統一できなかったことが、DDoSスクライバとWAFの共存が可能な単一システムへの移行を促した。2つのシステムには、生成するリクエストIDや潜在的なセキュリティ問題の警告方法の点で違いがあり、これがデバッグを難しくしていた。また、基盤とするサービスプロバイダが違うため、インフラストラクチャ自動化が可能な範囲がシステムの一部に限定されていた。さらに、互換性の維持が難しく、新たな変更をロールアウトする場合には余分な労力を必要としていた。
システムの移行は、エンドユーザに対するダウンタイムなしで実施する必要があった。チームが立てた戦略は、テストスイートを用意して、テストで支えられた一部ユーザに変更をロールアウトした上で、部分的なロールアウト中に気付いた問題を修正した上でフルロールアウトを実行する、というものだった。テストスイートを使うというアイデアは、アプリケーションコードの場合と同じように、インフラストラクチャ機能のレグレッションを回避するためのものだ。振る舞い駆動開発(BDD)で使用されていたRubyベースの既存フレームワークであるRSpecは、Envatoのエンジニアリングチームでも既に使用されていた。チームはHTTPインタラクション(要求/応答)を処理するHttpSpecというライブラリを開発して、RSpecの範囲内で動作させるとともに、Spotifyが開発したオープンソースライブラリのrspec-dnsを採用した。RSpecテストを記述することでサーバ構成の宣言的テストを可能にする、ServerSpecという関連プロジェクトもある。さらには、プロバイダ間の移行を容易にするため、プロバイダ間のAPIコール応答を変換する社内ツールもある。
最終的に、トラフィックとユーザへの影響を優先しながら、変更がロールアウトされた。自動テストの定期サイクルでは、信頼できるレベルが維持されている。
この記事を評価
- 編集者評
- 編集長アクション