Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

618 views

Published on

Fukuoka ComCamp 2016 登壇したときの資料です。
デモは割愛しています。

Published in: Engineering
  • Be the first to comment

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

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

×