インフラエンジニアがGo言語でオペレーションツールを書くことについて


 id:y_uuki 
Go 1.6 Release PartyWriting Tools in Go For Ops Engineers

GoGo

最近作ったGo言語のツールの紹介

以下の4つのツールを作りました。いずれもはてなでのproduction利用を想定したものになります。

mkr



mkrMackerelAPICLI

MackerelAPImkrAPIjqMackerel

便使mackerel-agentmackerel-agentAPImkrhostId

mkr



Grabeni



GrabeniEC2ENICLI

ENIEC2APIENIIPVIPENI/

GrabeniENIgrabattachdetachAWS API

KeepalivedMHAHertbeatHA使

Droot

DrootはDockerでつくったイメージをchroot jail環境として実行するものです。結構複雑な背景があるので、詳しくは下記のエントリを読んでください。ひとことで言うと、Dockerの本番運用を考えるのに疲れて、chrootに行き着きました。


gokc



gokcKeepalived
Keepalived
Go

gokcinitreloadgokcfailreload使

gokc



インフラエンジニアがGoを利用することのメリット




GoGo

GoGo

1. サーバへの配布が簡単


GoGocgoOS

5

2. サーバ上で高速開発できる


GoOS

OSXLinuxscp
GOOS=linux GOARCH=amd64 go build 
scp ./binary hostname:/path/to/binary
ssh hostname /path/to/binary

3. 最終的に成果物をはやく作れる


Go





Go


Goroutine

UNIX使 io.Pipe()  Goroutine

drootio.Pipe() 使DockerS3












defer 

tmpdefer使


発表資料


あとがき

Perl以外のプログラミング言語系のコミュニティイベントでおそらく初めて発表しました。
今年はコードを書くぞと決めているので、今後はGo言語方面にも積極的にアウトプットしていきたいと思います。

はてなでは、Goでアプリケーションを書きたい人や、ツールを作りたい人を募集しています。