Mackerelへ至る道
TIME rest time current/total
TopicsPlaceHolder

Mackerelへ至る道

Hackers Champloo 2016

Jun 25th, 2016

Profile

songmu

お招きいただきありがとうございます!

経歴

インフラを意識してコードを書くということ

私とPerl

私とISUCON

私とGo

最近Goで作ったもの

ニッチなツールを作る

Mackerel Logo

 

可視化

アラート

最大1ロール2554台!

100週連続リリース

100週連続リリース

100週連続リリースの裏側

なぜ監視SaaSなのか

モニタリングの重要性の向上

すべてのサービスで健全性と一般的な監視関連のメトリックを同じように出力することをおすすめします。(中略) どれを選んでも、標準化するようにしてください。

開発体制

アーキテクチャ

技術スタック

Mackerel開発における言語多様性

MackerelとScala

Why Scala?

Scalaの使いドコロ

はてなインターン募集中です(ちょっと宣伝)

MackerelとGo

事例1: mackerel-agent

Why Go?

事例2: mkr

事例3: URL外形監視ワーカー

外形監視ワーカーのアーキテクチャ

OSS副産物

Perlのモジュールの思想を受け継いだものが結構できた

Go本体への貢献

特定のカーネルオプションが向こうになっている環境でGoが即死する問題を修正。

Golangを書いてみて

Goの使いドコロ

MackerelにおけるPerl

事例: mackerel-agentのリリースの自動化

  1. p-rを自動生成
  2. そのp-rをレビュー後マージボタンを押したらTravisがtagを自動で打つ
  3. tagを打たれたコミットに対してTravisがビルド成果をrelease

自動化周り

Perlでツール作成(標準モジュール縛り)

自動化機構は負債になりやすい

ツールをテストする

ちゃんとテストを書けるのは安心

if (!$ENV{HARNESS_ACTIVE}) {
    main();
} else {
    # When called via `prove`, tests will run.
    run_tests();
}

ツールの責務を分ける

Perlの使いドコロ

プロジェクトの渋い脇役としても活きる

Perlの使いドコロ - 2

MackerelにおけるRuby

事例1: fluent-plugin-mackerel

その他Ruby事例

Rubyの使いドコロ

Mackerelにおけるpython

Graphite

Graphiteの構成

線形回帰

→ 将来予測機能の足がかりに

https://github.com/graphite-project/graphite-web/pull/1447

読み込みパフォーマンスの向上

書き込み効率の向上

言語選定について

特性に応じた選択をする。エコシステムに乗っかる。

エンジニア向けSaaSを開発するということ

ドッグフーディング

感謝される

否応なしに新しい技術を学ぶ必要がある

キャリアとビジネス

とにかく楽しい

やりたいことだけをやりたい

以上

【急募】We are Hiring

hatena