GitHub社内のDevOpsを支えるツール「Boxen」と「Hubot」(前編)~DevOps Day Tokyo 2013

2013年10月2日

世界中でDevOpsのイベントとして行われている「DevOps Days」の東京版「DevOps Day Tokyo 2013」が9月28日に開催、海外から来日した多くのゲストスピーカーによるセッションが行われました。

GitHubのJohn Britton氏は「Ops for Everyone」(みんなの運用)という題で、GitHub社内で開発から運用までをデベロッパー自身が行うためのツール、BoxenとHubotの紹介と社内の利用例を解説しています。

Ops for Everyone

John Britton氏。

GitHubでエンジニアと教育の橋渡しをしています。

fig

私は以前、運用というのはあごひげを生やしたようなオタクがやるものだと思っていました。でもそれは間違っていました。

fig

その話をする前に、弊社の理念をお話しましょう。弊社のプロジェクトは、つねに社の理念を念頭において進めています。

GitHubの4つの理念

理念の1つめは「Collaboration」です。孤軍奮闘するよりもチームワークを重んじます。これは運用にも同じことがいえるでしょう。

fig

次は「Automation」。つまり同じ仕事は二度とやってはならないと考えています。雑務を減らす、ということです。

fig

「Experimentation」、実験です。そのために環境が新しいことを試しやすいようになっているべきです。

fig

「Distribut-ation?」、分散型であれ、ということ。誰か一人、あるいは少数の人だけが分かっているよりも、チーム全体で運用がわかっていれば、人為的な単一障害点をなくすことができます。

fig

この4つの理念をどう実装していくのか。2つのオープンソースプロジェクトについて話しましょう。どちらもGitHubで開発したものです。

理念をツールで実装する

1つは「Boxen」。デベロッパーのマシンを管理するためのツール。GitHubには200人近くの従業員がいますが、みんなこれを使ってコンフィグしています。

fig

もう1つは「Hubot」。Hubotはロボットで、チャットルームにいていろんな操作をチャットで実行できます。

fig

Boxenで開発環境を自動構成

まずは「Boxen」から。その目的は雑務を減らすことで、Boxenのおかげで入社した人でもビルド作業がその日からできるようになります。

一般に多くの会社で開発環境を整えるのには手間がかかり、1週間くらいかかってもおかしくありません。こんな大きなコストが、Boxenを採用することで省略できます。

fig

GitHubに入社した私は、初日に新しいMacbookをもらいました。そしてまずXcodeのコマンドラインツールをインストールします。これはアップルの規約上、マニュアルでのインストールが必要です。

fig

次に、curlコマンドをコピペしてターミナルから実行します。bashのスクリプトがダウンロードされて実行され、続いてGitHubのユーザー名などを入力すると、あとは待つだけです。

fig

通信速度にもよりますが、全部をダウンロードするのに速くて1時間。終了するとこんな環境が入っています。これでWebアプリケーションをローカルマシンでテストできるようになります。

fig

次は、プロジェクトを選択します。例えばGitHubを選択するときはこのコマンドです。あとはコーディングに取りかかればいい。

fig

Mac版のPuppetみたいなもの

Boxenはどう動いているのか、GitHubの依存関係をどうやって知るのでしょう。そのために、まずProject Manifestファイルがあります。

fig

Boxenはこうした依存関係をもとに、GitHubのプロジェクトをクローンしてくれます。中身はPuppetです。

それからみんなテキストエディタなどの好みがありますし、開発ニーズも違うかもしれないので、それらを記述するPersonal manifestファイルもあります。

つまりこれはMac版のPuppetみたいなものなのです。

fig

≫後編に続きます。後編ではデプロイや運用を支えているチャットのロボット、Hubotについて。

DevOps Day Tokyo 2013

DevOps Day Tokyo 2012

あわせて読みたい

DevOps GitHub




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本