はてなにおけるGoの活用
Go言語で働かナイト! Forkwellキャリア談義 #3
Apr 9th, 2015
Profile

東京オフィスの様子です

ランチ

フリードリンク&お菓子

SHIBAFU
東京オフィス増床

TATAMI

We are Hiring

- 「知る」「つながる」「表現する」で新しい体験を提供し、人の生活を豊かにする
- はてなではエンジニアを募集しています
- 東京でも絶賛採用中
- エンジニアは少ない
- 東京オフィス自体には30人くらいいます
- もちろん京都にもおいでやす
本題
Mackerelの概要
- ServiceとRoleという概念でサーバーを管理
- 一覧
- メタ情報管理
- new! EC2インスタンス情報表示機能

- 監視
- エージェントによるメトリック収集
- グラフによる可視化
- モニタリングとアラート通知
【本日】Slackにグラフ画像通知

特色
- 簡単セットアップ
- ServiceとRoleを組み合わせた柔軟なサーバー管理
- カジュアル運用からヘビー運用まで
- REST APIによる操作
カジュアル運用
何を監視して良いかわからなくてもお手軽に監視開始。
ヘビーに運用
監視ツール運用がしんどくなってきたあなたに。
Mackerel Overview
アーキテクチャ

利用技術

mackerel-agent

Why Go?
- シングルバイナリが吐けるのでセットアップが簡単
- マルチプラットフォーム対応が比較的容易
- OSX/Windowsでも動作可能(現状サポート外)
- 常駐プロセスを書くことに向いている
- 並行でメトリック収集
- フットプリントが小さく監視対象のサーバーのパフォーマンスに影響を及ぼさない
- 実際ISUCONでインストールしていたが全くスコアに影響せず
mackerel-agentがやっていること
- metricsのHTTP投稿のためのgoroutine
- 毎分メトリックを収集管理をするgoroutine
- 複数のgoroutineを立ち上げてメトリックを取得
- チャンネルをキューのようにして通信
その他のGo活用(社員の個人活動含む)
Goの良さ
- 型がある
- にも関わらずコンパイル速度が現実的
- LLっぽさ
- ライブラリのソースコードにアクセスする方法が明快
- ツールを書くのに向いている
- 書くためのツールが揃っている
- 凝ったことができないのが逆に良い
- 可読性の高さ
- 機能の少なさとコア機能で勝負