メソッド屋のブログ

米マイクロソフト Software Development Engineer 牛尾の日記です。ソフトウェア開発の上手なやり方を追求するのがライフワーク。本ブログは、個人の意見であり、所属会社とは関係がありません。

DevOps スタータキットの公開

DevOps の概要、プラクティス、そしてそれに関するリソースを整理して自ら学習しやすいようにしてみました。DevOps の考え方、プラクティス毎に、ビデオとそこで使っているPPTを公開しますのでお楽しみください。

f:id:simplearchitect:20160523193501j:plain

channel9.msdn.com

docs.com

docs.com

1. DevOps の歴史

DevOps を学ぶときに、海外と比べると日本の商習慣が異なるので、向こうで話されているDevOps の概要を聞いてもピンと来ないかもしれません。そこで、DevOps の歴史を7分程度で学べる動画を作成しました。 これで、DevOps が生まれきた背景が学べると思います。

docs.com

2. DevOps の概要

DevOps の歴史を知るとと、DevOps の概要がよりわかりやすいかもしれません。次のビデオをご覧ください。

docs.com

DevOps プラクティス

ビデオで解説されているとおり、マイクロソフトが定義している 主要な DevOps プラクティスを学べるようなコンテンツを作成 してみました。

3. Infrastructure as Code

インフラストラクチャをコード化するInfrastructure as Code の解説とデモです。

docs.com

Infrastructure as Code の技術はたくさんありますが、いくつかご紹介していきたいと思います。

3.1. Azure Resource Manager

ビデオでもご紹介している Azureを使っている人には便利なツールで、Visual Studio を使うと相当楽にコードが書けます。 それだけではなく、実態はJson なので、普通のテキストエディタでもコーディング可能です。

私のお好みはエバンジェリスト仲間の安納さんのチュートリアルです。ゼロから作っていくのでコンセプトなどがわかりやすいです。

リソーステンプレートを作成する~超基礎編

ちなみに、自分でAzure Resource Managerのテンプレートを公開することも可能です。これは、HashiCorpのNomadを好きな 台数だけプロビジョンできるテンプレートになっています。このコードは公開していますので、イメージがわきやすいかもしれません。

GitHubに Azure Resource Template がアップロードされています。これは、Azure で実際に使わているテンプレート ですので、書き方に困ったときに参考になります。

3.2. Terraform

HashiCorpの Terraform も最近お気に入りのツールの一つです。Go言語で書かれているため、Windows でも、Macでも、 Linux でも機嫌よく動作します。私が、de:code 2016 のキーノートで Jenkins 2.0 から、Terraform を自動実行して 実際にサーバーをプロビジョニングしました。

Terraform バーチャルマシンを ARM対応の Terraform を使ってプロビジョンしてみる

3.3. Chef

ARM や、Terraform は、VMや、ネットワークを作成するのは得意なのですが、その中身(ミドルウェアのインストール) などはそんなに得意ではありません。その時に使うと便利なツールがChef です。Linux 系でも、Windows 系でも動作 します。

Chef のチュートリアルシリーズは大変わかりやすく、Linux, Windows どちらでも実行可能です。英語ですが、チュートリアル なので、手順をおってやればイメージは相当わきやすいと思います。

Chef Tutorial

他にも Ansible や、Itamae 等様々なツールが存在します。

3.4. PowerShell DSC / PowerShell

PowerShell を作ったJeffrey Snover自らが解説するシリーズでがっつり学べます Getting Started with PowerShell 3.0 Jump Start Getting Started with PowerShell Desired State Configuration (DSC)

日本語で学びたい人はここにがっつりとした安納さんの資料が! 【ハンズオン】PowerShell で Hyper-V を構築・管理

3.5. xPlat / Azure PowerShell

Azure SDK を使うと、クライアントの生成なども可能になります。様々な言語がサポートされています。Azure SDKを使うと、 生の挙動が確認できるので、感覚をつかみやすいので触ってみるのをお勧めします。

https://azure.microsoft.com/ja-jp/downloads/ https://azure.microsoft.com/ja-jp/documentation/articles/powershell-install-configure/

3.4. Packer

Packer は、HashiCorpが作ったツールで、ゴールデンイメージを作るときに、Infrastructure as Code ができるツールです。 ゴールデンイメージも手作りをしていると、バージョンアップの時に面倒なことになりますが、Packer だとコード化されているので、 安定した運用が可能になります。

Packer

3.5. Docker

コンテナ技術のデファクトといえる Docker は今後の基礎知識になりそうです。最高の日本語サイトは、クリエーションラインの 前佛さんの作成したここですね。

Docker ドキュメント日本語化プロジェクト

David Tesar が私に話してくれたConfiguration as Code の話はこちらのエントリからご覧ください。

4. テストの自動化

自動化するテストと、その種類について解説しています。

docs.com

5. 継続的インテグレーション

継続的インテグレーションの解説とデモです。

docs.com

HOL - Parts Unlimited MRP App Continuous Integration with Visual Studio Online Build

6. リリースマネジメント と継続的デプロイメント

リリースや、デプロイの自動化の解説とデモです。Visual Studio Team Services

Visual Studio Team Services の日本語情報は武田さんが書かれたチュートリアルがよいと思います。

https://docs.com/takeda-masaki-1/1805/visual-studio-2015-team-foundation-server-2015

7. アプリケーションパフォーマンスモニタリング / マネジメント

アプリケーションパフォーマンスモニタリングです。具体的な例として、Application Insightという ツールを使っています。

docs.com

8. テスト駆動開発

テスト駆動開発は、アジャイルや、DevOps を導入するときに Infrastructure as Code と同じぐらい 重要な開発の「習慣」です。このビデオを見て、雰囲気をつかんでください。

docs.com

これで雰囲気をつかんだら、下記の本は原本なので、それでチュートリアルをやると良いでしょう。 また、リファクタリングはとても重要で、コードが汚いなと思ったときに、このパターンでリファクタリングすると どんどんきれいなコードの書き方が身についてきます。

テスト駆動開発入門 新装版 リファクタリング―既存のコードを安全に改善する― (OBJECT TECHNOLOGY SERIES)

8.1. テスト駆動開発が難しい場合は

テスト駆動開発が難しい場合は、OOP(Object Oriented Programming) が十分できていないケースがあります。その場合は、「オブジェクトゲーム」という手法をもちいると、 OOPの基本とアーキテクチャが半日程度で理解できるようになります。オブジェクトゲームの、プレゼン、カード、ソースを置いておきました。

docs.com

9. Advanced DevOps プラクティス

上級の DevOps に関するご紹介です。

docs.com

10. Git の基本操作

docs.com

Ops の方が初めてGitに触れるときは戸惑いを感じるようです。私も最初はとても訳が分かりませんでしたが、 なれると手放せなくなってきます。このビデオでは、Gitの最低限の基本操作のみを解説しています。

11. アジャイルの導入

DevOps を始める前に アジャイルの考えがまだ理解できていない場合は、下記のプレゼンテーションが役に立つかもしれません。

docs.com

プロダクトオーナーの技術に関してはこれ

docs.com

12. DevOps の事例

www.publickey1.jp

以上です