元記事は AWS blog に掲載されました
世界で最も人気のあるWebフレームワークの1つであるLaravelは、開発者にアプリケーションパフォーマンスのリアルタイムなインサイトを提供するため、自社製のオブザーバビリティプラットフォームLaravel Nightwatchをリリースしました。AWSマネージドサービスとClickHouse Cloudを全面的に基盤として構築されたこのサービスは、サブセカンドのクエリレイテンシを維持しながら、すでに1日あたり10億件を超えるイベントを処理しており、開発者は自分のアプリケーションの健全性を即座に可視化できます。
Amazon Managed Streaming for Apache Kafka (Amazon MSK) を ClickHouse Cloud と AWS Lambda と組み合わせることで、Laravel Nightwatch は Laravel ならではのシンプルさと開発者体験を維持しつつ、大規模かつ低レイテンシなモニタリングを実現しています。
課題: グローバルな開発者コミュニティ向けにリアルタイムモニタリングを提供する #
Laravelフレームワークは世界中で数百万のアプリケーションを支えており、毎月数十億のリクエストを処理しています。各リクエストでは、データベースクエリ、キュージョブ、キャッシュルックアップ、メール、通知、例外など、潜在的に数百件ものオブザーバビリティイベントが生成されることがあります。Nightwatch のローンチにあたり、Laravel はグローバルコミュニティからの即時の採用を予想しており、初日から数万のアプリケーションが24時間体制でイベントを送信することを見込んでいました。
Laravel Nightwatch には、以下を満たすアーキテクチャが必要でした:
- 顧客アプリケーションから毎秒数百万件のJSONイベントを確実に取り込めること。
- リアルタイムダッシュボード向けにサブセカンドの分析クエリを提供できること。
- 予測不能なトラフィックスパイクに対応するために水平方向にスケールできること。
- これらすべてをコスト効率よく、低メンテナンスで提供できること。
課題は、グローバル規模でデータを処理し、アプリケーションの健全性についての深いインサイトを提供しつつ、開発者にとってシンプルなセットアップ体験を損なわないことでした。
ソリューション: 疎結合なストリーミング・アナリティクスパイプライン #
Laravel Nightwatch は、上図に示すように、トランザクションワークロードと分析ワークロードを分離した、デュアルデータベース、ストリーミングファーストのアーキテクチャを実装しました。
- トランザクションワークロード – ユーザーアカウント、組織設定、課金などのワークロードはAmazon RDS for PostgreSQL 上で動作します。
- 分析ワークロード – テレメトリイベント、メトリクス、クエリログ、リクエストトレースは ClickHouse Cloud で処理されます。
主要コンポーネント #
このソリューションの主要コンポーネントは以下の通りです:
- 取り込みレイヤー
- Amazon API Gateway が顧客アプリケーションに組み込まれた Laravel エージェントからテレメトリを受信します
- Lambda がイベントの検証とエンリッチメントを行います。検証・エンリッチされたイベントは Amazon MSK に発行され、スケーラビリティのためにパーティション化されます
- アナリティクスへのストリーミング
- ClickHouse Cloud の ClickPipes が MSK トピックを直接サブスクライブし、抽出、変換、ロード (ETL) パイプラインの構築と管理の必要性を軽減します
- ClickHouse のマテリアライズドビューが生のJSONを事前集計し、クエリしやすい形式に変換します
- ダッシュボードと配信
- Laravel、Inertia、React で構築された Nightwatch ダッシュボードは、AWS Fargate for Amazon ECS 上で動作します
- Amazon ElastiCache for Redis がセッションとキャッシュルックアップを高速化します
- Cloudflare CDN がグローバルユーザーへの低レイテンシ配信を提供します
なぜ Amazon MSK と ClickHouse Cloud なのか? #
Nightwatch には、耐久性があり、水平方向にスケーラブルで、メンテナンスの少ないストリーミングのバックボーンが必要です。
Amazon MSK Express ブローカー を使用することで、低レイテンシ、弾力的なスケーリング、簡素化されたオペレーションのメリットを享受しながら、負荷テスト中に毎秒100万件を超えるイベントを達成しました。MSK Express ブローカーはストレージのサイジングやプロビジョニングが不要で、標準的な Apache Kafka ブローカーに比べて最大20倍速くスケールアップし、90%速く復旧します。さらに、信頼性の高いパフォーマンスのためにベストプラクティスに準拠したデフォルト値とクライアントクォータが適用されます。Lambda、Amazon Simple Storage Service (Amazon S3)、Amazon CloudWatch などの他のAWSサービスとのシームレスな統合により、堅牢なエンドツーエンドのストリーミングアーキテクチャを簡単に構築できました。
これらのイベントをリアルタイムで取り込み、変換するために、Nightwatch は ClickHouse Cloud とそのマネージド統合プラットフォーム ClickPipes を使用しています。ClickHouse Cloud は、従来の行ベースのデータベースに比べてアナリティクスにおいて最大100倍速いクエリパフォーマンスを提供することで、分析ワークロードに優れています。高度な圧縮アルゴリズムにより最大90%のストレージ削減を実現し、高パフォーマンスを維持しながらインフラコストを大幅に削減します。カラムナアーキテクチャと最適化された実行エンジンにより、ClickHouse Cloud は数十億行を1秒未満でクエリできるため、Laravel Nightwatch はグローバル規模でリアルタイムダッシュボードと分析を提供できます。
ClickPipes を使用して Amazon MSK と ClickHouse を統合することで、Laravel は ETL パイプラインの構築と管理に伴う運用負担を軽減し、レイテンシと複雑性を低減しました。
課題の克服 #
テストの複雑性 #
合成ベンチマークやテストデータセットも有用な結果をもたらしますが、本番デプロイ前にインフラとコードを厳密にテストするには、より現実的なワークロードが必要です。チームは Terraform を使用してアプリケーションコードと並行してインフラを管理し、複数の開発・テスト環境を作成して、各リリース前に独自のアプリケーションを使ってプラットフォームを社内でテストしました。
マルチリージョンインフラ #
複数のデータ保存リージョンに対応する必要性も課題をもたらし、レイテンシ、複雑性、コストが最大の懸念事項でした。しかし、AWS、ClickHouse Cloud、Cloudflare のスタックは、強力なネットワーキングツールとスケーリングオプションを提供してくれました。VPCピアリング、RDSレプリケーション、グローバルサーバーロードバランシングがネットワーキング面の重作業を担う一方で、各リソースをスケールし適切なサイズに調整できることにより、コストを最小限に抑えることができました。
大規模でのクエリパフォーマンス #
マテリアライズドビュー、インテリジェントな時系列パーティショニング、特化したClickHouseコーデックにより、データ量が数十億規模に成長してもクエリはサブセカンドを維持できました。さらに、コンピュートの分離により、異なるワークロードが同じデータにアクセスしながら独立してスケールでき、各ロードの要件に応じて水平・垂直方向にクラスタを適切にサイジングすることが可能になりました。
成果 #
Laravel Nightwatch のローンチは期待を超えました:
- 最初の24時間で5,300人のユーザーが登録
- 初日に5億件のイベントを処理
- ダッシュボードリクエストの平均レイテンシ97ミリ秒
- 76万件の例外をリアルタイムで記録・分析
Amazon MSK と ClickHouse Cloud を基盤として構築することで、パフォーマンスや開発者体験を犠牲にすることなく、ゼロから数十億イベントへとスケールすることができました。
今後の展望 #
Laravelはこれから Nightwatch を以下のように拡張する予定です:
- 米国と欧州外のデータ主権要件を持つ顧客に対応するための より多くのリージョン
- 顧客のアプリケーションについてさらに深いインサイトを提供する より広範なデータ収集
- より厳格なコンプライアンス要件を持つ顧客に対応するための SOC 2 認証
- ユーザーに影響が及ぶ前に問題を特定する より高度なモニタリングと分析
現在のアーキテクチャは、趣味レベルからエンタープライズ規模まで、あらゆる規模のアプリケーションを快適にサポートし(寛大なフリーティアを含む)、パフォーマンスの低下なしに月間1兆を超えるイベントを処理できるように設計されています。
まとめ #
Laravel Nightwatch は、Amazon MSK、ClickHouse Cloud、AWSサーバーレステクノロジーを組み合わせることで、コスト効率の高いリアルタイムモニタリングプラットフォームをグローバル規模で構築できることを実証しています。初日からスケールを念頭に設計することで、Laravel はコミュニティが期待する開発者フレンドリーな体験を維持しながら、数十億イベントにわたるサブセカンドの分析を提供しました。



