読者です 読者をやめる 読者になる 読者になる

酩酊エンジニアリング

InputのみからOutputへ向けて思考してます。優しいまさかりは受け付けてます

【de:code2016】黒船襲来で夜明けはあるのか?

書こう書こうと思いつつ早9ヶ月! 今度こそ何かアウトプットをということで書き続けます(月1ぐらい)

MS主催の技術イベントde:codeに参加してきました。 de:code (decode) 2016 | 日本マイクロソフトの開発者/アーキテクト/IT Pro 向けイベント - Microsoft Events & Seminars

MS主催というだけのことはあって、当然MS製品が中心ですがそれだけではない部分も多かった。 特に「DevOpsの黒船がやってきた!」というセッションを中心にDevOps周りのセッションは本当に良いセッションでした。

詳細を知りたい方は、MSエバンジェリストメソッド屋のブログや#decode16あたりを見ると良いと思う simplearchitect.hatenablog.com (一次ソースを見るのは大切)

セッションとは別に、印象を受けたのは昨今テクノロジーのTop企業の注力点が 技術の囲い込みから、Open化に寄っているという部分。(ここには色々な考えがあると思う) 結局はクローズドな技術だけでは世の中とのギャップが生まれるので、 要となるところは公開しコラボレーションが重要となるし、 1人ですべてやるのではなく得意な人が集まり、よりよいものを作り出すという流れになっているということ。

特にワンクリックで世界中に自動的に公開されるクラウドができたりと、 劇的な変化が起きてる今だからこそこの流れは強いのだと思う。(これはapplegoogleも同じなのだろう)


さて、話はかわりDevOpsについて見てきた事と感じたことを書いておく

まずはじめに伝えないといけないのは、 「日本のソフトウェア開発は鎖国状態である」

ちょんまげという、ウォータフォールで揃え エクセル方眼紙という刀を振るい 着物の代わりにスーツを着る

これは本当に感じる。 何気ない作業の中でも時代の変化を受け入れられず、 丁寧なつもりで全く内容のないことをしていることをよく見かける。 たぶん人に感じてるなら、私もそんなことをしているのだと思う。

その原因が何かはちゃんと考えたことがないが、 1つはサービスを作るのに、関係者が多すぎるためだろう。 それは、Amazonの2pizzaチームでもないし、MSのアジャイル導入で示した8-10名ぐらいのチームでもないということ。

このスモールチームで行動し、企画からリリースまでのサイクルを回せないデメリットはなにか。 人が増えれば、決めごとに調整が必要になったりと時間がかかりサイクルのボトルネックが出てくる。 複数の部署やチームをまたいで1つのプロダクトを作成するとなると、チーム間のコミュニケーションや調整にボトルネックが発生する。 などなど、少し考えても色々出てくる。

結局最適なサイズでサービスを提供し、継続的に良くしていくのに適した人数が8人(互いの状態が把握できる)なのだろう


サービスを届けることを考えるとどうだろうか。 サービスは世の中に与える変化であり、その変化は事前に仮設を立て創りだしたプロダクトの結果である。

つまり、仮説と結果があるなら検証しないといけない! この検証なしにはサービスは作れないのは今までと何ら変わってない。

そこに加えて今起きてる流れは何か? クラウド化によりインフラというコントロールが難しくスケールなどに時間がかかるものが抽象化された。 自動化環境が増えたことで、開発サイクルが早くなっている。

つまり、仮説と検証のサイクルを早く回すことが可能となり、それが求められる世界。 それがDevOpsなのだろう。

言うなれば、「正しく計測し、試行錯誤と変化を繰り返す世界」

何となく思いつきの施策を立てて、リリースするなんて企画は不要となるし 技術変化を受け入れ対応できないエンジニアも不要となるだろう

そんなことを感じ取った。


これらを実現するツールとして黒船が襲来してきた! というのが黒船というセッションだった

何が黒船か?

HashiCorp, Jenkins, Chef, Mesosphereというそれぞれの特性が開発サイクルの高速化に繋がると言いたいのだろう。

個人として言えば、どのツールがベストなのかは別にして インフラのコード化であったり、自動化は必須条件(十分条件ではない)になっていると感じてるので ここができてない所にいたら1年ぐらいで置いてきぼりとなり、使えなくなるのだと思う。。。

