「勉強会に行ってみた!」第18回「HashiCode#2 HashiCorp道場番外編 ~HashiConf 2015報告会~」
event

「勉強会に行ってみた!」
第18回「HashiCode#2 HashiCorp道場番外編 ~HashiConf 2015報告会~

2015.11.12

ent128_img01.jpg

今回は HashiConf2015の報告会です。HashiConf というのは、Vagrant や Consul といったサーバー環境を構成するためのツールを作っている HashiCorp が行っているカンファレンスです。最新動向を含め、 HashiCorp のツールについて知っておきたいなと思って、行ってきました。

三土たつお

勉強会の主催はインプレスの「Think IT」。会場は東京の神保町の三井ビルにある「インプレス セミナールーム」でした。こんなところ。

ent128_img02.jpg

会場に入ると、受付には書籍が並んでいました。

ent128_img03.jpg

「DevOpsを支えるHashiCorpツール大全」。講師を努める前佛(ぜんぶつ)さんの新刊です。
見るとみんな買っています。これは勉強会の最後に撮った写真ですが、こんな感じです。

ent128_img04.jpg

みんなが本を持ってますよね。来場したほとんどの人が購入していました。すごいですね。
さて、勉強会が始まりました。

ent128_img05.jpg

講師は前佛さん。ありがたいことに、いきなりHashiConf2015の詳しい報告に行くのではなくて、そもそもHasiCorpってなんだっけというところから話を始めてくれました。

HashiCorpは2012年に設立された会社です。

ent128_img06.jpg

Vagrant、Packer、Consul など数々のツール群を作ってきました。その目的は「データセンター管理に革命をもたらすこと」でした。仮想技術を使った開発環境の構築から本番環境への適用まで、複数のサーバーやクラウド環境を使いこなすことが求められる時代になっています。その際の理想的なワークフローを考え、それを実現するためのツールがなければ作るというのがHashiCorpの考えなんだそうです。

ent128_img07.jpg

各ツールをそれぞれごく簡単に紹介すると、Vagrantは単体の仮想環境を簡単に構築・管理するためのもの、Packer は複数の仮想環境やクラウド環境に適用するためのマシンイメージを簡単に構成するためのもの、Consul は運用中の仮想環境群のサービス監視や自動復旧などを管理するためもの、となります。そしてそれらはすべてオープンソースとして公開され、コミュニティからのフィードバックを受けています。

クラウド環境の管理を自動化したいというニーズはあるものの、理想と現実の間にはギャップがある。それらを一挙に単一のツールで解決するのではなく、1つずつ着実に解決するツールを作り、それらを組み合わせていこうという考え方なんですね。

■事例紹介

さて、ではそれらのツールが実際にどう現場で使われているんでしょうか。ここからはいよいよ HashiConf2015での事例紹介のセッションの報告となりました。

ent128_img08.jpg

Electric Cloud という会社では、Wikiでの情報管理に課題があったそうです。チームのメンバーが増えてくると、うまく情報共有をする必要があります。そのときに Wiki を使うというのはよくあることで、この会社でもそうしていたんですが、だんだん問題が出てきたんだそうです。たとえば、Wikiに書かれている情報が最新の状況に追いついてない、足りてない、どこにあるか見つけにくい、ドキュメントの管理者が不明、といった問題です。もう「あるある」といいたくなる感じです。

そこで、この会社ではドキュメント管理のためになんと Vagrantを使うようにしました。

ent128_img09.jpg

ここでやろうとしていることは、「誰もが環境の構築や継続的開発ができるようにする」ための情報共有です。Vagrantfile には環境を構築するための手順がまさにコードして書かれていますので、それを読めば構築手順が明確に分かるし、情報共有にはぴったりだというわけですね。

余談ですが、Rubyの作者のまつもとゆきひろさんの言葉に「Rubyの仕様は、Rubyのソースコードに(バグを含めて)完全に書いてある」というのがあります。ドキュメントをコードと別に書くのは大変だからコードを直接読んでよ、という意味のことを冗談めかした言葉です。Vagrantfileは環境の構成に関するソースコードのようなものですから、Electric Cloud社の事例は「コードこそドキュメント」という考え方を体現したようで面白いなと思いました。

