運用管理者のための
「開発者からみたDevOps」
Visual Studio 2015 新機能から考える開発者の取り組み
1
ソフトバンク・テクノロジー株式会社(エキスパートエンジニア)古賀 慎一
2015年7月15日(水)
Copyright© 2015 Shin-ichi Koga All Rights Reserved.
このセッションのゴール
DevOps(開発・運用)の違い について知る
開発者の取り組み について知る
新しい時代にどのように対応するか?を考える
Visual Studio+Azure の新機能登場に備えよう!
2
※Visual Studio 2015 RC と de:code 2015 の情報を元にしているため、今後のアップデート・製品版では名称や仕様が異なる可能性があります
自己紹介
3
古賀 慎一
Microsoft MVP for Visual Studio ALM
ソフトバンク・テクノロジー株式会社 Project Management Office (PMO) エキスパートエンジニア
 クラウドサービス Online Service Gate® で TFS 導入事例
http://tech.surviveplus.net/archives/1114
 前職では 某大手 情報サイトのデータ入稿システム のフレームワークを開発
 「仕組み」作りで 如何に高品質・低コストで早い開発を実現できるか?
 エンタープライズ向けの実践的な C# サンプルを公開
アジェンダ
 DevOps は世界が違う
 Visual Studio で開発者は何をおこなっているか?
 Visual Studio 新機能にみる開発者の取り組み
 DevOps 一緒に今後のサービス対応に取り組みましょう
4
DevOps は世界が違う
5
DevOps(開発・運用)って何だろう?
6
Construct
Implement
Monitor
Operate
BACKLOG
RELEASE
Plan
Business / Define
Develop
Test
Platform
Release
Operate
Insights
Build
Measure
Learn
Collaborate
※DevOps の定義はいくつかあります。この図は2014年前後の Microsoft の資料よりキーワードを集めて作成したものです。
運用?
開発?
ここは?
DevOpsはビジネスの話 = 開発サイクルと投資
 これまでの投資
 これからの投資
7
大投資 大投資
数年かけて
予算取り・企画立案
5~10年運用
仕組みを変えられずに複雑化
中投資 中投資
時代の変化とニーズに応じて常にアップデート
運用と開発は連動
数年で基礎から見直せる
プロジェクトのそのものに見直しが必要 = 解散しないプロジェクト
DevOpsは参加する人によって見える世界が違う
8 開発完了後に「最後は運用でカバー」となるのは業界の常?
ツールが違う
ゴールが違う
やる事が違う
言葉が違う
会社が違う
歴史が違う
Visual Studio + System Center が DevOpsの主軸
 マイクロソフトの DevOps は2つの製品でなりたっている
Visual Studio (Visual Studio Online / Team Foundation Server 含む)
System Center
 開発者は Visual Studio を使用
