クラウドが実現するソフト開発・運用の変革と自動化

3,504 views

Published on

0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,504
On SlideShare
0
From Embeds
0
Number of Embeds
75
Actions
Shares
0
Downloads
64
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

クラウドが実現するソフト開発・運用の変革と自動化

  1. 1. オープンクラウド・キャンパス クラウドが実現するソフト開発・運用の変革と自動化 Ver1.2 2012/11/13 中井悦司 (Twitter @enakai00)
  2. 2. クラウドが実現するソフト開発・運用の変革と自動化 自己紹介  中井悦司(なかいえつじ) – Twitter @enakai00  日々の仕事 – Senior Solution Architect and Cloud Evangelist at Red Hat K.K. 好評発売中 企業システムでオープンソースの活用を希望される お客様を全力でご支援させていただきます。  昔とった杵柄 – 素粒子論の研究(超弦理論とか) – 予備校講師(物理担当) – インフラエンジニア(Unix/Linux専門)2 Open Cloud Campus
  3. 3. クラウドが実現するソフト開発・運用の変革と自動化 はじめに:クラウドの自動化における問題意識  クラウドコンピューティングの実現により、さまざまな「インフラの自 動化」が可能になりました。 – アクセス変動に敏感なWebアプリケーション(現在のパブリッククラウド利 用の主流)では、「オートスケール」などは確かに便利な機能です。  今後、一般企業の業務アプリケーションをクラウドで利用する場合、ど のような観点で、どのような処理を自動化することが必要なのでしょう か? – 既存の手作業をそのまま自動化するのでは、「自動化のための自動化」に陥 る危険性はないでしょうか? – 「アプリケーション開発、システム運用プロセスの変革/改善と一体化した自 動化の適用」を研究するべき時期がきているのではないでしょうか? いけてる自動化? いけてない自動化?3 Open Cloud Campus
  4. 4. クラウドが実現するソフト開発・運用の変革と自動化 Contents  システム運用の現状と課題  運用自動化への道 − ソフトウェアライフサイクルの観点から  アプリケーションデプロイの自動化の現状  サービス継続性から見る将来の自動化4 Open Cloud Campus
  5. 5. システム運用の現状と課題
  6. 6. クラウドが実現するソフト開発・運用の変革と自動化 システム運用業務の目的  サービスの継続提供 – システムの機能/性能を維持して安定したサービスを継続すること  システムの予防保守 – 障害が発生しないように健全なシステム状態を保持すること  障害対応 – 障害発生時に迅速にサービスを復旧して、再発を防止すること アプリケーション開発 インフラ構築 アプリケーション配備 サービス継続 予防保守 コ 要 ー 運用引き継ぎ デ テ 件 設 定 計 ィ ス システム運用 ン ト 義 グ 障害対応6 Open Cloud Campus
  7. 7. クラウドが実現するソフト開発・運用の変革と自動化 システム運用業務の現状 運用手順書による 手作業が前提  主な運用業務 – アプリケーション配備(デプロイ)  OS導入手順書 – 予防保守  アプリケーション導入手順書  パッチ適用手順書 – システム監視と障害対応  バックアップ手順書  障害対応手順書 – バックアップ  etc... – キャパシティ管理とシステムの増強 デプロイ アプリケーション 監視 予防保守 OS 障害対応 データ バックアップ システム増強7 Open Cloud Campus
  8. 8. クラウドが実現するソフト開発・運用の変革と自動化 手順書ベースの運用の課題 まずここに注目  運用中のソフトウェアの変更に時間/コストがかかる – ビジネス要件とそれを支える技術、双方の変化の速度が上がり、アプ リケーション、ミドルウェアなどの頻繁な更新が必要に。 – しかしながら、ソフトウェア変更に伴う手順書の書き換え、検証、手 順変更の周知徹底などに時間とコストがかかり、変更を気軽に行うわ けにはいかず・・・。  環境の複雑化への対応が困難 – 仮想化によりシステム環境が複雑化し、動的な変更・変化も可能に。 – しかしながら、それに伴う運用手順も複雑になり、作業時間が長くな る、作業ミスによる問題発生が起きやすくなるなどの課題が・・・。 変化に弱いのが 手順書運用の弱点8 Open Cloud Campus
  9. 9. 運用自動化への道ソフトウェアライフサイクルの観点から
  10. 10. クラウドが実現するソフト開発・運用の変革と自動化 ソフトウェアの変更要求が高まる背景  ビジネス要件の変化と技術の進歩に開発速度が追いつかない現状 要件定義 設計   コーディング テスト 運用 要件定義の際に決めたシステムが・・・ 運用開始時は既に時代遅れに!10 Open Cloud Campus
  11. 11. クラウドが実現するソフト開発・運用の変革と自動化 ソフトウェアの変更要求が高まる背景  開発期間の短縮と継続的なアップデートが必要に。 「継続的インテグレーション」 開発期間の短縮 (CI) の適用 コ コ コ 要 ー 要 ー 要 ー テ テ テ 件 設 デ 件 設 デ 件 設 デ ィ ス ィ ス ィ ス 定 計 定 計 定 計 ン ト ン ト ン ト 義 義 義 グ グ グ 継続的なアップデート 運用 「継続的デリバリー」 の実践11 Open Cloud Campus
  12. 12. クラウドが実現するソフト開発・運用の変革と自動化 参考書籍12 Open Cloud Campus
  13. 13. クラウドが実現するソフト開発・運用の変革と自動化 継続的デリバリーの課題は開発と運用の「プロセスの断絶」 この問題の根本原因は 変化が激しくて 何でしょうか? 内容を伝えきれない コ 要 ー テ 件 設 デ 開発環境と本番環境の違いが ィ ス 定 計 不明でデプロイ時に ン ト 義 何がおきるが分からない グ 「越えられない壁?」 受け入れテストの 運用 時間が足りない 内容が分からないから サービスを止めずに 運用手順書が更新できない 更新する方法が分からない13 Open Cloud Campus
  14. 14. クラウドが実現するソフト開発・運用の変革と自動化 CIプロセスにおける「マシン」と「人間」の役割分担 マシンと人間の役割を明確に 分離したプロセスがCIの肝 CIツール コード リポジトリ ビルドとテストの自動実行 マシンの世界 結果レポートの作成 コード コミット 人間の世界 テスト結果、コード分析結果 カバレッジの推移など レポートのフィードバック 開発者14 Open Cloud Campus
  15. 15. クラウドが実現するソフト開発・運用の変革と自動化 開発、引き継ぎ、運用プロセスの現状イメージ 開発(作る)プロセス 運用(使う)プロセス 運用引き継ぎ マシンの世界 人間の世界 完成したものを人手で 検証・修正・再配置15 Open Cloud Campus
  16. 16. クラウドが実現するソフト開発・運用の変革と自動化 開発、引き継ぎ、運用プロセスの現状イメージ 開発(作る)プロセス 運用(使う)プロセス 運用引き継ぎ マシンの世界 作った環境と使う環境が 異なるので品質担保が困難 人間の世界 マシンの役割と人間の役割が プロセス的に分離できていない16 Open Cloud Campus
  17. 17. クラウドが実現するソフト開発・運用の変革と自動化 開発、引き継ぎ、運用プロセスの理想イメージ 開発(作る)プロセス 運用引き継ぎ 運用(使う)プロセス マシンの世界 人間の世界 運用引き継ぎにおける自動化を追求して、 ソフトウェアとインフラのライフサイクルを統合することが、 「いけてる自動化」の第一歩17 Open Cloud Campus
  18. 18. クラウドが実現するソフト開発・運用の変革と自動化 自動化の追求で開発と運用の断絶を乗り越える  運用引き継ぎのプロセスを可能な限り自動化して、「デプロイ」の苦痛を 軽減することが「継続的デリバリー」実現の鍵 1. デプロイ処理を自動化して、開発、テスト、本番、すべて同じプロセスでデ プロイしたアプリケーションを使用する。 ⇒ 環境差異を小さくして、「環境の違いで起きる問題」の発生を防止 2. 受け入れテストなど、運用引き継ぎに伴う作業を可能な限り自動化して、さ らには、既存サービスに影響を与えずに自動更新する仕組みを導入する。 ⇒「安全で容易、そして頻繁なデプロイ」を可能に 3. 運用業務を手順書による手作業から、プログラムによる自動化に置き換え。 ⇒ 手順書のメンテナンスと運用作業の負荷を軽減 開発と運用を一体化したプロセスを策定して、 ソフトウェアとインフラのライフサイクルの統合を 実現することが最終的な目標(いわゆる「DevOps」)18 Open Cloud Campus
  19. 19. クラウドが実現するソフト開発・運用の変革と自動化 自動化の追求で開発と運用の断絶を乗り越える  運用引き継ぎのプロセスを可能な限り自動化して、「デプロイ」の苦痛を 軽減することが「継続的デリバリー」実現の鍵 1. デプロイ処理を自動化して、開発、テスト、本番、すべて同じプロセスでデ プロイしたアプリケーションを使用する。 ⇒ 環境差異を小さくして、「環境の違いで起きる問題」の発生を防止 2. 受け入れテストなど、運用引き継ぎに伴う作業を可能な限り自動化して、さ らには、既存サービスに影響を与えずに自動更新する仕組みを導入する。 今回は、まずは この部分のツールに注目 ⇒「安全で容易、そして頻繁なデプロイ」を可能に 3. 運用業務を手順書による手作業から、プログラムによる自動化に置き換え。 ⇒ 手順書のメンテナンスと運用作業の負荷を軽減 開発と運用を一体化したプロセスを策定して、 ソフトウェアとインフラのライフサイクルの統合を 実現することが最終的な目標(いわゆる「DevOps」)19 Open Cloud Campus
  20. 20. アプリケーションデプロイ自動化の現状
  21. 21. クラウドが実現するソフト開発・運用の変革と自動化 アプリケーションデプロイにおける管理対象 エクセルシートに DVDメディアから エクセルシートに 手書き入力 手動インストール したがって設定 手作業による デプロイ パラメータシート記述 OS導入・環境設定 アプリケーション / 作業手順書作成 導入・環境設定 環境構築における管理対象 環境設定(Config) OS・アプリケーションの構成管理 アプリケーションプログラム アプリケーションの導入管理 インフラ環境 仮想マシン構成、OSイメージなどの管理 データ21 Open Cloud Campus
  22. 22. クラウドが実現するソフト開発・運用の変革と自動化 アプリケーションデプロイ自動化の現状  自動化の3大パターン 1. 仮想アプライアンス方式 • アプリケーション導入済みの環境をマシンイメージ化して利用。 2. JEOS(Just Enough OS)方式 • 最小限のOS環境をマシンイメージ化して利用。アプリケーションの導入・設定を自動化。 3. 自動インストール方式 • OSのインストールからアプリケーションの導入・設定まで、すべての作業を自動化して適用。 環境構築における管理対象 環境設定(Config) 1. すべてをイメージ化して利用 アプリケーションプログラム 2. インフラ環境をイメージ化して利用 インフラ環境 3. イメージ化せずにすべてを自動構築 データ22 Open Cloud Campus
  23. 23. クラウドが実現するソフト開発・運用の変革と自動化 各パターンの特徴 手軽に利用できるが  仮想アプライアンス方式 柔軟性にかける 「環境の塩漬け方式」 – メリット • テンプレートから仮想マシンを起動するだけで簡単に利用できる。 – デメリット • デプロイ時のカスタマイズが難しい。 • テンプレートの修正は手作業となり、メンテナンスに手間がかかる。 • クラウドごとに対応するテンプレートの作成が必要。 カスタマイズが容易だが 大掛かりな仕掛けが必要な  自動インストール方式 「自動生産方式」 – メリット • 自動化の大元となる設計ファイルを修正することで、デプロイ時のカスタマイズや 構成のアップデートが容易に行える。 – デメリット • 自動化ツールの整備が必要。 • テンプレート起動が前提の環境には適用できない。 • テンプレート方式に比べると、デプロイ処理に時間がかかる。23 Open Cloud Campus
  24. 24. クラウドが実現するソフト開発・運用の変革と自動化 各パターンの特徴 事前準備した環境から カスタマイズを行う  JEOS (Just Enough OS) 方式 「サンドイッチ方式 (?)」 – メリット • テンプレート起動が前提の環境でも利用可能。 • デプロイ時にアプリケーションのカスタマイズが可能。 – デメリット • OSバージョンアップなどは、新規テンプレートの作成が必要。 • クラウドごとに対応するOSテンプレートの作成が必要。 • アプリケーションの構成によってはデプロイに時間がかかる。 ※ 自動インストールとJEOSの組み合わせについて – JEOS方式のデメリットを回避する方法として、JEOS作成の自動化があります。共通の 設定ファイルから、使用する環境(クラウド)ごとに同一内容のJEOSを事前に(自動 インストールで)作成して利用します。 – 複数環境(クラウド)に同一構成のアプリケーション環境を自動構築できるメリット があります。 • 後ほど紹介するAeolusでは、この方式を採用しています。24 Open Cloud Campus
  25. 25. クラウドが実現するソフト開発・運用の変革と自動化 アプリケーションデプロイ自動化ツールの例  個別ツールの組み合わせ – KickStart, virt-install, Oz, etc... • OS導入、JEOSイメージ作成の自動化 – Puppet, Chef, etc... • アプリケーション導入、環境設定の自動化 これらツールの一部を この後のセッションで  統合化された自動化ツールの例 デモと一緒に紹介します – Aeolus Conductor (Red Hat CloudForms) – Amazon Cloud Formation – Dell Crowbar – Dodai Project – juju – VMware vCloud Director – etc...25 Open Cloud Campus
  26. 26. サービス継続性から見る将来の自動化
  27. 27. クラウドが実現するソフト開発・運用の変革と自動化 サービス継続性における自動化の役割  サービス継続性の観点で適用できそうな自動化のエリア – 既存サービスを停止せずに新規アプリケーションを自動デプロイ – 障害発生時にサービスを自動復旧 – キャパシティ不足時にシステムを自動増強 デプロイ アプリケーション 監視 予防保守 OS 障害対応 データ バックアップ システム増強27 Open Cloud Campus
  28. 28. クラウドが実現するソフト開発・運用の変革と自動化 サービスを停止せずにバージョンアップする手法の例  ブルーグリーン・デプロイメント – 本番環境を2種類用意して、旧バージョンと新バージョンを並行稼働させながら、切り替 える手法。新バージョンに問題が起きた場合は、すぐに旧バージョンにフォールバック が可能。 • クラウドでインフラ準備が自動化できるようになると、コスト的にも現実性がでてくる。 – ユーザデータの複製などが課題。 • アプリケーションのアーキテクチャから見直しが必要。  カナリアリリース – 一部のユーザのみに新機能を提供して、問題がなければ、全ユーザに新機能を開放する – 機能レベルで小さなバージョンアップを繰り返すことが前提。機能変更に伴うデータ構 造の変化の取り扱いが難しい。(とくに新機能使用ユーザと未使用ユーザは同じデータ を共有する場合) • アプリケーションのアーキテクチャから見直しが必要。28 Open Cloud Campus
  29. 29. クラウドが実現するソフト開発・運用の変革と自動化 障害復旧の観点での自動化  自動化による「障害復旧」の発想転換 – アプリケーション環境のデプロイが完全自動化されているのであれば、「壊れ た環境を修復する」よりは、「新しい環境を作り直す」方が安上がり。(単純 なインフラ障害は、すべて再デプロイで回復してしまう。) • 現実には、「再デプロイ」で復旧する問題かどうかの判断が難しい場合もあるが、復 旧オプションの一つとしては検討の価値あり。 – アプリケーション実行環境とユーザデータを明確に分離して、再デプロイが データに影響しないことが必要。 • AWSなどは、この方向性を示唆するクラウドインフラ。(インスタンスが停止したら インスタンス上のデータは全て消える。永続データは、EBS、S3への外部保存が前 提。) いずれにしても、ソフトウェア自体が自動化を前提とした 機能・アーキテクチャを持たないと実現は難しい29 Open Cloud Campus
  30. 30. クラウドが実現するソフト開発・運用の変革と自動化 ソフトウェア開発における自動化との融合  ソフトウェア開発では、既にさまざまな自動化が利用されています。 – 継続的インテグレーション実現の観点で、ビルド/テスト/エラーレポート作成の自動化 – 品質向上の観点で、コードインスペクションの自動化、形式手法適用の自動化など – その他には、DSLによるコードの自動生成など ⇒ 基本的には「機能要件の確実な提供」を目指したもので、「非機能要件の実現」という    観点は多くありません。  今後、運用の自動化が進むと、ソフトウェア開発の段階から「自動化されたイン フラとの連携」を想定した手法が生まれるのではないでしょうか? – 今まで「非機能要件」と思っていたものが、ソフトウェアで制御可能な「機能要件」に 変わる可能性はないでしょうか?30 Open Cloud Campus
  31. 31. クラウドが実現するソフト開発・運用の変革と自動化 最後に:継続的デリバリーのその先へ・・・  継続的デリバリー デプロイ手順 テスト手順 自動実行可能な手順 (ただし手順自体は人間が作成) 開発 運用  継続的??? デプロイ手順 テスト手順 環境変化に応じて 手順そのものを自動生成 開発 運用31 Open Cloud Campus
  32. 32. オープンクラウド・キャンパスクラウドの自動化とソフトウェア開発の 未来を一緒に考えて行きましょう! 中井悦司 Twitter @enakai00

×