devops on azure 高品質クラウドデザインを求めて

57
Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved. DevOps on Azure 高高高高高高高高高高高高高高高 高高高高高高高高高高高

Upload: atsushi-kojima

Post on 11-Jan-2017

329 views

Category:

Engineering


1 download

TRANSCRIPT

Page 1: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

DevOps on Azure高品質クラウドデザインを求めて

株式会社オルターブース

Page 2: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

自己紹介

株式会社オルターブース代表取締役 (金髪おにいさん)小島 淳(Atsushi Kojima)

とりあえずなんでもやるフルスタックエンジニアと思っている方が多いですが本人的には

OSS なミドルウェア職人と思っていてアプリケーション開発をバリバリしている人から見ると物足りないしネットワーク超絶詳しい

人から見ても物足りないという中途半端な存在を打破しようと日々精進しています。

Microsoft MVP ( Microsoft Azure )だったりします。

Page 3: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

過去は過去。

未来は未来。

経歴なんてどうでもいいのですが、一応面白いんで読んでみてください。

Page 4: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

DevOps とは何なのか

Page 5: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

開発部門と運用部門が協力し、ビジネスリスクを軽減させるための仕組みのことです。

Page 6: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

原則 1 :無駄をなくす原則 2 :品質を作り込む原則 3 :知識を作り出す原則 4 :デメリットを把握する 原則 5 :素早く提供する原則 6 :人を尊重する原則 7 :全体を最適化する

リーンソフトウェアの原則

Page 7: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

定性(実現するために必要な質)

定量(定性を実現するために必要な量)

これ考えたことありますか?

DevOps における目標設定

Page 8: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

ビビらず本番へデプロイできる環境を提供しシステムライフサイクルの高品質化を目指す!

定性(実現するために必要な質)

Page 9: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

10 deploy per day※ 確実にデプロイ出来るというところが重要

定量(定性を実現するために必要な量)

Page 10: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

DevOps on Azure

Page 11: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

Azure で DevOps を実践する場合の技術的 Tips

OrchestrationInfrastructure as a CodeImmutable InfrastructureCI/CD

今日はこれらの技術について Azure で実践する場合のノウハウをお伝えします。

Page 12: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

Orchestration

Page 13: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

複雑なコンピュータシステム / ミドルウェア /サービスの配備 / 設定 / 管理の自動化を指す用語。

Wikipedia より

オーケストレーションとは

Page 14: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

仮想マシン

StorageBlob

SQLDatabase

ManagedCache

こんな感じのシステムを一気につくってしまおう、それがオーケストレーションです。

Page 15: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

従来の構築方法

仮想サーバーの作成SQL Database の作成ストレージの作成キャッシュサービスの作成

一つ一つ作っていくとかなり面倒くさいうえに、リソースがグルーピングされていないため管理が非常に乱雑になる。

Page 16: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

Azure Resource Group

Azure Resource Group とは?複数のサービスリソースを 1 つのグループで管理し、構築や運用におけるコストを軽減することができる仕組みのことです。

オーケストレーションの基礎になるサービスです。

Page 17: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

Azure Resource Group

Azure 管理ポータルから「リソース グループ」を選択して、リソースグループを作成します。

このリソースグループ内にサービスで必要なリソースを組み込んでいきます。

Page 18: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

リソースグループはどうやって管理する?

Page 19: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

Azure Resource Manager

Azure Resource Manager は、リソースグループをより効率的にリソースを管理することができ、 JSON 形式の単純なテンプレートを使ってデプロイ定義を宣言することが出来ます。

Page 20: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

Azure Resource Manager

Azure Resource Manager ではリソースのデプロイ定義だけでなく、様々なコントロールを管理することが可能です。

Page 21: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

Azure Resource Manager

ユーザーの Access Control が可能

Page 22: DevOps on azure 高品質クラウドデザインを求めて

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 このテンプレートのバージョン

Page 23: DevOps on azure 高品質クラウドデザインを求めて

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" }}

Page 24: DevOps on azure 高品質クラウドデザインを求めて

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 セクションでは、テンプレートを簡略化するための変数を定義できます。

Page 25: DevOps on azure 高品質クラウドデザインを求めて

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>" ] }]

Page 26: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

VisualStudio からのデプロイ

リソースマネージャーは VisualStudio からも作成し、簡単に配置することが出来ます。

Page 27: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

ARM テンプレートは GitHub で公開されているんで是非活用してみてください。

https://github.com/Azure/azure-quickstart-templates

Page 28: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

Infrastructure as a Code

Page 29: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

サーバー設定を全てコード化し保守性を高める技術です。DevOps= Infrastructure as a Code という認識をされる方が多いです。

実際には Infrastructure ではなく” Configuration” という意味合いが強いです。

Infrastructure as a Code とは

Page 30: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

