Agile2013の歩き方

第7回Agile2013 最終日レポート「Why Everyone Needs DevOps」

8月9日(金⁠⁠、いよいよこの日がAgile2013の最終日です。1つのセッションの後に行われるキーノートが閉会式になります。

生産性を上げる働き方とは

9:00~10:15のセッションは、申請で落選したものの、参加者からの投票によって選ばれ復活したセッションです。私の発表に来ていただいたリンダ・ライジング(Linda Rising)さんの「Problem-Solving and Decision-Making in Software Development」に参加することに決めました。

画像

話の始まりは、ご自身の経歴についてのお話です。

彼女はもう71才ですが、コンピュータサイエンスの博士号をもっています。もちろん、50年前の大学にはコンピュータサイエンスという学科はありませんでした。実は大学生のときは数学を専攻していました。しかし数学を専攻されたご主人から、数学では仕事がないと言われて断念しました。それから年月が過ぎましたが、再び大学に戻ることを決めて、50歳でコンピュータサイエンスの博士号を取ることができました。やる気があれば歳とは関係なく博士号を取得することができるのです。

次にDan Ariely氏の本『Predictably Irrational』を取り出しました。どうやら本をいただいたが、すでに持っているので差し上げたいと言ったようです。本を足元に置いたときに、私にはすぐに意味がわかりませんでしたが、他の参加者が素早く本を取りに行きました。

ご存じかもしれませんが、Dan Ariely氏とは、ダニエル・ピンク(Daniel H. Pink)氏のモチベーションに関する講演で出てくる結果の研究を行った人です。かなりおもしろい研究結果が出ています。私は幸い帰国時のシカゴ空港内の本屋さんで3 for 2セール(2冊買ったら3冊目は無料)で買うことができました。

講演に戻ります。次に、人の生産性についての話をされました。会場の人に、トイレに行くのも含めて机から離れずに一番長く座っている時間を尋ねました。他の講演では13時間も座り続けた、と言った女性がいたそうです。長く座っている人の多くは言い訳をするそうです。脳は変化を感知するようにできているので、1つのことに長く集中すると生産性が下がるとのことです。

そして、座っているよりも立って仕事をした方が生産性が上がるという話をされました。ただ立っているだけではなく、トレッドミル(ウォーキングマシン)を使って歩きながらパソコンを使える机を販売している会社があります。実際に歩きながらパソコンを操作しているビデオを見せられました。ただ「これを実際に採用する会社は少ないでしょう」とも言っていました。

画像

次に睡眠時間のことに話が移りました。アインシュタインは毎日10時間の睡眠を取っていたそうです。研究の結果、毎日7時間眠ることが推奨されています。残念なことに、参加者の中で睡眠時間が一番短いのは私でした。前夜もパーティの後にこの記事の原稿を書くために朝3時まで起き、翌朝も習慣で4時に起きてしまい、体力維持のためにフィットネスセンターで5マイル走りました。この講演の参加前にもコーヒー3杯とコーラ3本を飲んでいます。リンダさんに「可哀想。慰めてあげるから来なさい」と言われてしまいました。

昼寝も良い効果があります。写真のように頭から被る枕があると回りを気にせず眠ることができお勧めだそうです(自分は持っていません⁠⁠。また、学んだ後に10分間散歩をすると記憶に残りやすいとのことです。

画像

また、決断を下すまでに気を散らした方が良い決断ができるという話もありました。決断はエネルギーを使うので、疲れていたりお腹が空いていると早く決断を下そうとしてしまい、最善の決断がなされない場合があるからです。同様に、食事をしながら交渉した方が良い結果が得られるそうです。さらに、これはジョハンナ ロスマン氏の講演にもありましたが、マルチタスク(複数の作業を同時に行う)をすると作業効率が下がります。

このほかのTipsとして、次のような指摘がありました。

  • 問題の種類に問わず、手で書いて問題を解いた方が解けやすくなる
  • 紙を使って勉強した人の方が、パソコンを使って勉強した人よりも多くのことを覚える
  • 紙の本の方が電子書籍を読むよりも内容を覚えられる
  • 男性のチームに女性が入ると生産性が良くなる
  • 犬や動物を職場に連れてくるとチームの協調性が良くなる

最後に皆で立ち上がって、Amy Cuddy教授が推奨するパワーポーズをしました。紹介されたTEDのビデオは自分に自信をもたせるための話です。はじめからできないと思うのではなく、実際にできるようになるまで「自分はできる」と信じることです。私も自分の発表を行う前にこのビデオを見ていたら良かったと思いました。

閉会キーノート─DevOpsが開く開発と運用の新たな関係

10:45~12:00は閉会式を兼ねてのキーノートです。閉会式に先立ち、Agile2013の会長を務めたKent McDonald氏からの挨拶がありました。来年のAgile2014はフロリダ州オーランドのGaylord Palms Resortで開催され、再来年はワシントンD.C.で開催される予定です。

今年のキーノートはTripwireの開発者でTripwire社の共同設立者であるGene Kim氏が講演を行いました。講演のタイトルは「Why Everyone Needs DevOps Now: A Fourteen Year Study Of High Performing IT Organizations」です。

画像

Kim氏は今はTripwire社を退職して、新しい会社を設立する準備をしているそうです。その前に『The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win』という本を出しました。この本はJurgen Appelo氏によるTop 100 Agile Books (Edition 2013)で1位になっています。IT版の『The Goal』を目指して書かれたそうです。内容も説得力が高いストーリー形式にしたと言っていました。

最初の170ページは無料でダウンロードできるとのことなのですが、ネットを探しても見つかりませんでした(Twitterで指定されたいるリンクを開くとエラーになりました⁠⁠。ただAmazonでKindle版が881円で販売されているので、無料を探さず買っても良いと思います。

Gene Kim氏の話を聞くとすぐわかるのですが、彼はかなりの早口です。これまでITの生産性について調べており、生産性が高い人の共通点や、生産性が普通の人と低い人との違いについて語りました。一般的に生産性がよいのは①軍、②化学エンジニア、③会計検査官とのことです。

いまや全ての企業はIT企業と言えます。予算化されたプロジェクトのうち95%はITに関係している部分があり、予算の50%はITに関係しています。

ここで、5月のAmazonのデプロイ統計(本番環境への機能追加/変更)を例にとって解説しました。

Amazonの5月における月間デプロイ集計
平日の平均デプロイ間隔11.6秒
1時間での最大デプロイ数1,079デプロイ
同時にデプロイされる平均ホスト数10,000台
同時にデプロイされる最大ホスト数30,000台

こうした状況から、以前はDevOpsなどは不要だと思われていましたが、今ではすべての人がDevOpsが必要だと思うようになった、と語ります。

生産性が高いDevOpsチームは、よりアジャイルでもあります。通常のチームより30倍もデプロイし、サイクルは8,000倍も速いです。品質も2倍良くて、MTTRも12倍速く行います。

運用は壊れやすいものを扱う仕事です。開発プロジェクトが終わるごとにシステムはより複雑になり、壊れやすくなります。VelocityカンファレンスでFlickrのJohn Allspan氏とYahooのPaul Hammond氏が1日に10デプロイしたと発表しました。これがDevOpsの始まりとも言えます。開発者のように考えられるシステム運用者、システム運用者のように考えられる開発者の誕生です。

開発チームと運用チームの関係には次の3種類があります。

1.フロー

開発チームが開発した後に運用へ引き渡します。生産性を上げるためには開発チームから運用チームへのスループットを最大にします。不良品を運用に引き渡さないようにします。

開発環境を本番環境と同じにします。本番環境での信頼性を上がるために、先ず新しい機能を無効な状態で本番環境にデプロイします。様子を見て問題がなければ機能を有効にします。

2.フィードバック

開発した後に運用へ引き渡しますが、問題がある場合は開発へ連絡します。Struts2を共同開発したPatrick Lightbody氏(現BrowserMob社のCEO)によると、朝2時に開発者を起こしてバッグを修正させることで、バグ修正を早めることができたとのことです。

3.継続的試作と学習

機能別に分けて、継続的に機能の追加/更新を行います。毎日、試作を行うようにするで、学ぶことを習慣化させます。運動を1週間に1回、長時間行うよりも、毎日少しずつ運動した方がよいのと同じです。システムの信頼性を上げるために、問題が起きる前に自分らで定期的にプロセスを停止して回復作業も行います。

最後に─Agile2013に参加して

Agile2013の多くのセッションは初心者でも理解できる内容です。反対に物足りないと感じることもあります。最新技術の交流というよりも、楽しい環境で基礎の勉強をするような感じでした。初めて参加された人と話しても同じような感想でした。

しかし、世界から集まった多くの人と話すことができるので、その意味ではいろいろと勉強になります。たとえばカナダからの参加者が多かったのですが、これは米国から開発の仕事をかなり受けているからのようです。

DevOpsのことはわかっていると思っていましたが、海外での実例を聞くと、理解できていないことに気がつきました。オープンソースプロジェクトの中に、これまでのソース提供のみからAPI提供へ移るというプロジェクトが多くありました。その理由がわかった気がします。現状のオープンソースは開発チームが主ですが、DevOpsにより実際に運用してサービスを提供するための時間/コストが下がってきています。また、バグフィクスも数分~数秒単位で行えるようになってきています。3ヵ月や6ヵ月ごとに新リリースを行うようなオープンソースプロジェクトはもう時代遅れなりつつあるのかもしれません。

ユーザはプロダクト/サービスを必要としています。プロジェクトを成功させることではありません。ソフトウェアの価値はユーザが使えるようになった時点から始まります。コードを書き終わったり、テストが終わった時点ではりません。どのようにしたら短時間でユーザに使ってもらえるかが課題です。このことは複数のセッションで言われました。

継続的に数秒で機能追加/更新がなされ、かつ品質も従来よりも高いシステムを開発/運用するのがDevOps/アジャイルです。そのためにはツールだけではなく、モチベーションが高いチームが必要だと感じました。⁠ソフトウェア工場」という概念はもうまったく無くなっているように思えました。

おすすめ記事

記事・ニュース一覧