ここに追加されている機能は、DevOpsを上手くやるために必要な機能(なはず ...
9
開発者は何を考えて開発しているのか?
Visual Studio 2015 の新機能から
開発者の取り組みを
イメージしてください
※一部に「わかりやすさ」のために、おおざっぱな表現を使用している部分がありますが、ご了承ください
10
開発者は何をおこなっているか?
11
Visual Studio で何が出来ますか?
 Visual Studio Online のメニューを見るとわかります
 HOME ⇒ ダッシュボード・見える化
 CODE ⇒ ソースバージョン管理
 WORK ⇒ タスク管理・工程管理・進捗管理・バグトラッキングシステム
 BUILD ⇒ 自動ビルド・自動テスト・自動リリース・継続的デリバリー
 TEST ⇒ テストケース管理(バグトラッキングシステム)・他機能はまだプレビュー
12
Visual Studio を使った開発はだいたいこんな感じ
 HOMEを見てチーム全体の課題がないか?確認
 WORKを見て今日のタスクを確認
 Visual Studio でコードを書いて CODE に入れる
 もちろんTESTも十分に行う
 チームの他の人が壊してないか?BUILDで確認
 完成したらリリースを行って引き渡し・・・
 環境の構築もリリースも Visual Studio で行えちゃうよ???
13
Visual Studio からのリリースは本番運用用ではない
 確かに運用することも出来る(ごく小規模なプロジェクトであれば)
 System Center や PowerShell によって提供されている
リリース・監視・運用に着目した機能とは根本的に違う
 開発環境や検証環境を凄まじい短期間で用意するための物
 本番リリースには綿密な計画と運用体制が必要
VSから Azure 環境の構築も配置もできる、簡単に壊すこともできる 14
新機能にみる開発者の取り組み
15
ちゃんと運用を考えた開発が必要
 Visual Studio から気軽にデプロイできる ≠ 運用出来る
 監視や運用を考慮した設計・開発が必要
 開発者がこれを考えていないときは、追加してもらう必要がある
 どの機能も「正しい作り方」で作る必要がある
 アプリへの機能追加は「接続済みサービス」から! NEW
 開発するアプリに、Azure Application Insights の追加を! NEW
16
接続済みサービス & Azure AD 認証の構成
 Visual Studio からギャラリーを検索
 アプリで使用するサービスを選択、設定を入力して構成
17
Azure Active DirectoryConnected Service
 アプリを Azure Application Insights, Azure Mobile Services, Azure Storage, Office 365, Salesforce に接続
Application Insights ( プレビュー )
 モバイル アプリ& Web アプリ の問題の検出、クラッシュの診断、
利用状況の追跡
Azure, IIS, J2EE サーバー... ホストに関わらず使用可能
18
※一部の図は MSDN Blog (http://blogs.msdn.com/b/visualstudioalm/archive/2015/01/07/application-insights-and-azure-websites.aspx ) より引用
ちゃんと品質の高いコードを書いてる?
 静的コード分析強化
 NuGetパッケージとしてプロジェクト毎に追加
 自作可能(オープンソース化も進む)
 コードレンズ
 クイックアクション(Light Bulb)
19
コードレンズ (Visual Studio 2013 以降)
 ソースコードをいつ?誰が?どう?変更したかをコードの近くに表示
ここから担当者に連絡出来る(IM, メール, 電話)
 単体テスト結果確認、テスト実行もコードからできる
20
※一部の図は MSDN Blogs ( http://blogs.msdn.com/b/visualstudioalm/archive/2014/11/12/code-lens-for-git-quot-team-activity-view-quot.aspx ) より引用
コードレンズ 強化 "Team Activity View“
 Visual Studio 2015 ではグラフィカルに「見える化」
 メソッド毎:C#, Visual Basic
 ファイル毎:JavaScript, C++, SQL ※ Git のみ、TFVC 対応も計画あり
開発者が情報収集 ⇒ ツールが情報収集 開発者が開発に集中出来る
21
※図は MSDN Blogs ( http://blogs.msdn.com/b/visualstudioalm/archive/2014/11/12/code-lens-for-git-quot-team-activity-view-quot.aspx ) より引用
Light Bulb ~リファクタリング&コード分析強化
 コードをリアルタイムに分析、提案を表示
 電球アイコンクリック(Ctril + . )で候補を表示⇒プレビュー⇒実行
22
※図は Visual Studio 2015 RC リリース ノート ( https://www.visualstudio.com/news/vs2015-vs ) より引用
リファクタリング&コード分析が Light Bulb に統合
 名前の変更、不要なusingの削除、属性の追加 etc...
 NuGet からコード分析ルールを取得出来る
Microsoft Code Analysis for Azure 0.4.0-beta
https://www.nuget.org/packages/Microsoft.VisualStudio.Azure.CodeAnalysis/
自分でもルールを作れる!
23
※図は Visual Studio 2015 RC リリース ノート ( https://www.visualstudio.com/news/vs2015-vs ) より引用
開発者がチェック・調査
⇒ツールがチェック・提案
開発者が開発に集中出来る
ちゃんと実際に動かして確認してる?
 診断ツール強化
 タイムラインとIntelliTrace
 メモリー使用率、CPU使用率 etc... はグラフで可視化して確認出来る
 どこからどこまでに何秒かかっているか?すぐに何度でも確認出来る
 お客様環境で IntellTraceログを収集してもらえば、開発者のPCでデバッグ出来る
24
タイムラインツール・診断ツールとIntelliTrace
 WPFとWindowsストア 8.1アプリの検査・診断・パフォーマンス向上を
 メモリー使用量
 CPU使用率
 かかった時間 etc ...
デバッグ時「見える化」
25
※図は MSDN Blog ( http://blogs.msdn.com/b/wpf/archive/2015/01/16/new-ui-performance-analysis-tool-for-wpf-applications.aspx ) より引用
タイムライン+IntelliTraceで強力に見える化
 IntelliTrace(2010以降)
 問題が起こるまでを録画して再生するイメージ - 変数の変化やイベントを確認出来る
 お客様の環境でIntelliTraceログを収集、自社PCの Visual Studio で(ほぼ)F5デバッグが可能
 タイムラインで「このとき」から「このとき」何が起きていたか?を確認
26
※図は MSDN Blog ( http://blogs.msdn.com/b/wpf/archive/2015/01/16/new-ui-performance-analysis-tool-for-wpf-applications.aspx ) より引用
開発者が記録・再現(多くは見えなかった)
⇒ツールが記録・再現・見える化
開発者が開発に集中出来る
ちゃんとテストしてる?
以前からある機能
 単体テスト・コード化されたUIテスト(UI自動テスト)
 自動ビルド・自動テスト
新機能
 単体テストを自動で作ってくれる機能「IntelliTest」NEW
27
IntelliTest ~ 単体テストの自動作成
 Create Unit Test - 復活!単体テストコードをメソッドから作成
 Run IntelliTest - 新機能!コードカバレッジ100%テストパターンを作成
28
(旧称:Smart Unit Test)
※単体テストサンプルはこちらからダウンロードできます ( https://code.msdn.microsoft.com/TFSVSO-dc7b8c9d )
開発者が網羅 ⇒ ツールが網羅的に作成 開発者が開発に集中出来る
単体テストが作れる開発の方法を解説してます
 単体テスト出来るアプリの作り方を
スライドで解説しています
「ちゃんとした C# プログラムを書けるようになる実践的な方法
~ Visual Studio を使った 高品質・低コスト・保守性の高い開発」
http://www.slideshare.net/shinichikoga355/starting-c-sharp
29
ちゃんとリリース出来るように作ってる?
 Release Management は DevOps が両者で使えるリリース機能
 ソフトバンク・テクノロジー株式会社 事例 リリースコストが 1/20 に!
http://tech.surviveplus.net/archives/1114
 開発者がリリース方法を「開発」し、検証環境にリリース
 運用管理者はリリース方法を納品してもらって、本番環境にリリース
 ワークフロー(承認・他のアクション)を構築できる 30
DevOps一緒に今後のサービス対応を
31
今後のクラウドサービス・コンテナへの対応
 Azure は Visual Studio で開発するアプリの配置先
PaaS, IaaS, Docker コンテナ... マクロサービスへ?
 Azure は Visual Studio で開発するアプリに接続する機能
Azure AD, Azure Mobile Service, Azure ML, Azure Data Factory, Azure Data Lake ...
Azure + Visual Studio = Microsoft が注目するアーキテクチャを実現
32
マイクロサービス (MSA : Microservices architecture)
 動いているサービスを止めずにアップデートは大変( Amazon.co.jp とか)
 全体で巨大1システムだと変更・リリースが難しい
依存関係が複雑
細かいサービスに分かれていれば、部分的にリリースして差し替え可能
アップデートより作り替えの方がリスクが低いはず
※15年使ったエアコンが壊れたら直すか?買い換えるか?
 細かいサービスは、仮想化OSじゃなくて、コンテナで動くと良いよね
Dockerによる仮想化が進む ~ Azure / Windows Server も対応していく 33
Docker はコンテナ型のアプリ仮想化技術
 Microsoft はDocker に力を入れている ⇒ マイクロサービス対応のため?
34
仮想マシン
コンテナ
PaaS
アプリ
ミドルウェア
OS
ハイパーバイザー
ハードウェア
Docker : コンテナ型
アプリ
Docker エンジン
OS
ハードウェア
IaaS
アプリ
ミドルウェア
OS
ハイパーバイザー
ハードウェア
ライブラリ
ASP.net は コンテナ型のアプリ仮想化技術で動作
 配置はアプリと.NET Coreを一緒に xcopy
オンプレミス
Azure Web Apps / 仮想マシン
Docker / Windows コンテナー
Docker
https://www.docker.com/
35
データレイク (Data lake) と IoT&ビッグデータ
 今まで
業務システムが目的のデータを収集、それを整形加工、分析へ・・
 これから
IoTで大量に収集される生のデータ(ビッグデータ)
リアルタイムでストリーム処理する流れ
未整形データを一旦溜めて、整形加工して使用する流れ
Azure ML, Azure Data Factory, Azure Data Lake ...
36
開発者と一緒に DevOps を考えていきましょう
 今後ますます、Visual Studio から簡単に(数回クリックするだけで)
クラウドサービスの利用やコンテナ対応が出来るようになる
 運用方法やリリース方法をこれから確立しなければならない分野が沢山!
 本気の DevOps (特にOps)を Dev に意識させてください!
 ちゃんと運用が考えられていない開発は差し戻しを
 ホントの「最後は運用でカバー」をお願いするかもしれません、ので・・・
37
38Copyright© 2015 Shin-ichi Koga All Rights Reserved.

運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み