Azure でよく使うツールChefAnsiblePowerShell DSCPuppet

それぞれ特徴はあるにせよ、サーバー構成をコード化し管理するというところは同じです。

Page 31: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

Azure ではエージェントが用意されています。

Page 32: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

2 つのデプロイ方法

IaC Server

Push

Pull

あるべき姿を定期的に確認する

あるべき姿を送り込む

Page 33: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

宣言的構文構成管理利用するコードは宣言的構文というシンプルな命令語で構成されます。

package “httpd” do action :installend

service “httpd” do action [ :enable, :start ]end

Apacheをインストール

Apacheの自動起動と起動

Page 34: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

Immutable Infrastructure

Page 35: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

システム運用のリスクは本番環境への変更オペレーションです。本番環境ではすでにサービスが稼働しているため、何かトラブルがあればサービスダウンの危険性が高まります。解決策は意外と簡単で本番環境に「触らない」ことです。

Immutable Infrastructre とは本番環境と全く同じ構成のステージング環境を用意し、それらを交互に入れ替えていく運用方法です。

Immutable Infrastructure とは

Page 36: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

本番サーバー ステージングサーバー

変更オペレーション

Page 37: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

Blue Green Deployment

Cloud Service

Web Role

Web Role

Production

Staging

Page 38: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

Docker 社が提供するホスト仮想コンテナ型アプリケーションです。

Docker

Page 39: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

Docker はホストカーネルを共有します。なので、通常の仮想サーバーの様に扱うことは可能ですが本来はサーバーミドルウェアの機能分離を目的としています。

Docker

Page 40: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

ContainerAzure の場合非常に簡単に Container Service を作ることが出来ます。

仮想マシンに普通に Dockerホストを作るDocker VM拡張機能を使用するAzure Container Service ( Preview )

コンテナを通常の仮想サーバーとして扱う☓ マイクロサービスとして扱う

Page 41: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

CI/CD

Page 42: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

継続的インテグレーションとは、継続的にビルドを実行しソフトウェアをインテグレーションしたときに発生する様々な問題を早期に検出し、フィードバックサイクルを短くしてソフトウェア開発の品質と生産性を向上させる仕組みのことです。

継続的インテグレーション・デリバリ

デプロイコンパイルインスペクションテスト

Page 43: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

継続的インテグレーション・デリバリ

通常バグはテスト工程で発見されます。しかし継続的インテグレーション(以下 CI )では、 1 日に何度でも好きなタイミングでビルドすることが可能なのでバグを見つけるタイミングが早くなります。結果、手戻りが少なくなり早期にバグを修正することにより品質向上へつながります。

コミット コミット コミット コミット コミット

テスト

大量のバグ発見

バグ発見コミット テスト

バグ発見コミット

通常の開発

CI

Page 44: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

もっともっと DevOps やるなら。。。。

Visual Studio Team Services

Page 45: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

フルマネージドのCI サービス

Coding IaC Orchestration Build Control

App / Service

Page 46: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

なぜ失敗するのか

Page 47: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

それなりに学習コストがかかるOps のコーディング能力には限界があるDev の運用設計は壮大になりがち結局のところ手動でサーバー構築できないと作れない

障害対応時のコードメンテナンスが面倒ブルーグリーンだけでなんとかしようとするアラートトリガーのアクションを壮大にする

DevOps の勘違いポイント

Page 48: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

DevOps の目的が技術展開のみである場合、エンジニアの趣味で終わる。

壮大な夢が詰まった運用設計は非常に心惹かれるが、一番重要なのは「何を成し得ようとしているか」が見える仕組みである。

DevOps の目的

Page 49: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

参考になる書籍たち

Page 50: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

告知

Page 51: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

2/27〜 2/28マイクロソフト主催の DevOps ハッカソンが開催されます。

DevOps ハッカソン

DevOpsにどっぷりハマる2日間。チームを組んで DevOpsをハックしてみませんか?参加資格は特になし。Devも Opsも是非ご参加下さい!!

Page 52: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

Product Owner Ship 勉強会

POStudy

Page 53: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

現在の日本の IT サービス業界において、「 プロダクトマネジメント 」という分野が欠落しているとも言われています。

POStudy では、いかに「 プロダクトオーナーシップ 」を発揮するかについて、普段の生活や仕事を通して自己成長を重ねていく為のヒントを、オフラインおよびオンラインの両方のチャネルを通して提供していきます。

Page 54: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

Page 55: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

第二弾は

七つの習慣ボードゲーム

日程未定

Page 56: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

15 人〜 20 人参加者見込みが立てば福岡でも開催します!

3月 19 日福岡開催決定!!!

Page 57: DevOps on azure 高品質クラウドデザインを求めて

Copyright © 2015-2015 ALTERBOOTH inc. All Rights Reserved.

おわり後ほど禁断の LT やります