devops on azure 高品質クラウドデザインを求めて
TRANSCRIPT
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
DevOps on Azure高品質クラウドデザインを求めて
株式会社オルターブース
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
自己紹介
株式会社オルターブース代表取締役 (金髪おにいさん)小島 淳(Atsushi Kojima)
とりあえずなんでもやるフルスタックエンジニアと思っている方が多いですが本人的には
OSS なミドルウェア職人と思っていてアプリケーション開発をバリバリしている人から見ると物足りないしネットワーク超絶詳しい
人から見ても物足りないという中途半端な存在を打破しようと日々精進しています。
Microsoft MVP ( Microsoft Azure )だったりします。
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
過去は過去。
未来は未来。
経歴なんてどうでもいいのですが、一応面白いんで読んでみてください。
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
DevOps とは何なのか
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
開発部門と運用部門が協力し、ビジネスリスクを軽減させるための仕組みのことです。
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
原則 1 :無駄をなくす原則 2 :品質を作り込む原則 3 :知識を作り出す原則 4 :デメリットを把握する 原則 5 :素早く提供する原則 6 :人を尊重する原則 7 :全体を最適化する
リーンソフトウェアの原則
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
定性(実現するために必要な質)
定量(定性を実現するために必要な量)
これ考えたことありますか?
DevOps における目標設定
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
ビビらず本番へデプロイできる環境を提供しシステムライフサイクルの高品質化を目指す!
定性(実現するために必要な質)
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
10 deploy per day※ 確実にデプロイ出来るというところが重要
定量(定性を実現するために必要な量)
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
DevOps on Azure
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
Azure で DevOps を実践する場合の技術的 Tips
OrchestrationInfrastructure as a CodeImmutable InfrastructureCI/CD
今日はこれらの技術について Azure で実践する場合のノウハウをお伝えします。
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
Orchestration
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
複雑なコンピュータシステム / ミドルウェア /サービスの配備 / 設定 / 管理の自動化を指す用語。
Wikipedia より
オーケストレーションとは
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
仮想マシン
StorageBlob
SQLDatabase
ManagedCache
こんな感じのシステムを一気につくってしまおう、それがオーケストレーションです。
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
従来の構築方法
仮想サーバーの作成SQL Database の作成ストレージの作成キャッシュサービスの作成
一つ一つ作っていくとかなり面倒くさいうえに、リソースがグルーピングされていないため管理が非常に乱雑になる。
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
Azure Resource Group
Azure Resource Group とは?複数のサービスリソースを 1 つのグループで管理し、構築や運用におけるコストを軽減することができる仕組みのことです。
オーケストレーションの基礎になるサービスです。
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
Azure Resource Group
Azure 管理ポータルから「リソース グループ」を選択して、リソースグループを作成します。
このリソースグループ内にサービスで必要なリソースを組み込んでいきます。
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
リソースグループはどうやって管理する?
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
Azure Resource Manager
Azure Resource Manager は、リソースグループをより効率的にリソースを管理することができ、 JSON 形式の単純なテンプレートを使ってデプロイ定義を宣言することが出来ます。
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
Azure Resource Manager
Azure Resource Manager ではリソースのデプロイ定義だけでなく、様々なコントロールを管理することが可能です。
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
Azure Resource Manager
ユーザーの Access Control が可能
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
Azure Resource Manager
テンプレートの基本構成{ "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "", "parameters": { }, "variables": { }, "resources": [ ], "outputs": { }}$schema JSONスキーマファイルの格納先contentVersion このテンプレートのバージョン
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
Azure Resource Managerparameters セクションでは、ユーザーがリソースをデプロイする際に入力できる値を指定します。
"parameters": { "siteName": { "type": "string" }, "siteLocation": { "type": "string" }, "hostingPlanName": { "type": "string" }, "hostingPlanSku": { "type": "string", "allowedValues": [ "Free", "Shared", "Basic", "Standard", "Premium" ], "defaultValue": "Free" }}
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
Azure Resource Manager
"parameters": { "username": { "type": "string" }, "password": { "type": "secureString" } }, "variables": { "connectionString": "[concat('Name=', parameters('username'), ';Password=', parameters('password'))]"}
variables セクションでは、テンプレートを簡略化するための変数を定義できます。
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
Azure Resource Manager
resources セクションでは、デプロイまたは更新されるリソースを定義します。このセクションで実際に展開するリソースを定義します。"resources": [ { "apiVersion": "<api-version-of-resource>", "type": "<resource-provider-namespace/resource-type-name>", "name": "<name-of-the-resource>", "location": "<location-of-resource>", "tags": "<name-value-pairs-for-resource-tagging>", "dependsOn": [ "<array-of-related-resource-names>" ], "properties": "<settings-for-the-resource>", "resources": [ "<array-of-dependent-resources>" ] }]
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
VisualStudio からのデプロイ
リソースマネージャーは VisualStudio からも作成し、簡単に配置することが出来ます。
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
ARM テンプレートは GitHub で公開されているんで是非活用してみてください。
https://github.com/Azure/azure-quickstart-templates
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
Infrastructure as a Code
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
サーバー設定を全てコード化し保守性を高める技術です。DevOps= Infrastructure as a Code という認識をされる方が多いです。
実際には Infrastructure ではなく” Configuration” という意味合いが強いです。
Infrastructure as a Code とは
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
Azure でよく使うツールChefAnsiblePowerShell DSCPuppet
それぞれ特徴はあるにせよ、サーバー構成をコード化し管理するというところは同じです。
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
Azure ではエージェントが用意されています。
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
2 つのデプロイ方法
IaC Server
Push
Pull
あるべき姿を定期的に確認する
あるべき姿を送り込む
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
宣言的構文構成管理利用するコードは宣言的構文というシンプルな命令語で構成されます。
package “httpd” do action :installend
service “httpd” do action [ :enable, :start ]end
Apacheをインストール
Apacheの自動起動と起動
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
Immutable Infrastructure
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
システム運用のリスクは本番環境への変更オペレーションです。本番環境ではすでにサービスが稼働しているため、何かトラブルがあればサービスダウンの危険性が高まります。解決策は意外と簡単で本番環境に「触らない」ことです。
Immutable Infrastructre とは本番環境と全く同じ構成のステージング環境を用意し、それらを交互に入れ替えていく運用方法です。
Immutable Infrastructure とは
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
本番サーバー ステージングサーバー
変更オペレーション
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
Blue Green Deployment
Cloud Service
Web Role
Web Role
Production
Staging
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
Docker 社が提供するホスト仮想コンテナ型アプリケーションです。
Docker
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
Docker はホストカーネルを共有します。なので、通常の仮想サーバーの様に扱うことは可能ですが本来はサーバーミドルウェアの機能分離を目的としています。
Docker
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
ContainerAzure の場合非常に簡単に Container Service を作ることが出来ます。
仮想マシンに普通に Dockerホストを作るDocker VM拡張機能を使用するAzure Container Service ( Preview )
コンテナを通常の仮想サーバーとして扱う☓ マイクロサービスとして扱う
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
CI/CD
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
継続的インテグレーションとは、継続的にビルドを実行しソフトウェアをインテグレーションしたときに発生する様々な問題を早期に検出し、フィードバックサイクルを短くしてソフトウェア開発の品質と生産性を向上させる仕組みのことです。
継続的インテグレーション・デリバリ
デプロイコンパイルインスペクションテスト
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
継続的インテグレーション・デリバリ
通常バグはテスト工程で発見されます。しかし継続的インテグレーション(以下 CI )では、 1 日に何度でも好きなタイミングでビルドすることが可能なのでバグを見つけるタイミングが早くなります。結果、手戻りが少なくなり早期にバグを修正することにより品質向上へつながります。
コミット コミット コミット コミット コミット
テスト
大量のバグ発見
バグ発見コミット テスト
バグ発見コミット
通常の開発
CI
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
もっともっと DevOps やるなら。。。。
Visual Studio Team Services
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
フルマネージドのCI サービス
Coding IaC Orchestration Build Control
App / Service
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
なぜ失敗するのか
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
それなりに学習コストがかかるOps のコーディング能力には限界があるDev の運用設計は壮大になりがち結局のところ手動でサーバー構築できないと作れない
障害対応時のコードメンテナンスが面倒ブルーグリーンだけでなんとかしようとするアラートトリガーのアクションを壮大にする
DevOps の勘違いポイント
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
DevOps の目的が技術展開のみである場合、エンジニアの趣味で終わる。
壮大な夢が詰まった運用設計は非常に心惹かれるが、一番重要なのは「何を成し得ようとしているか」が見える仕組みである。
DevOps の目的
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
参考になる書籍たち
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
告知
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
2/27〜 2/28マイクロソフト主催の DevOps ハッカソンが開催されます。
DevOps ハッカソン
DevOpsにどっぷりハマる2日間。チームを組んで DevOpsをハックしてみませんか?参加資格は特になし。Devも Opsも是非ご参加下さい!!
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
Product Owner Ship 勉強会
POStudy
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
現在の日本の IT サービス業界において、「 プロダクトマネジメント 」という分野が欠落しているとも言われています。
POStudy では、いかに「 プロダクトオーナーシップ 」を発揮するかについて、普段の生活や仕事を通して自己成長を重ねていく為のヒントを、オフラインおよびオンラインの両方のチャネルを通して提供していきます。
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
第二弾は
七つの習慣ボードゲーム
日程未定
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
15 人〜 20 人参加者見込みが立てば福岡でも開催します!
3月 19 日福岡開催決定!!!
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.
おわり後ほど禁断の LT やります