プロシン54発表資料

1,549 views

Published on

第54回プログラミングシンポジウムでの発表スライド

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,549
On SlideShare
0
From Embeds
0
Number of Embeds
74
Actions
Shares
0
Downloads
11
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

プロシン54発表資料

  1. 1. システム系ソフトウェア、クラウドを中心としたプロフェッショナルサポート集団へ Kompira:シンプルで軽量なIT運用自動化プ ラットフォーム フォースクーナ株式会社 服部健太・溝江真也・三角正樹
  2. 2. システム系ソフトウェア、クラウドを中心としたプロフェッショナルサポート集団へ ITシステムの運用管理とは システムの障害監視、リソース監視 実際の業務は 障害対応、影響範囲の調査、復旧作業 多岐にわたる 変更管理、構成管理 データのバックアップ DNS、FW、LBなどの各種設定変更 Webコンテンツファイル更新 ユーザーアカウントの追加、設定変更 SSL証明書の更新 セキュリティパッチの適用 OS、ミドルウェア、アプリケーションのインストール、バージョン アップ ユーザーからの問い合わせの対応 ・・・             2 第54回プログラミング・シンポジウム 2013/1/12
  3. 3. システム系ソフトウェア、クラウドを中心としたプロフェッショナルサポート集団へ 運用現場の実情 webサイトの目視チェックを毎日行っている SSL証明書の更新が重なり、毎日更新作業で終わってしまう webサーバへのコンテンツ配布を手作業でやっている サーバリソースの閾値越えアラートが発生した際にtopコマン ドの値をコピペして顧客に報告メールを送っている ディスク使用率の閾値越えのアラートが発生した際に過去の ファイルを削除して、ディスクスペースに空きを作っている 設定の変更依頼が頻繁にあり、設定やテストの為に人が1~2 人、常にはりつきで作業している ミドルウェアのバージョンを調べ、古かったら手作業でバー ジョンアップをやっている システムやサーバ毎に担当が分かれており、どこにどんな バッチがあるか管理できていない 担当者変更やシステム移行の際、調査から始めなければなら ない          3 第54回プログラミング・シンポジウム 2013/1/12
  4. 4. システム系ソフトウェア、クラウドを中心としたプロフェッショナルサポート集団へ 手順書の例(弊社の障害対応フロー) 顧客によって対応手順が 微妙に変わる場合もある 4 第54回プログラミング・シンポジウム 2013/1/12
  5. 5. システム系ソフトウェア、クラウドを中心としたプロフェッショナルサポート集団へ オペレーションミスによる障害事例 ファーストサーバ事故(2012年6月20日)     担当者が長年使用してきた独自プログラムで更新作業を実施 プログラムの修正ミスにより、誤ってファイル削除 約5700件の顧客データを焼失 全日空座席予約システム事故(2012年11月28日)    営業担当者が誤って座席予約情報を削除 2013年2月搭乗分の国内線航空券の約10万6000席が取り消し Amazonクラウド障害(2012年12月24日)     5 メンテナンス作業中にELB(Elastic Load Balancer)のステート データを誤って削除 削除に気付かず、しばらく障害が拡大 NetflixのWebサイトや動画の再生に問題 第54回プログラミング・シンポジウム 2013/1/12
  6. 6. システム系ソフトウェア、クラウドを中心としたプロフェッショナルサポート集団へ 運用現場の問題点 問題点1:高負荷    運用現場は、業務負荷が高くて困っている 「運用」の守備範囲が不明確で、「なんでも運用」、「運用で カバー」に陥りがち。結果として、数多くのタスクが現場に落 ちてくる 問題点2:属人的    運用現場は、属人的で、暗黙知が多くて困っている タスクやフローが多岐にわたるため、ドキュメントの作成や更 新が追いつかない。結果として、現場の業務知識が属人化する 問題点3:費用対効果が見えない    6 運用現場は、費用対効果が見えにくくて困っている 開発に比べて、利益につながるアウトプットが見えにくいた め、コストカットの対象となりやすい。結果として現場の士気 波多野:見えない「運用」 - 疲弊する運用現場、より要約 が下がる 第54回プログラミング・シンポジウム 2013/1/12
  7. 7. システム系ソフトウェア、クラウドを中心としたプロフェッショナルサポート集団へ Kompiraの目指すところ 属人化 手順化 手動 自動化 混沌 整頓 バラバラ 連携 見えない 見える化 Kompiraを使うことで運用現場をハッピーにしたい 7 第54回プログラミング・シンポジウム 2013/1/12
  8. 8. システム系ソフトウェア、クラウドを中心としたプロフェッショナルサポート集団へ 統合運用管理ツール ベンダー製ツール        日立JP1 IBM Tivoli 富士通 SystemWalker NEC WebSAM HP Operation Orchestration NetIQ Aegis オープンソース    Hinemos Crane 大手ベンダー製ツールは大変高価なのでなかなか手が出ない 8 第54回プログラミング・シンポジウム 2013/1/12
  9. 9. システム系ソフトウェア、クラウドを中心としたプロフェッショナルサポート集団へ システム運用管理に使えるOSS 監視ツール系       Nagios Zabbix Icinga Cacti Pandora FMS 問題管理系    Redmine Trac  構成管理系    デプロイメント系    Chef Puppet Fabric Capistrano バックアップ系   Amanda Mondo Rescue ツール間の連携は人手で行うため効率化に限界がある 9 第54回プログラミング・シンポジウム 2013/1/12
  10. 10. システム系ソフトウェア、クラウドを中心としたプロフェッショナルサポート集団へ オペレータの典型的な業務 作業記録 情報収集 設定変更 ログファイル取 得 スクリプト実行 手順書 オペレータ エスカレーション 報告メール送信 手順書にしたがって対象システムにログインし、コマンド実行やWeb操作を 行う 10 第54回プログラミング・シンポジウム 2013/1/12
  11. 11. システム系ソフトウェア、クラウドを中心としたプロフェッショナルサポート集団へ Kompiraのコンセプト • 運用管理に求められる機能は多岐にわたるため、これをそのまま 実装していくと肥大化ソフトウェアが出来上がる • 既存ツールをなるべく利用し、連携自動化処理の部分に集中する サーバー監視 Nagios, Zabbix, ・・・ インシデント管理 作業記録管理 構成管理 Chef, Puppet, ・・・ 変更管理 Subversion, ・・・ Kompira 連携 連携 記述 連携 記述 記述 ・・・ ジョブ管理 資産管理 GLPI, ・・・ 連携処理基盤 レポート作成 ログ管理 11 問題管理 Redmine, Trac,・・・ ナレッジベース KBPublisher, Wiki, ・ ・・ 第54回プログラミング・シンポジウム 2013/1/12
  12. 12. システム系ソフトウェア、クラウドを中心としたプロフェッショナルサポート集団へ 実現に向けた課題 シンプルで一貫した連携処理をどうやって提供するか?  連携処理のための自動化手順をどうやって記述するか?    様々なツールと連携するにはどうする?    独自のDSLであるジョブフロー言語を用いて記述 ジョブフローはリモートマシン上で実行するコマンド列を指定 する 外部から非同期に発生するイベントをチャネルから統一的に受 信 何らかの並行処理を扱えるようにする ツールからのデータやコマンドの実行結果をどう扱う か?  12  オブジェクトストレージを提供し、ジョブフローから統一的に アクセス可能にする 第54回プログラミング・シンポジウム 2013/1/12 そこで扱うデータの型はユーザーが独自に定義できるようにす
  13. 13. システム系ソフトウェア、クラウドを中心としたプロフェッショナルサポート集団へ 自動化手順の記述方式の比較 記述方式 記述容易性 NonPG/PG 実装コス ト 機能性 並行処理 の導入 しやすさ 保護 しやすさ グラフィカル ◎/× × ○ ◎ ◎ 既存スクリプ ト言語 ×/◎ ◎ ◎ × × 内部DSL △/◎ ○ ◎ × × 外部DSL ○/○ ○ ○ ◎ ◎  既存スクリプト言語や内部DSLの場合、インタプリタに まで手を加えて、並行処理の導入やユーザーコードから の保護を実現するのは大変 実装コストと並行処理、保護性を重視し、 独自の外部DSL方式を採用 13 第54回プログラミング・シンポジウム 2013/1/12
  14. 14. システム系ソフトウェア、クラウドを中心としたプロフェッショナルサポート集団へ グラフィカル vs テキスト 大手ベンダー製の グラフィカルなジョブ 定義 Kompiraのテキストに よるジョブフロー定義 { fork | <イベント待ち1> <イベント待ち2> } -> [前処理] -> { fork | [処理1] -> [処理2] [処理A] -> [処理B] } -> [後処理] 14 第54回プログラミング・シンポジウム 2013/1/12
  15. 15. システム系ソフトウェア、クラウドを中心としたプロフェッショナルサポート集団へ ジョブフロー記法  特長      ジョブ/ジョブフロー名に、日本語(utf-8)が使える 矢印記号(->, =>, ->>, =>>)でジョブをつないでいく記 法 ジョブ実行の処理の流れを把握しやすい 並行処理、チャネルによるイベントの待ち合わせ ジョブ:ジョブフローにおける処理の単位      15 コマンド実行:[‘cat /etc/redhat-release’] ジョブフローの呼び出し: [/障害管理/インシデント新規作成: 名前=‘new’] イベント待ち:<./監視アラートチャネル> 変数の代入:[URL=‘http://kompira.jp’, パス=‘/foo/bar’] 組み込みジョブ:print(‘Hello’), mailto(addr, title, body)な ど 第54回プログラミング・シンポジウム 2013/1/12
  16. 16. システム系ソフトウェア、クラウドを中心としたプロフェッショナルサポート集団へ リモートコマンドの実行  実行コンテクストを特殊変数で指定し、コマンドジョブ を実行する   __host__, __user__, __password__, __dir__, __sudo__など コマンドの実行結果は特殊変数に格納される  $RESULT   $STATUS   コマンド実行時の標準出力結果が格納される コマンド実行の終了ステータスが格納される 例: [__host__ = ‘192.168.213.33’, __user__ = ‘kompira’, __password__ = ‘secret’ ] -> [‘hostname’] -> print($RESULT) 16 第54回プログラミング・シンポジウム 2013/1/12
  17. 17. システム系ソフトウェア、クラウドを中心としたプロフェッショナルサポート集団へ 結合子(矢印)の意味 コマンド実行のエラーチェックをいちいち記述するのは 煩雑 結合子 -> リモートコマンド 異常終了時 abort リモートログイン 失敗時 abort => 継続 abort ->> abort 継続 =>> 継続 継続
  18. 18. システム系ソフトウェア、クラウドを中心としたプロフェッショナルサポート集団へ 基本的な制御構文  ifブロック { if x > 0 | then: [./処理1] else: [./処理2] }  caseブロック { case $RESULT | ‘*OK*’: [./処理OK] ‘*NG*’: [./処理NG] }  whileブロック { while x == 0 | [./処理] -> [./処理2] }  forブロック { for host in ./サーバ一覧 | [./ログファイル取得: host] } 18 第54回プログラミング・シンポジウム 2013/1/12
  19. 19. システム系ソフトウェア、クラウドを中心としたプロフェッショナルサポート集団へ 外部イベントの取得 障害発生のアラート、メール受信、SNMPトラップな ど、非同期に発生する外部イベントは、チャネルを通じ て統一的に受信 例:メール受信したら、本文の解析処理を行う <./メール受信> -> [./メール解析: $RESULT]  choiceブロック  複数種類のイベントを待つことも可能 { choice | <./メール受信> -> print(‘メールを受信しました’) <./SNMPトラップ受信> -> print(‘SNMPトラップが発生しました’) }  19 第54回プログラミング・シンポジウム 2013/1/12
  20. 20. システム系ソフトウェア、クラウドを中心としたプロフェッショナルサポート集団へ 並行処理のサポート  forkブロック プロセスを並行に処理する  メール送信と障害対応を並行して処理する例: { fork | [./メール送信] [./障害対応処理] } -> print(‘完了しました’)   pforブロック 同じ処理を一斉に実行する  サーバ一覧にあるサーバに対してホスト情報を一斉に取 得 { pfor host in ./サーバ一覧 | [./ホスト情報取得: host] -> print($RESULT) }  20 第54回プログラミング・シンポジウム 2013/1/12
  21. 21. システム系ソフトウェア、クラウドを中心としたプロフェッショナルサポート集団へ オブジェクトストレージ • 様々なツールとの連携には、やりとりするデータを共 通の領域に格納する必要がある • UnixライクなファイルシステムをWebアプリの上に実 装  Kompiraが扱う様々な種類のオブジェクトを階層構造に 格納       ジョブフローからは、相対パス、絶対パスでオブジェク トにアクセス可能 ユーザー毎のパーミッション制御も実装   ジョブフロー ユーザーアカウント情報 機器情報 などなど 特定のユーザーやグループからアクセスできないオブジェクト URLとオブジェクトパスは自然に対応 21 第54回プログラミング・シンポジウム 2013/1/12
  22. 22. システム系ソフトウェア、クラウドを中心としたプロフェッショナルサポート集団へ ユーザーによる型定義  ユーザーが型オブジェクトを定義することで新たな 種類のオブジェクトが作成できるようになる   カスタマイズが容易にできる 例:連絡先情報を新たに定義したい フィールド名 フィールド種別 name 氏名 String address 住所 Text phone 電話番号 PhoneNumber email 22 フィールド表示名 Eメール EmailAddress 第54回プログラミング・シンポジウム 2013/1/12
  23. 23. システム系ソフトウェア、クラウドを中心としたプロフェッショナルサポート集団へ Kompiraシステム構成 Kompiraサーバをイント ラ内部に設置する場合、 ジョブマネージャは Kompiraサーバ上で動作 可能 リモートコマンドの 実行にsshを用いるた め、エージェント不 要 23 第54回プログラミング・シンポジウム 2013/1/12
  24. 24. システム系ソフトウェア、クラウドを中心としたプロフェッショナルサポート集団へ ライセンスファイル発行業務の自動化  弊社管理部社員は、Kompiraのライセンス申請書を 受け取ると、ライセンスファイルを発行し、顧客に 送付する業務を行う 弊社内のLinuxサーバにログインする 2. 有効期限やノードIDなどを引数に与えて所定のプログ ラムを実行する 3. この際、ライセンスファイルデータが標準出力に出力 されるので、適切なファイルにリダイレクトして保存 する 4. 保存したファイルを自分のPCにコピーする 5. 作成されたライセンスファイルをメールに添付して、 顧客に送付する ノンプログラマにとってLinuxサーバにログインし、コマ ンドを実行し、出力結果のファイルを取得してもらうの はハードル高い 1. 24 第54回プログラミング・シンポジウム 2013/1/12
  25. 25. システム系ソフトウェア、クラウドを中心としたプロフェッショナルサポート集団へ その他の使用例  リリース用バイナリパッケージの作成 1. 2. 3.  Bitbucketからソースコードをexport ビルドコマンド実行し、tarボール作成 生成したファイルをアップロード 公式ウェブサイトのコンテンツ更新 1. 2. 3. 4. 5. 25 デザイナが所定のディレクトリにコンテンツをアップ ロード アップロードされたコンテンツをStaging環境に展開 上長に内容確認依頼のタスクを送信 OKなら、本番サイトをバックアップし、ステージング の内容を本番サイトにコピー ステージング環境を削除 第54回プログラミング・シンポジウム 2013/1/12
  26. 26. システム系ソフトウェア、クラウドを中心としたプロフェッショナルサポート集団へ サーバ障害の自動対応の例 Administrator 1.Webサーバの応答に異常発生 2.監視サーバからアラートがあが る 3.Kompiraサーバでアラートを受信 4.KompiraがWebサーバにログイン し、 プロセス調査 5.Kompiraが障害を確認、関係者に 障 害メール送信 6.Kompiraがプロセス再起動 7.Kompiraが復旧確認 8.Kompiraが関係者に復旧メール送 信 26 Kompira 8 5 3 6 7 監視システム 4 2 1 監視対象システム 第54回プログラミング・シンポジウム 2013/1/12
  27. 27. システム系ソフトウェア、クラウドを中心としたプロフェッショナルサポート集団へ どこまで自動化すべきか? 自動化によって削減されるコスト > コスト  自動化に向いているもの    自動化にかかる 手順化が簡単(単純な規則にもとづく作業) 何度も繰り返し行う作業 自動化に向いていないもの   手順化できない、手間が大変(高度、複雑な判断が必要な作 業) 一回ポッキリの作業 人間向きの 高度な作業 単純な 定型処理 ・・・ ・・・ Kompira 27 オペレータ Kompira オペレータ 第54回プログラミング・シンポジウム Kompira 2013/1/12
  28. 28. システム系ソフトウェア、クラウドを中心としたプロフェッショナルサポート集団へ 期待できる効果 弊社監視センター業務の内訳 1次障害対応 定常運用 20% その他 19% サービス改善 1次障害対応 45% 16% 定常運用 その他 サービス改善 自動化に適した作 業 典型的なMSPでは、最大で60%から70%程度の効率化が 可能 28 第54回プログラミング・シンポジウム 2013/1/12
  29. 29. システム系ソフトウェア、クラウドを中心としたプロフェッショナルサポート集団へ 今後の課題  ウェブブラウザ操作の自動化   Windows対応   編集はテキストベース、表示は箱と矢印でグラフィカル に ジョブフローのテストをどうするか?   WMI、WinRMなどを使う? ジョブフローの可読性はどうなのか?   Selenium等との連携? 現状はステップ実行機能のみサポート 自動化に頼り切ると、Kompira障害時にお手上げ  29 難しい問題ではあるが、Kompira障害を想定した防災訓 練などによってオペレータのレベルを維持することは可 第54回プログラミング・シンポジウム 2013/1/12 能?
  30. 30. システム系ソフトウェア、クラウドを中心としたプロフェッショナルサポート集団へ まとめ  ITシステム運用管理のための基盤ソフトKompiraを 開発     様々な管理ツールと連携し、統合するための基盤ツール UnixライクなファイルシステムをWeb上に実装 オペレータはウェブブラウザからジョブの実行、結果を 取得 独自DSLのジョブフロー言語によって自動化処理を記述 Kompira公式サイト http://www.kompira.jp 30 第54回プログラミング・シンポジウム 2013/1/12

×