JJUG CCC 2015 Fall に参加したと思ったら、DevOps ハッカソンに参加してチームが優勝していました #jjug_ccc #devopsjp

このエントリーをはてなブックマークに追加

な… 何を言っているのか わからねーと思うが おれも 何をされたのか わからなかった…
(以下略
というわけでこんばんは、munepom ( @__munepom__ ) です。

Java ラーにとって、JJUG CCC は楽しみなイベントの1つ。
私、シャノンでは Perl で開発をやっていますが、前職では Java をがっつり使っていましたので、Java ラーです。
そんな JJUG CCC 2015 Fall に参加申し込みをしたら、Microsoft さんが
開発者、インフラ技術者のための DevOps ハッカソン~ DevOps のすべてをエバンジェリストと体験し学べる 2 日間~
なるイベントを開催するというメールが来たので、セッション聞けなくなるけど DevOps に興味があるから参加してみよー!
ということで、2015年11月28日、29日と参加してきました。

今回のハッカソンでは、DevOps とは
『開発者とインフラ技術者が協力し、ソフトウエアライフサイクルやビジネス価値の創出を改善する活動』
という定義がなされていたので、なるほど分かりやすい!と思いました。
(課題として、誰も明確な定義を持っていない、と現状があるようですが。。。)

というわけで、講義の後は4チームに分かれてハッカソン!でした。

私が所属したチームの目標は、『デプロイ承認システム』を作ってみることでした。​
使える時間は、初日 3.5 時間、2日目 5 時間、という厳しい戦いです。
これは、ストーリー固めないと、後で挫折した際に破綻するなー。と思い、
まずはチームでストーリーを作る作業を (エバンジェリスト寺田さんに心配されるくらいに) やりました。
(シャノンではスクラムで開発を行っていますので、その経験がめっちゃ役に立ちました!)

/* ちなみに、ストーリーはこんな感じでしたw
部下「新バージョンのアプリできました」​
上司「どうやってリリースするんだ?後何使ってるんだ?」​
部下「Chefで自動デプロイします。レシピはこの通りです」​
上司「わからん」​
部下「」​
こんな悲劇が2度と起こらないよう、私たちのチームは誰でもわかるドキュメントを自動生成するシステムを考えました。
*/

ストーリーは決まり、メンバーの使ってみたいツールも選定して、最終的な構成は下記のようなイメージとなりました。

さあ、あとはゴールに向かって進むだけ!のはずでしたが。。。まあいろいろありましたねw

初日は、初めての Visual Studio Team Services (VSTS) 環境の勝手が分からず、それを理解するのに時間がかかりました。特に認証と認可の部分です。
幸い、簡単な Hello World Web アプリ自体は Gradle でサクっと作成していただけたのですが、
git clone で共同開発をしようとした際、1時間近くロスしてしまいました。
(ソースを外部に持ち出すなどするためのパスワードは、HTTPS スキームでも Azure ログインパスワードではなく、API キーなんですね)
とりあえず、Azure 上で VM の立ち上げ、Jenkins インストールまでは無事完了し、VSTS の Git も無事使えるようになりました。

2日目は、もくもくごにょごにょわいわい作業デー!

Dev サイドは、git で開発を回すことができるようになったので、あとは Jenkins Hook を利用するだけや!と思いきや。。。
プロジェクトを Team Foundation Server で作成していたため、その Git リポジトリへの git push には反応しない状態となっていそうなことが分かり、妥協案で解決するまでに1時間ほど要しましたw
https://wiki.jenkins-ci.org/display/JENKINS/Team+Foundation+Server+Plugin も使ってはみたのですが、症状は改善せず。
結局、今回は Jenkins 先生から polling という妥協案でいっとこ!ということにしました。
(Jenkins の代わりとして利用できそうな VSO Agent 作成は、いつか挑戦してみたいですね)

Ops サイドは、とりあえず手動で Dockerfile から Docker image 作成に成功したとのことでグッド!だったのですが、
アプリが起動しない問題で大ハマりする展開に。。。この辺りは、自分にもっと知識があれば、と歯がゆい思いでした。
その間、Docker image をどのようにデプロイするか?を調査しましたが、VS だと、JSON ベースの設定ファイルでごにょごにょできそうなんですね。勉強になりました。
結局、Jenkins でビルド完了後にフックして、Docker image 作成用コマンドを実行する方式となりましたが、ここでもユーザパーミッション問題でハマり。。。タイムアップとなりました。

最後は発表ターイム!

今回のチーム目標を決定する付箋を出していただけた方と、Ops としての熱い想いを持った方にプレゼンを行っていただき、
なんとチーム優勝という結果を頂くことができました。
2日間という超短い期間でしたが、楽しく作業できるチームメンバーに恵まれて良かったです。感謝です!

というわけで、1人ふりかえりです。

Keep

  • ストーリー作成を行っておいたので、作業目的がわかりやすかった。
  • チーム全体の作業感をできるだけ見ようという意識で作業できた。(職場のスクラムマスターを見習ってみた)
  • VSTS の Backlog で、ある程度のタスクやメモが見られるようにしておいたのが良かった。
  • Gradle でサクっとアプリ作れるスキルは重要。
  • あめちゃん重要、おやつありがとうございます。
  • 2日目の朝食サンドイッチ、昼食お弁当ありがとうございます。
Problem
  • 分からなければ、すぐ聞く!!!
  • 結局、上司説得用のドキュメントはできていない!
  • Azure (VSTS) 上での承認プロセス作成ができていない。
  • Azure と VSTS の予習をしておくと、もっと楽しめたかもしれない!
  • Mac 使いは、Parallels で Windows 環境用意しておけば良かった。。。ローカルで Visual Studio を使えるのが便利そうですね。
Try
  • 自動化は、最初がほんとにしんどい。けど、できたら楽になるから DevOps がんばろ!
  • もっと Docker を使いこなせるようになりたい!
  • Azule CLI を使いこなせると、もう少し作業の幅が広がるかな?
  • VSTS をもっと使いこなせると、その中で Build などの一連の作業を完結できそうなので、やってみたい。

先日の楽天テクノロジーカンファレンスでも DevOps に関する講演を聞きましたが、
いまいちぼやけたバズワードだねぇ、というネガティブイメージを持っていました。
今回のハッカソンに参加して、
Dev も Ops もコツコツと協力して自動化に取り組むことが DevOps の姿の1つかな?
と思いました。
ネガティブイメージ払拭されました!

enjoy!

次の記事
« Prev Post
前の記事
Next Post »
Related Posts Plugin for WordPress, Blogger...