DevOps スタータキットの公開
DevOps の概要、プラクティス、そしてそれに関するリソースを整理して自ら学習しやすいようにしてみました。DevOps の考え方、プラクティス毎に、ビデオとそこで使っているPPTを公開しますのでお楽しみください。
1. DevOps の歴史
DevOps を学ぶときに、海外と比べると日本の商習慣が異なるので、向こうで話されているDevOps の概要を聞いてもピンと来ないかもしれません。そこで、DevOps の歴史を7分程度で学べる動画を作成しました。 これで、DevOps が生まれきた背景が学べると思います。
2. DevOps の概要
DevOps の歴史を知るとと、DevOps の概要がよりわかりやすいかもしれません。次のビデオをご覧ください。
DevOps プラクティス
ビデオで解説されているとおり、マイクロソフトが定義している 主要な DevOps プラクティスを学べるようなコンテンツを作成 してみました。
3. Infrastructure as Code
インフラストラクチャをコード化するInfrastructure as Code の解説とデモです。
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 どちらでも実行可能です。英語ですが、チュートリアル なので、手順をおってやればイメージは相当わきやすいと思います。
他にも 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 だとコード化されているので、 安定した運用が可能になります。
3.5. Docker
コンテナ技術のデファクトといえる Docker は今後の基礎知識になりそうです。最高の日本語サイトは、クリエーションラインの 前佛さんの作成したここですね。
David Tesar が私に話してくれたConfiguration as Code の話はこちらのエントリからご覧ください。
4. テストの自動化
自動化するテストと、その種類について解説しています。
5. 継続的インテグレーション
継続的インテグレーションの解説とデモです。
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という ツールを使っています。
8. テスト駆動開発
テスト駆動開発は、アジャイルや、DevOps を導入するときに Infrastructure as Code と同じぐらい 重要な開発の「習慣」です。このビデオを見て、雰囲気をつかんでください。
これで雰囲気をつかんだら、下記の本は原本なので、それでチュートリアルをやると良いでしょう。 また、リファクタリングはとても重要で、コードが汚いなと思ったときに、このパターンでリファクタリングすると どんどんきれいなコードの書き方が身についてきます。
テスト駆動開発入門 新装版 リファクタリング―既存のコードを安全に改善する― (OBJECT TECHNOLOGY SERIES)
8.1. テスト駆動開発が難しい場合は
テスト駆動開発が難しい場合は、OOP(Object Oriented Programming) が十分できていないケースがあります。その場合は、「オブジェクトゲーム」という手法をもちいると、 OOPの基本とアーキテクチャが半日程度で理解できるようになります。オブジェクトゲームの、プレゼン、カード、ソースを置いておきました。
9. Advanced DevOps プラクティス
上級の DevOps に関するご紹介です。
10. Git の基本操作
Ops の方が初めてGitに触れるときは戸惑いを感じるようです。私も最初はとても訳が分かりませんでしたが、 なれると手放せなくなってきます。このビデオでは、Gitの最低限の基本操作のみを解説しています。
11. アジャイルの導入
DevOps を始める前に アジャイルの考えがまだ理解できていない場合は、下記のプレゼンテーションが役に立つかもしれません。
プロダクトオーナーの技術に関してはこれ
12. DevOps の事例
以上です