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