DevOpsとは何か
座学部分となるセッションは「マイクロソフトDevOpsハッカソン」というタイトルで、DevOpsとは何か、DevOpsを実践していく上で何が必要なのかといったポイントを踏まえた形で進められました。
まずは概要的な部分、「DevOpsとは何か」という問い掛けからDavidの解説が始まります。DavidはDev(開発側)とOps(運用側)の関係性を示す図を掲げながら「開発側はアプリを作り、運用側に渡す。その際、運用がアプリを展開できるように引き継ぐが、トラブルは起こってしまいます。デプロイメントの部分で苦戦するケースはとても多く、よくある話です。アプリケーションに変化を加えたい開発側と、アプリケーションの安定性を求める運用側でこの部分の連携がうまく取れていない、いわゆる『縦割り組織』の場合、"Wall Of Confusion"(混乱の壁)によって問題が発生してしまいます」と組織における連携の難しさについて、例を挙げて説明しました。
ビジネスを取り巻く環境が厳しさを増し、さらには移り変わりの早さや競争が激化してきている昨今では、いかに状況を判断しつつ、サービスや次のアクションを市場に対して投げ掛けていくか、という部分が鍵となります。そういった状況で連携ミスによる遅延が発生したり、バグ発生による時間や人的リソースのコスト増加などが積み重なってきたりするようでは、あまりにも"非効率"であり、ビジネスにおける致命的なダメージを負いかねません。DevOpsでは、これらの問題を解消し、さまざまな効率やパフォーマンスを向上させられるというメリットが見込めるのです。DevOpsを実践することで、以下のようなメリットが得られるとされています(この辺りの詳細な情報については、puppetlabs社のレポートで解説されていますので興味のある方はぜひ読んでみてください)。
DevOpsには3段階の「対話」があるとされています。1つ目は「人々の対話」。ユーザーやお客さまと対話を重ねることで、満足度を向上させる精度を高めていきます。2つ目は「プロセスの対話」。一緒に仕事をしていく上で、ライフサイクルを通して無駄なプロセスを、またイノベーションの阻害要因となるものを排除し、改善を進めていきます。3つ目は「製品の対話」。DevOpsは特定のツールに依存するものではなく、(今回のイベントはMicrosoft社の開催ですが)必ずしもMicrosoft社の製品を使わなければならないという訳ではないのです。最近ではさまざまなプロダクトツールが存在し、よりうまくプロセスを改善、促進できるようなものも出てきています。選択は自由です。
Microsoft社では、DevOpsを考える際に大きく3段階の「枠組み」を用いています。「100レベル:概要」はここまで解説してきたようなレベルのお話です。「200レベル:実践」については"Infrastructure as Code"や"継続的インテグレーション"などといったプロセスに関するもの。そして「300レベル:実践的な製品」へと続きます。300レベルについては、先述のとおり特定の製品向けという訳ではなく、Microsoft以外の製品でも利用・実践が可能です。DevOpsの手法としてはInfrastructure as Codeや継続的インテグレーションの他にも、「自動テスト」や「継続的デプロイ」などの手法が列挙されており、また、それらを実現するためのサービスを組み合わせた、いわゆる「エコシステム」も併せて提示されています。