この黒船襲来にどう対応するのか、今後のエンジニアとしての活動に影響するものとなるのか反芻しておきたい。。。


その他気になったキーワード

  • 「Software driven as Future」
  • 「Our industry does not respect tradition - it only respect innovation」
  • 「Conversations as a platform」

最後に何となく書いておく。

「What is DevOps for you ?」 こんな質問があったらなんと答えるだろうか。 きっと私は「効率的に試行錯誤を回せる環境と文化」と答える

「can you make DevOps culture?」 たぶん、1人では難しい。でもやるために変化を取り入れていく自信はあるし、 変化を楽しんでいく。 そう答えると思う

忘れていた! これからDevOpsを日本で取り組む方へ! テンション上げていかないと辛いですよw

【DevOps】DevOpsハッカソンはハンズオンだった

DevOpsハッカソン

MS主催のDevOpsハッカソンへ参加した。
DevOps Hackathon (English - 通訳あり)

まずはじめに感じたのは、この空間で濃密な2日間はなかなか味わえない環境だと思う
開催していただいた、牛尾さん、Davidさんに感謝します

だいたいのまとめ

ファシリテーターなど

@dtzar
@sandayuu

参加人数:30名

急いでる人は、ここと #devopsjp あたりを見ると良いと思います。

  • DevOpsプリンスの登場
  • DevOpsの文脈を再確認(資料良かった!)
  • ノリノリの英語発表
  • Azureを使ったデプロイチェーンのデモ(infrastructure as code的なの)
  • アイディア発表(わりと英語)
  • AzureとVSOのハンズオン(ここ本質的なのではない)
  • 日本人率80%ぐらいだが、全体発表の公用語は英語(同時翻訳わかりやすい!)
  • Azureを初めて触ってるがために、ほとんどハンズオン状態で終わってしまった
  • AzureとVSOを繋げることで、だいたい今やりたいであろう開発フローは実現できそう

サンプルコード
VSO
新Azure Manager
旧Azure Maneger

このまとめ書くのに調べていて気がついたけど

大元の募集要項があった。: blogs.msdn.com

なぜ参加したのか

きっかけはこんなところ

  • 最近文脈として、DevOpsに興味があること
  • ここ1年ぐらいの業務などではUTだったりTFDに近いことができてきている(TDDではない)
  • 社内のシステムは知ってるけど、世の中はあまり知らない(井の中の蛙
  • 面白いイベントあるよと唆された

参加して得たいもの

  • 世の中の文脈としてDevOpsがどんな認知なのだろうか
  • 自分が思うDevOpsと何が違うのか
  • そもそも、DevOpsハッカソンとか、よくわからないモノをどうやるのか
  • 知識のインプットだけではなくアウトプットしきたい

だいたい、この辺が参加したきっかけと興味関心
能力的にはWebのバックエンドAPI作っているゆるふわエンジニアだったりします


全体のながれ

day1

  • DevOpsの説明
  • VSO & Azureでのデプロイチェーン全般の紹介
  • アイディア出し&チームビルディング
  • ハッカソン開始(ほぼAzure & VSOと戯れる)

day2

  • アイスブレイク
  • タスクボード作ってみる(状況共有ツールの紹介 この辺がDevOps的なところ)
  • ハッカソン後半戦
  • 発表

ハッカソン自体は、12時〜18時 + 9時〜15時なので、だいたい12時間ぐらいのもの

DevOpsとは何か

個人の理解として、DevOpsはツールと文化のコラボレーションだ
カンバンや、CIツールや、Deployチェーンがあることは大切なことだが
それがあるだけでは意味がない

これらを活用するチームメンバーである企画・開発・運用などが、
ユーザーにより良いものを届けたいという共通のVisionを持ち、
互いを尊重しながら推し進める事も重要な要素となる
互いを理解せずに進めていては、遠回りをしてしまいうまくいかないのだ
セクショナリズムをなくし、コラボレーションを大切にする)


今回参加してみて感じた事は何か

とにかく2日間AzureとVSOと戯れ続けて終わってしまった。。。
チームの皆さんには何も力になれてない気がして申し訳なかったです
成果物自体も、ハッカソン自体のものとしてはなく
初めて触ったwindowsサーバーとAzureとVSOについて、理解が深まったのと
このハッカソンが記念すべき第一回目だからこそ経験できる
産みの苦しみを感じられました

