あなたの側で、あなた以上に考える。
AWSでシステム構築工数を1/10にしつつ
高品質化も実現した枠組みのご紹介
1
あなたの側で、あなた以上に考える。Agenda
1. 自己紹介
2. スカイアーチネットワークスのご紹介
3. AWSを利用し分かった課題
4. システム構築の工数削減/品質向上に利用した枠組み
– AWS CloudFormation
– Chef
– Serverspec
– Zabbix
5. SkyHopper デモ
6. DevOps(Infrastructure as Code)の社内展開方法
7. まとめ
2
あなたの側で、あなた以上に考える。
自己紹介
あなたの側で、あなた以上に考える。自己紹介
20年程前
電子工作少年
N88-BASIC パラレルポート経由でLチカ、ラジコンを動かしたり…
現在
Raspberry PiでLチカ、R2D2をJuliusで日本語対応させて動かしたり…
会社では様々な角度から日々のサーバ管理業務にまつわる
業務効率化、自動化、新規サービス開発に取り組んでおります。
株式会社スカイアーチネットワークス
運用自動化責任者 神津 崇士 (こうづ たかし)
tktk19
http://kouzu.info
あなたの側で、あなた以上に考える。自己紹介
好きなAWSサービス:Amazon API Gateway
あなたの側で、あなた以上に考える。
会社紹介
あなたの側で、あなた以上に考える。会社紹介
7
サバカン屋
(サーバー管理)
あなたの側で、あなた以上に考える。
AWSを利用し分かった課題
突然ですが
AWSのマネジメントコンソールを使っていて
不便に思った事はありませんでしょうか??
また、ターミナルで毎回同様のコマンド操作に飽き飽きされて
ませんか?
あなたの側で、あなた以上に考える。
AWSを利用し分かった課題
他にもEBS, Security Group, Key Pair…
あなたの側で、あなた以上に考える。
AWSを利用し分かった課題
最初は操作を覚えるのが楽しかった
マネジメントコンソール/ターミナル操作ですが、ふと思い返すと…
繰り返し作業が多く (特に同様のシステム作成が多いと)
クラウド化のメリットを活かしきれていない??
•前にも見たようなシステム構成だなぁ…
•作業対象インスタンスどれ!? EBSどれ!?
•セキュリティグループ都度作成…
•RDSのパラメータグループ都度設定…
•クラウド利用手順書を作成したが、当時とマネジメントコンソールが違いすぎる!?
•俺は生涯に何回 yum install を打つのだろう
•サーバ状態確認、Listenポートは 80, 443, 3306…
あなたの側で、あなた以上に考える。
AWSを利用し分かった課題
そのように感じた貴方は
AWSマネジメントコンソール及び
ターミナルのみでのシステム運用
卒業です!
あなたの側で、あなた以上に考える。
AWSを利用し分かった課題
卒業後の進路として
独断ではございますが、弊社OSS SkyHopperで利用しているAWSのサービス
並びに各種OSSを紹介させて頂きます。(Infrastructure as Codeを実践)
12
あなたの側で、あなた以上に考える。AWS CloudFormation 一括でリソースコレクションを管理
• JSONフォーマットのTemplateファイルを元にインフラ作成が可能です
• Stackという枠の中に各種AWSリソースが作成されます
• パラメータを埋め込めるのでインスタンスサイズや許可IPアドレス等々
テンプレート利用時に指定が可能です
Template
Infrastructure
13
あなたの側で、あなた以上に考える。AWS CloudFormation 一括でリソースコレクションを管理
動作するテンプレート作成には試行錯誤が必要ですが
インフラストラクチャ設計のコード化が可能です。
※JSONファイルの編集には Atom Editorが お薦めです。
14
あなたの側で、あなた以上に考える。Chef でサーバの構成管理
• 構成管理ツールの原則に沿ったシステム自動構築のためのフレームワーク
• 構成管理ツールの原則の中で最も重要な原則
冪等性(べきとうせい) - ある操作を繰り返しても結果が同じ
• サーバの状態定義をRubyで記述出来る
あなたの側で、あなた以上に考える。Chef でサーバの構成管理
package ‘httpd’ do
action :install
end
シェルスクリプトで記載した場合
台本を書く
if ! rpm -qa | grep httpd ; then
yum -y install httpd
fi
Chefを利用した場合
結末だけを書く
httpdパッケージがインストールされていな
ければ、httpdをインストールする
パッケージ httpd がインストール
されている状態
Cookbookを作成する事でOS/ミドルウェア周りの
インストール/設定手順をコード化する事が可能です。
あなたの側で、あなた以上に考える。Chef でサーバの構成管理
2011年1月より2015年9月のGoogleトレンド結果
あなたの側で、あなた以上に考える。serverspecでサーバ状態をテスト
• テスト駆動インフラ/インフラCIを実現するためのフレームワーク
• 国内で開発され開発者の方自ら本を執筆している
• テスト対象のサーバに対してSSHログインし実行結果を確認するというシン
プルなアーキテクチャであるため、エージェントレスで運用が可能
あなたの側で、あなた以上に考える。serverspecでサーバ状態をテスト
describe service(‘httpd’), :if => os[:family] == ‘redhat’ do
it { should be_enabled }
it { should be_running }
end
...
describe port(80) do
it { should be_listening }
end
...
describe command(‘curl http://169.254../meta/instance-type') do
its(:stdout) { should match /t2.small/ }
end
#サービス httpdの自動起動がOnである
#サービス httpdが起動中である
#port 80がListen状態である事
#インスタンスタイプがt2.smallである事
導入からサンプルテスト実施まで5分あれば十分です!
正となるサーバ状態をテストコード化し繰り返し実施できます
あなたの側で、あなた以上に考える。Zabbixで監視 / 他サービスと連携
• 言わずとしれた…統合監視ソフトウェア
• 見た目のデザイン変更、Agentとの通信に暗号化が利用できるVer3.0がもうす
ぐリリースされる予定 (現在3.0のα版の位置付けの2.5が利用可能です)
• Zabbix 2.0以降 APIに正式対応しプログラム連携を行いやすくなりました
• アラート内容を引数として自前スクリプトを呼び出せるため Twilio / ChatOps
ツール 等との連携もスムーズです
あなたの側で、あなた以上に考える。Zabbixで監視 / 他サービスと連携
# gem install sky_zabbix --version '~> 2.2.0'
# gem install sky_zabbix --version '~> 2.4.0'
あなたの側で、あなた以上に考える。Zabbixで監視 / 他サービスと連携
画面での監視登録はミスの原因となるためコード化しましょう!
require ‘sky_zabbix’
zabbix_url = ’http://your.zabbix.host/api_jsonrpc.php’
client = SkyZabbix::Client.new(zabbix_url)
client.login(’admin’, ’pass’)
puts client.host.create(
host: “UserXXServer2”,
interfaces: [{
type: 1,
main: 1,
ip: "監視対象サーバIP”,
port: 10050,
useip: 1
}],
groups: [
groupid: "2", # グループID、ここでは「Linux Servers」を指定
]
)
あなたの側で、あなた以上に考える。SkyHopper
開発の目的: お客様の継続的インテグレーションを加速出来る体制を整えるため
に「より早く」「より確実に」パターン化されたサーバの構築、運用を実施する
手段: APIやDevOpsツールを組み合わせシームレスに連携する事で、AWSマネ
ジメントコンソールに入らない、ターミナルに接続しない事を目標に作成を進め
ております。
あなたの側で、あなた以上に考える。SkyHopper
デモ
あなたの側で、あなた以上に考える。SkyHopper の今後
• 2015.09.08 (ver 1.0.0)
– MFA対応, Zabbix監視のTemplate対応, EBS Snapshot取得機能
• 2015.12月版
– Chef why-run 機能を搭載!
– ELBの証明書アップロード&管理を簡単に行えるようになりました
– Windowsインスタンス対応
– デザインの統一感をもたせるようにUI改善
※現在公開最新Verで一部機能が動作しないため v1.3 をお使い下さい
今週中には修正予定となります
あなたの側で、あなた以上に考える。
DevOps文化の社内展開
あなたの側で、あなた以上に考える。Infrastructure as Codeの導入
27
導入の障壁を和らげる施策
curl -L http://sky…/sky_init.sh | bash
ワンライナーインストーラ作成で利用されるように
あなたの側で、あなた以上に考える。Infrastructure as Codeの導入
SkyHopper利用に絡めたInfrastructure as Code 教育を
社外・社内で実施しております
あなたの側で、あなた以上に考える。まとめ & 宣伝
• AWSの用意しているAPI・サービスを適切に利用する事で
高品質に、短期間でシステムを作ることが可能となる
• DevOpsツール群を組み合わせて利用する事で上記をさらに加速する事ができる
スカイアーチネットワークスでは下記を実施しております
• SkyHopperの導入支援
• SkyHopperを含めたDevOps入門セミナーの実施
• ご利用のシステムに合わせたCookbook開発
あなたの側で、あなた以上に考える。
30
株式会社スカイアーチネットワークス
〒105-0001 東京都港区虎ノ門4-2-12 虎ノ門4丁目MTビル2号館 5階
TEL 03-6743-1100 FAX 03-6743-1101
info@skyarch.net http://www.skyarch.net
All material contained within this presentation is the confidential
And proprietary information of Skyarch Networks Inc. Copyright 2015.
本資料(添付資料を含む)に掲載されている情報(ページデザイン等のビジュアル
を含む)は全て株式会社スカイアーチネットワークスの知的財産です。
この中の情報を再利用したものも全て株式会社スカイアーチネットワークスの
知的財産権に属します。コンテンツの複製、社外への公開、社内利用への転用
は全て、株式会社スカイアーチネットワークスの許諾を必要とする旨、ご理解を
お願いします。(Copyright 2015)

AWSでシステム構築工数を1/10にしつつ、高品質化も実現した枠組みのご紹介

Editor's Notes

  • #2 本日はAWSでシステム構築工数の大幅削減と高品質化を実現した枠組みと その枠組を利用したオープンソース・ソフトウェアである SkyHopperを紹介させて頂きます。 よろしくお願いします。
  • #3 アジェンダはこのようになっております。 最初に枠組みで利用したサービス/ツールを紹介し 最後にSkyHopperのデモを行わせて頂きます。
  • #5 私は、スカイアーチネットワークスで運用自動化責任者を名乗っております神津と申します。 業務は主に社内ツール開発/SkyHopper/DevOps絡みの受託開発や新サービス立ち上げに関わっております。 個人的な活動、趣味は20年前から変わっておらず、昔はN88BasicでLEDチカチカやモータ制御でラジコンを動かしたりしておりました 最近はRaspberryPiで同様の事を行っております。
  • #6 個人的に最も楽しいのはサブタスクでRaspberryPiと組み合わせて 社内業務進捗やKPIの数値化/見える化を実施しています。 好きなAWSサービスはAmazon API Gatewayです! 様々なAPIをまとめて自作のAndroid アプリでアクセスしたり等とても便利だなぁと感じております
  • #8 私どもはサーバ一筋15年のMSP事業者で御座います。 本日は、なんとこちらの美味しいサバ缶を3缶お持ちしておりますので、最後に弊社サヴァンジェリスト 浅尾よりサバ缶じゃんけんをご用意しております
  • #9 では本題となります 突然ですが AWSのマネジメントコンソールを使っていて 不便に思った事はありませんでしょうか?? 主にAWS上で似たようなシステム構築をすることが多い方かつLAMP環境中心のシステムを想定しております
  • #10 一例と致しまして、マネジメントコンソールを思い返して頂くと、命名規約や社内ルールが浸透していないと このリソースはなんだっけ?という状態に簡単に陥ります。 先ほどもお話にあった内容で、本来であればシステムやサービスという単位で見たい
  • #11 その他の例と致しまして 前にも見たようなシステム構成だなぁ… 作業対象インスタンスどれ!? EBSどれ!? セキュリティグループ都度作成… 利用手順書を作成したが、マネジメントコンソールのアップデートが早過ぎる! サーバ調達は早くなったが、その後の運用は変化が無いという方もいらっしゃるのではないでしょうか? 実際弊社もクラウド導入時期はそうでした
  • #12 そのように感じた方は、卒業と称しまして AWSマネジメントコンソール及びSSH接続の利用頻度を減らす事で 作業工数の削減と作業ミスの削減を行いましょう!というご提案となります。
  • #13 弊社OSS SkyHopperはこちらにアイコン表示されている CloudFormation / Chef / ServeSpec / Zabbix をサーバ構築/運用の枠組みとして シームレスに連携を行えるDevOpsツールとなります。
  • #14 まずはインフラをまとめて作成するCloudFormationの紹介となります JSONフォーマットのテンプレートファイルを作成→AWSに送信する事でインスタンスやRDS、S3バケットを含む一連のリソースをAWS上に構築可能です。 また、テンプレートにパラメータを渡す事が可能なためインスタンスサイズやIPアドレスを指定できるテンプレートを作成する事で 同様の構成の案件にテンプレートを使い回す事が可能です。
  • #15 テンプレートイメージはこちらになります。 EC2 SecurityGroup や EC2 Instanceといった記述の中に設定が記載されております。 気をつけるべき点としては RDS等を含むスタックだと単一リソースでも15分程掛かります また、JSONのSyntaxエラー等は即時通知されるが、他のエラーはあまり通知されずに 途中まで作成した後にロールバックされるケースが多いです 弊社では作成にAtomエディタを利用しています 画面に表示されている画面がスクリーンショットとなりますが Syntaxエラーがわかりやすい色分けで表示されたり、オートインデント機能もあるためお薦めです。 弊社では一部の案件でしか実施できていないため AWSでのインフラ作成時には利用する事をルールにして行く事を考えています。
  • #16 CloudFormationでインフラ作成後は、Chefを用いサーバ内のミドルウェアや設定変更を実施します Chefは構成管理ツールの原則に沿ったシステム自動構築のためのフレームワーク となり、最も重要な原則の中に冪等性(べきとうせい) - ある操作を繰り返しても結果が同じという物が御座います。 これは、Chefがサーバの現状を確認し、必要な作業のみを実行してくれるため、途中で失敗しても繰り返し実行できいずれ正しい状態に収束する という事です、実際にどのような事か例を見てみましょう
  • #17 シェルスクリプトで記載した場合まさしく台本を書く必要がありますが Chefを利用した場合は結末だけを書けばChefがよしなに計らってくれます。 上記例では殆ど差がありませんが 自動起動、インストール後に起動…と処理の追加を行うと シェルスクリプトの場合状態確認や結果判断/例外処理だらけのソースコードとなり 可読性が非常に悪くなります。 弊社では3年程前から基本的に全てのサーバのOSパラメータ設定、弊社管理スクリプトインストール、一部ミドルウェアインストールまでをChefを利用したインストーラで実施しています。 # また、Chefをインストールすると一緒にインストールされる インベントリ収集ツールのohaiコマンド # がかなり便利でこちらの機能を利用して様々なプラットフォームの情報を一元的に取得できます。
  • #18 構成管理ツールは他にも有名所ですとAnsibleやPuppetと言ったものがあります 2011年頃よりどんどん使われており 高機能で少し難しいChefとエージェントレスで簡単なAnsibleという比較で耳にする機会が多いです。 SkyHopper ではマルチテナント対応等の観点からChef Serverを利用しています
  • #19 インフラ作成、サーバ構築までを完了したので次は作成したサーバのテストを行います。 Chef ServerSpecはサーバ状態をテストするDevOpsツールとなります。 Serverspec実行サーバにrubyのgemをインストールすれば良いだけで エージェントレスで導入出来るため始めるにあたり敷居が低いと思います
  • #20 プログラムのイメージはこちらとなります。 パッケージやサービスの状態、ポートのリッスン状態を定義しているテストや コマンドの実行結果を正規表現ルールで確認も行えます。 一部のミドルウェア設定ファイルの内容確認も行えます。 テスト結果を HTMLやJSON形式で出力する事も出来るため 弊社ではJSON形式のテスト結果をパースしエビデンスとして納品ドキュメントに加工しております。 gemのインストール時間も含めて5分でサンプルテストを実行する事が出来ますので 何らかのDevOpsツールの導入をご検討されている方はぜひ利用してみて下さい。
  • #21 当初は2015.05が3.0リリース予定でしたがのびのびに…
  • #22 SkyHopperの内部で利用している、Zabbix API Wrapper の gem を出しております。 2.2 / 2.4 いずれも動作可能なのでご利用下さい。 Zabbixのソースコードから生成しているため全てのAPIに対応しております。
  • #23 こちらの画面はZabbix上にホストを作成する例となります。 APIを利用しないで実施する事によるミスの例 ・作業頻度と量が増えてくるとGUIベースでの実施でミスが起きるケースがありました。 ・複数人でのコンフィグ編集に気付かず設定反映のためリスタート、監視サービスが短時間落ちてしまった事もありました。 APIベースで実施する事で、大量データ投入等も可能になりますし、登録後のテストも実施出来るようになります。
  • #24 開発の目的: お客様の継続的インテグレーションを加速出来る体制を整えるために「より早く」「より確実に」パターン化されたサーバの構築、運用を実施する 手段: APIやDevOpsツールを組み合わせシームレスに連携する事で、AWSマネジメントコンソールに入らない、ターミナルに接続しない事を目標に作成を進めております。
  • #27 DevOps文化の社内展開をどのように行ったか
  • #28 弊社事例となりますが、2,3年前にChefのCookbookを作成したので全体で利用しよう!と Git 等をインストールし、Cookbookをダウンロードした後に、runlistを定義、Chefを実行する事で 半年ほどほぼ利用されない状態でした、、、 Git教育やChef教育を実施したが、あまり状況は変わらず、、、 ですが、ワンライナーインストーラとする事ですぐに使われる出しました 利用されだすまでに半年 → Cookbookの変更を行ってくれるまでに1年程 → ここ半年でGitを利用してくれるようになりました
  • #29 そのような体験を活かし DevOps文化を社内に広めるお手伝いをInfrastructure as Code のトレーニングメニューとしてご用意しております。 内容は先程申し上げた、各種DevOpsツールを利用しハンズオン形式で実際にコードを書き動作する所までをお手伝いする内容となっております。 お気軽にご相談下さい。
  • #30 クラウド事業者の用意している自動化サービスを適切に利用する事で 高品質に、短期間でシステムを作ることが可能となる DevOpsツール群を組み合わせて利用する事で上記をさらに加速する事ができる SkyHopperの利用も是非ご検討下さい! https://github.com/skyarch-networks ※ご利用のシステムに合わせた Cookbook開発やSkyHopperの カスタマイズを行うことも出来ますのでご相談下さい。
  • #31 ご清聴ありがとうございました!