ShareThis は急成長しています! 私がこの会社で働いているこの4年間で、私たちは1部屋の会社から多くの部屋を持つ会社に成長しました。 また、無料の食事、豪華なオフィス、社員旅行など、典型的なスタートアップ企業の特典もすべて得られるようになりました。
価値を創造すると楽しいことが起こりますが、エンジニアリングには複雑さというコストがかかります。 現在、私たちは1日あたりテラバイトのデータをリアルタイムで生成しています。 今後1、2年のうちにさらに多くのデータを取り込み、データフローを2倍、3倍にしたいと考えています。 同僚に私たちがやっていることを話すと、「すごい」という反応が返ってくるのは嬉しいことです。
Kafka、Cassandra、Aerospike、BigQueryなどのツールを使えば、4年前よりもスケールアップが容易になっていますが、問題はインジェストではありません。 難しいのは、"そこにあるデータが正しいことをどうやって知っているのか?""すべてのデータがそこにあることをどうやって知っているのか?"と聞かれたときです。
"It just is" - 十分ではありません。
このような質問に答えるために、私たちはすべてのデータパイプラインを使って、かなり無償のモニタリングを行っています。 ありがたいことに、私たちのコードは共通のフレームワーク上に構築されているので、あるライブラリにモニタリングを追加すると、そのライブラリを使用しているすべてのアプリケーションに動的に追加されます。 素晴らしいですね。
もしかしたら、この技術のちょっとした内訳が、これからやろうとしている人の助けになるかもしれません。
グラファイト:Graphiteは、"グラフやダッシュボードをレンダリングするDjangoベースのWebアプリケーション "です。 CarbonとWhisperという他の2つのプロジェクトの上に構築されています(両プロジェクトはGraphiteの一部です)。 Carbonは、アグリゲーションとキャッシュのレイヤーとして機能し、UIをレスポンシブにします。 Whisperは「固定サイズのデータベースで、RRD(round-robin-database)に似たデザインと目的を持っています。Whisperは、RRD(round-robin-database)に似た設計と目的を持つ固定サイズのデータベースであり、数値データの長期保存を高速かつ確実に行うことができます。Whisperでは、最近のデータの高解像度(1ポイントあたりの秒数)を低解像度に劣化させて、過去のデータを長期的に保存することができます。"
Codahale:Codahale氏のライブラリは、実際に様々なサービス(Gangliaなど)のコネクタを備えています。 ここでは、Java Graphiteのコネクタを使っていますが、これで問題ありません。 メトリクス・オブジェクトは動的に作成することができ、基本的な統計、ヒストグラム、タイマーなどのログを取ることができます。 このライブラリでは、サーバーごとに1分ごとにログを取るように設定しているので、コールがバッチ処理され、トラフィックが低く抑えられます。
セイレン: の修正版を使用しています。 このDockerプロジェクト 内部には我々のコンポーネントがバンドルされています。 システム環境変数を使ってGraphiteとSlackを指定しています。 UIにアクセスしたら、Graphiteのメトリクスを使ってチェックを行い、Slackチャンネルにアラートを送ります(よく知られている機能を使います)。
お役に立てれば幸いです。 ハッピーハッキング