#devopsjp 1.5時間ペアプロスプリントを5回まわしてぐったり(ヽ´ω`)

MicrosoftのDevOpsハッカソンに行ってきました。面白かった。

優勝したー(∩´∀`)∩ワーイ

f:id:bufferings:20160124223808j:plain

ハッカソン

2日間のハッカソンでした。

1日目の前半が牛尾さんと小塚さんによる「DevOps 概要セッション」、それからチーム分けをしてハッカソン開始。5-7人ずつの5チームに分かれて2日目の昼過ぎまでに何かを作るって感じです。

作ったもの:ソリューション

僕らが作ったのは

「サービスの改善を素早く行っていけるように、ユーザーの入力ミスなどの操作ログをリアルタイムに集めて、グラフとして見えるようにしよう!」

というものです。

作ったもの:システム

システムは、こんな感じ。

f:id:bufferings:20160124224011p:plain

  • 1. Spring Boot + Spring MVC でウェブアプリが動いてて
  • 2. それはDockerコンテナ上で動いてて
  • 3. それはAzureのVM上で動いてて
  • 4. それはtutumでデプロイされてて
  • 5. アプリはユーザーの操作ログをAzure Storage Tableに保存してて
  • 6. そのユーザーの操作ログをMicrosoft Power BIでグラフ化して見ることができる

そんなのを作りました。

作ったもの:デプロイまでのフロー

デプロイまでのフローはこんな感じ。

f:id:bufferings:20160124224953p:plain

  • 1. ソースを書いて
  • 2. Visual Studio Team ServicesのGitにpushしたら
  • 3. Azure上のJenkinsさんが
    • 3-1. Mavenでpackage(テスト&ビルド)
    • 3-2. MavenでDocker Imageのビルド
    • 3-3. Docker ImageをDocker Hubにpush
  • 4. そしたらtutumさんが、Docker HubのImageを取ってくる
  • 5. で、Stage環境の(と僕らが呼んでた)Azureにデプロイ
    • Stage環境で確認して問題なければ、Jenkinsからそのアプリの本番化をする

という流れでした。

10 deploys / hour

「1日に10回デプロイできるようになればDevOpsやってるって言っていいよ」ってのが最初のDevOps概要セッションであったんですけど、「これ5分で本番リリースできるし、1時間に10回リリースできるー(∩´∀`)∩」とか言って盛り上がってました。

進め方

偶然 @e_yamane さんと @shinsukeoda さんと同じチームになったので、色々楽でした。

  • 「たぶん色々やろうとしても終わらないよね?」
  • 「じゃ、ストーリーマッピングしよっか」
  • 「折角知らない人とチーム組むんだから、ペア開発にしよう」
  • 「タイムボックスは?1時間かな。」
  • 「その机、付箋貼るのに使おうか」

f:id:bufferings:20160124230009j:plain

6人チームだったので、2人ずつ3組に分かれて、

  • おださんは「Docker周りやってみたいからtutumのところやろうかなー」
  • やまねさんは「VSTS(Visual Studio Team Services)使ってみたいな」てことでVSTS周りの設定とCI環境の構築を
  • 僕は「じゃ、SpringBootでWebアプリ作ってMavenでDockerImageビルドしてDockerHubにpushできるようにするね」

って感じで進めました。

みんなが「欲張りたいけど、まずは動くものを!」「それができたら、次の一歩を進めよう!」みたいにやってたので、1日目の終わりにはぎこちないながらも「デモはできるかなー」って感じになってました。

それにしても、予想外のことが起こりまくるのがハッカソンですね。「そこかー!!」みたいなのでハマって面白かったです。

良いチームだった

やまねさんペアが、VSTSとCI周りを全部見てくれて、VSTSは権限周りがややこしそうだったり、カナリアリリースのバグに引っかかったりしてかなり大変そうでした。んで、結局VSTSのCIツールだと難しそうって分かってから、JenkinsをAzure上に立ててビルドするようにサクッと方向転換してて、さすがだなーって思いました。てか、やまねさんさすがペアプロ上手だなぁって思いながら見てました。

おださんペアは、tutum、DockerHub、Azureへのデプロイ、PowerBIによるデータのグラフ化とか色々やってくれて。MSの製品に色々詳しくて、すごいなーって思いながら見てました。ログはTableStorageに保存しようか?SDKあるよ、とか。あと、全体を見てくれてたのもこのペアかな。「そろそろプレゼンの準備しようかー」とか。

僕らは、まずHelloWorld作って、tutum経由で動くことを確認したら、ログをTableStorageに登録するようにして、んで、デモのためにApplication InsightsっていうMSのサービスから負荷試験用のツールで適当にリクエストを生成して、ログを生成しました。その後は、SpringのWebIntegrationTestでも書こうかー。ってJUnit実行したら埋め込みWebサーバーを起動して、そこに対してリクエストを投げて返ってくるレスポンスをテストする、ってのを書いたりしてました。

だいたい、誰かが「これは、ちょっと欲を出してこういう風に実現させたいよね。エンジニアとしては!!」って進めようとしたら別の誰かが「まずはミニマムで行きましょう!」って言ってて面白かった。

雰囲気

お菓子があったり、フリーコーヒーだったり、朝ごはんも昼ごはんもでたり、Tシャツもらったり、楽しかったー。寺田さんや牛尾さんが全力サポートしてくれたりで、贅沢だし。どのチームの発表も面白かったなー。

まとめ

てことで、個人的にはDevOpsというものがどういうものか、というのを考えるとても良いきっかけになったし、

bufferings.hatenablog.com

技術的にも色々と勉強になったし、MSのサービスにも触れることができて、一番重い最初の一歩目を踏み出すことができて良かったなぁって思います。参加して良かった。みなさんありがとうございました!

ただ、普段だったら1ヶ月くらいかけて勉強する知識を2日間で走り抜けたので、ぐったり疲れた。しばらくハッカソンはいいかなw