また、コミュニケーションの難しさを改めて感じた
特に分野の違う人々が集まり、DevOpsという同じ土俵で話をしても
その堅牢さなどは変わってくると感じた

ここの認識を揃えることに注力できなかったかもなと思う

そのほか振り返ってみると

よかった事

  • Azure / VSOと普段触れない世界に触れられた事
    これは一つ触ってみたいと思っていたので良かった
  • 様々な人のDevOpsの考えを聞けた事
  • それらの人の中で広めようと思っている方は、みんな同様に産みの苦しみを感じてる事を体感できた
  • 座学ではなく手を動かし実践できたこと

個人的には癖はあるのだろうと思うが、AzureとVSOがコラボすることで
タスク管理や実装コードの管理、またCI/CDという流れ全般が活用できるのはすごい良かった
これもっと事前に慣れていれば、色々できたのかもしれない
(とはいえ、ゆるふわエンジニアなので出来ないと思う)

それと、最近知識ばかりでちゃんと手を動かしてないなと思っている自分にはとても良い機会でした
実際知識としてDevOpsを知っていても体験してみないと
初期構築の難しさやCIするための苦労などって分からないと思う

できる人には当たり前でも、やっていない人には遥か彼方の地平線のようなものは沢山あるってこと

悪かった事

  • あまりにも未知のツールが多かった事
  • ツールをいじるのに楽しんでしまった事
  • チームで共通認識あわせるのに時間がかかってしまった事

特に失敗したなと思ったのは、
最初の時点でチームの能力の把握とミニマムなトライを定義しなかったこと
これって難しいんだけど、おそらく初めて会う人同士でチームビルディングなら
絶対に必須の事なのだと思う。
そうすることで、皆の得意分野がみえて、アウトプットが出しやすくなる

エンジニアって不幸なことに、結構一度やったことをやらないし(そうでもないのか?)
人は初めてのものに触れるとき、悩んでしまって動かないもの

そうすると、チームとして誰も触ったことがなくても
その中に知識がありそうな人にすがり動かなくなるのだと思う

なんとなく、誰かがやってくれそうという思いのデットロックがかかるのだろうか

次回参加するならどうする

1つ目 良かったことはさらに伸ばしたい

普段とは違うツールに触れ考え動かしてみるという機会を作るのは中々難しい
例えば、jenkinsを普段使っていてVSO使ったらどうなるのかなんてのは、
やってみないとわからないしどちらが良いかの比較もできない

こういう機会は今後も作っていきたいし
また、DevOpsというプラクティスは範囲が広く全てを短い期間で感じることができる
環境は本当に少ないと思っている(もしこれが普段から体験できてるなら、すごい恵まれた環境だ) そういうのと戯れられるというのも良いinputになると思う

2つ目 悪かったことは直したい

ツールにこだわってしまったり、壮大な夢を見てしまったり
あまりDevOps的な展開を行うことができなかったなと思う
例えば、誰か環境整備が得意な人がセットアップツールを作り展開するとか
早めにデプロイチェーンを動かして、失敗を早い段階で検知する環境を作っておくとか
ミニマムに動く状態を整備するとか

デプロイ自体をテスト駆動的に作る(始めは動かないデプロイチェーンを作るが、徐々に動いていくみたいな)
なんか、こうもっと開発初期からデプロイまでの流れ全体を最適化するような方法を考えられればよかったなと

特に、機械系や医療系やフリーやwebなど様々な分野の人が集まれば考え方も違うわけだし
その辺のバランスを取れれば良かったのだろう

また、運営の皆さまへ
ある程度事前にサンプルコードや流れを告知しておいていただけると助かりました
(してあったけど、くみ取れてなかったです)

せっかくAzureあるので、とりあえずVM作ればOKみたいな環境あると
とっつきやすいのかもと思っています

どうぞよろしくお願いします

最後に

セミナーなんかも一種のプロダクトなので、昨日今日のデプロイ結果を計測して
次回サービスに反映されることを期待してます

また、DevOps、CI/CD、ユニットテストこの辺の文脈に興味がある人
触れてみたい人は是非参加してみるといいと思います!

2日間で質の良いInputが得られると思います