■最新動向

次は最新の動向です。HashiConf2015では、新しく2つのツールが紹介されました。NomadとOtto です。

ent128_img10.jpg

ちなみにカンファレンスの会場はこんなふうだったそうです。かっこいいですね。左下にいるのが創業者のMitchell Hashimoto さんです。

ent128_img11.jpg

Nomadは分散スケジューラーです。複数のサーバーを構成して、それらを組み合わせて効率的に処理を進めるためのツールです。既存だと Kubernetes とか Amazon ECS とかがありますが、それらに比べて「リソース管理とスケジュールを簡単に行える」「環境に依存せず、いろんなクラウド環境で使える」という特徴があります。

ent128_img12.jpg

OttoはVagrantの後継となるツールです。Vagrantを使った場合、環境の構築は Vagrant、マシンイメージの作成は Packer、クラウド環境へのデプロイは Terraform といったようにいくつかのツールを組み合わせて使うことになりますが、Otto だとそれらをすべて「otto infra」「otto build」「otto deploy」のように単一のottoコマンドを行うことができます。

■ディスカッション

報告会の後は、前佛さんを含めた4人と会場からの質問によるディスカッションとなりました。

ent128_img13.jpg

進行は、AWSでの構築と運用で著名な吉田真吾さん。

ent128_img14.jpg

パネルは写真左から @deeeetさん、@rrreeeyyy さん、そして前佛さんです。

吉田さんからは、HashiConf2015に行ってきたけどみんなも行くといいという話がありました。

ent128_img15.jpg

旅費は20万円弱。カンファレンスでの発表は「使ってみました」ぐらいのレベルのものも意外と多いので、次回は日本から参加してレベルを上げるような発表をしたらみんな喜ぶんじゃないかとのことでした。

@deeeet さんからは、Nomadがすごいという話。分散スケジューラーだと、たとえば Map Reduceがあるけどこれはリソースが余ったりする。Nomadはグローバルステートモデルという方法でリソース管理をしていて、たとえばすでに帯域をたくさん使っているホストの上ではウェブサーバーを立てない、みたいな管理までしてくれるんだそうです。

会場からは、「IoTをやっているとデバイスを大量に扱う必要がでてくるが、管理を自動化するいい方法がないか?」という質問がありました。それに対して前佛さんからは「自分だったらSurfかConsulを使うかもしれない。デバイスにエージェントを走らせれば障害検知もできる」という回答があり、他の方も概ね同じ回答でした。

■懇親会

ent128_img16.jpg

その後は懇親会となりました。会場の方の何人かに「HashiCorpツールを仕事で使ってますか?」という質問をしてみたところ「Terraformを使っている」「本番環境では使っていないが、Vagrantを使って開発環境を構築している」といった回答がありました。個人的な環境を含め普段から使っている方が多い印象でした。

■まとめ

HashiCorpの考え方がいいなと思いました。大事なのは理想のワークフローで、現実と理想にギャップがあるのであればそれを埋めるためのツールを作る。その際、理想を求めて巨大なツールを作るのではなく、着実に問題を1つずつ解決するツールを作るという現実的な進め方。そうやって作られたツールは使いやすくて、問題をちゃんと解決する。だからこそみんなに支持されてるんだろうなと思いました。


今回参加した勉強会:
「HashiCode#2 HashiCorp道場番外編 ~HashiConf 2015報告会~」

http://connpass.com/event/19980/

三土たつお。1976年生まれ。プログラマー、ライター。プログラマーとしてはふだんPHPを書いてます。
ライターとしてはニフティのデイリーポータルZとかで書いてます。
http://mitsuchi.net/

この記事はどうでしたか?

おすすめの記事

キャリアを考える

BACK TO TOP ∧

FOLLOW