51
わかると楽しい Infrastructure as Code Shohei Kobayashi@srockstyle

わかると楽しいInfrastructure as code

Embed Size (px)

DESCRIPTION

Creators MeetUP Vol22で発表した資料です! 最後にサプライズあるよ! インフラをコードで説明することってなあにっていう話です!

Citation preview

Page 1: わかると楽しいInfrastructure as code

わかると楽しい Infrastructure as Code

Shohei Kobayashi@srockstyle

Page 2: わかると楽しいInfrastructure as code

アジェンダ• 自己紹介

• Infrastructure as Codeって?

• 実例編

• まとめ

Page 3: わかると楽しいInfrastructure as code

• 2005~2011インフラエンジニア

• 2011~2013フロントエンドエンジニア

• 2014~クラウド・サーバエンジニア

Shohei KobayashiTwitter / Facebook / Github : @srockstyle

サーバエンジニア出戻り組です!

Page 4: わかると楽しいInfrastructure as code

Infrastructure as Codeって?Whats?

Page 5: わかると楽しいInfrastructure as code

その前に インフラ管理の歴史

<前提から説明>

Page 6: わかると楽しいInfrastructure as code

LongLongTime Ago..僕が社会人始めた2005年くらい

Page 7: わかると楽しいInfrastructure as code

サーバ管理・構築は手動が当たり前その昔手順書からコマンドを一行一行コピペしてた

注:写真はイメージです

Page 8: わかると楽しいInfrastructure as code

手順書コピペの弊害• コピペミス

• 依存関係があるとバグる(Aの処理やるまえにBの処理をしなければならないなど)

• 当時はソースからコンパイルが普通だったため止まるのが普通

• (RPM? Yum?なにそれおいしいの?)

Page 9: わかると楽しいInfrastructure as code

サーバは安定して動いてなんぼ

そんなサーバエンジニアが周りから言われること

サーバ稼働率は100%が普通

サーバ?すぐ作れるでしょ

Page 10: わかると楽しいInfrastructure as code

そんなサーバエンジニアですが

プロダクトリリース後

どんな感じかといいますと……

Page 11: わかると楽しいInfrastructure as code

ローンチ打ち上げ飲み会ディレクター・デザイナー・開発チーム

サーバエンジニア

リリース直後のアクセス厳重監視業務

Page 12: わかると楽しいInfrastructure as code

人人人人人人人人人人人人人人人人_ > サーバエンジニア辛い!!! < ‾Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^

~精神を病んで休職するひと続出~

Page 13: わかると楽しいInfrastructure as code

サーバエンジニアって仕事してなくね?

ディレクター・デザイナー・マーケター・営業・バックオフィス な皆様が抱く疑問

サーバエンジニア

いやいや、プロダクトが動いているってことは 僕らがちゃんと仕事してるってことです!!

よく言われること(これは今でもたまにある)

Page 14: わかると楽しいInfrastructure as code

これがだいたい 7年~9年前の僕ら

僕はちゃんと扱われたくてサーバエンジニア一回やめました

Page 15: わかると楽しいInfrastructure as code

2008~..だいたい最近六年くらい

Page 16: わかると楽しいInfrastructure as code

Chef / Puppetが出てきた• これらはサーバ自動管理ツール

• サーバ設定を記したRubyコードを書いて実行することでサーバをあるべき状態に保つツール。

• 手順書コピペがいらない

• コードがドキュメントなのでそもそも手順書&ドキュメントという概念がいらない

Page 17: わかると楽しいInfrastructure as code

革新的!注:写真はイメージです

Page 18: わかると楽しいInfrastructure as code

さらに

Page 19: わかると楽しいInfrastructure as code

AWSができた

• サーバ・インフラのクラウドコンピューティング

• クラウド上で操作なのでデータセンターいらない

• サーバを会社の資産にしなくていい

• ハードウェアの故障に悩まされなくなった

• プログラムからAPIを叩くことでインフラ操作可能

Page 20: わかると楽しいInfrastructure as code

ハイパー 革新的!!!

Page 21: わかると楽しいInfrastructure as code

Otherside…• コードでインフラ操作=あたりまえになる

• 当時はコード書けなくても仕事があった

• いまはコード書けないサーバエンジニア=ダメ

• アプリケーションのコードを追ってデバッグする力が必要になった。

Page 22: わかると楽しいInfrastructure as code

サーバエンジニアも コードの読み書きできないと仕事がない

Page 23: わかると楽しいInfrastructure as code

時代はDevOpsでぶおぷすがあたりまえのじだいに

Page 24: わかると楽しいInfrastructure as code

Infrastructure as Codeって?Whats?

サーバ・インフラ操作をコードで行うことで効率化し、ミスを少なくする仕組みのこと。

プログラマブルにサーバ操作できるのは古き時代を知っているサーバエンジニアにとっては天国なう。

(コード書けないサーバエンジニアが仕事失うこと以外は)

Page 25: わかると楽しいInfrastructure as code

実践じゃあコードで実際どうやってサーバしてるの?

Page 26: わかると楽しいInfrastructure as code

構築編

• Webサーバたてたい

• nginx + Passenger(Rails実行環境)

案件

Page 27: わかると楽しいInfrastructure as code

むかーしむかーしはこれ# gem install passenger

# passenger-install-nginx-module

# vi /opt/nginx/conf/nginx.conf

# vi /etc/init.d/nginx

# chmod 700 /etc/init.d/nginx

# /etc/init.d/nginx start

全部コマンド手入力&スクリプト&設定ファイル作成

Page 28: わかると楽しいInfrastructure as code

手でやるとダメなとこ# gem install passenger←Passengerのバージョンは?

# passenger-install-nginx-module ←プロンプト面倒

# vi /opt/nginx/conf/nginx.conf ←作るの面倒

# vi /etc/init.d/nginx ←スクリプトデバッグは?

# chmod 700 /etc/init.d/nginx ←権限間違うとヤバス

# /etc/init.d/nginx start ←起動する保証は?

Page 29: わかると楽しいInfrastructure as code

なうな構築・管理はChefを使いまっす

Page 30: わかると楽しいInfrastructure as code

Chefだとこんな風に書けます実例1

Page 31: わかると楽しいInfrastructure as code

Chefだとこんな風に書けます実例2

Page 32: わかると楽しいInfrastructure as code

あとは以下のコマンドでイナフ

$ knife solo prepare <サーバ名>

<適用設定ファイルを編集>

$ knife solo cook <サーバ名>

注:今度Chef Zeroになってこのコマンドつかえなくなります

Page 33: わかると楽しいInfrastructure as code

もっと何かしたかったですか?がっかりさせてごめんなさい!

これだけです!以外と簡単だよ

Page 34: わかると楽しいInfrastructure as code

これのよいとこ

• 各サーバで同じことを何回もやらなくていい

• 使い回し可能

• コピペミス、依存関係のミスがない

Page 35: わかると楽しいInfrastructure as code

Githubにレシピいろいろ上がってるよ

Page 36: わかると楽しいInfrastructure as code

運用編

• Webサーバたてて複数台で負荷分散したい

• 今何台くらいあげてればいいのか細かくしりたい

案件

Page 37: わかると楽しいInfrastructure as code

むかーしむかーしはこれ1. 部長に稟議を出します

2. 割とえらいひとの決済を待ちます

3. 機器を買います

4. 届きます

5. データセンターにサーバを持って行ってラッキングします

6. ネットワークにつなぎます

7. 会社に戻ってSSHでつないで作業します

全部コマンド手入力&スクリプト&設定ファイル作成

Page 38: わかると楽しいInfrastructure as code

• 稟議通るのに時間かかりすぎ

• 社内政治とかでサーバ増やせない

• 経費精算面倒くさい(減価償却とか)

• 減価償却中に新しいサーバでちゃう( CPUとか)

• データセンター寒いし遠いしお金かかるし行きたくない(僕はこれが嫌でサーバエンジニア一回やめた)

これのダメなとこ

Page 39: わかると楽しいInfrastructure as code

AWS先生! 出番だよ!

Page 40: わかると楽しいInfrastructure as code

やること単純

一台あたりの負荷をみる

$ uptime / top / vmstat

予想アクセスを裁くだけの仮装サーバを増やす

Page 41: わかると楽しいInfrastructure as code

この作業を自動化しますAuto Scalling使わないのって質問は後で答えるね

Page 42: わかると楽しいInfrastructure as code

AWS-SDK Ruby V2実例1• Elastic Load Balancerで負荷分散しているので、そのAPIで現在のインスタンス数を取得。

• 以下のコードでとれます。

Page 43: わかると楽しいInfrastructure as code

……作るところ見せたかったんだけどコード間に合いませんでした。。。

以下のAPIがあるので今度つくったらブログとかに書きます。。

AWS-SDK Ruby V2実例2

Page 44: わかると楽しいInfrastructure as code

なんでAuto Scalling じゃないの?

自動でインスタンス増やす機能がAWSにあるんだ。 なんでそれを使わないかって説明の前に!

Page 45: わかると楽しいInfrastructure as code

One More Thing.

Page 46: わかると楽しいInfrastructure as code

僕がつくったサーバ監視ツール・オープンソースで公開するよ会社でつくったから会社のGithubで近々公開予定。

Page 47: わかると楽しいInfrastructure as code

• AWSでサーバ・インフラを持っている人向け

• デーモン監視&リソース監視も完備。

• 状況をみてサーバインスタンスを増やしたり減らしたり最低台数最高台数、インスタンスタイプの設定可能。

• 現状利用料金の値段もわかるよ。

全部AWSAPI叩きまくり

Page 48: わかると楽しいInfrastructure as code

• サーバのリソース状況を1~100で示すフレームワーク。

• Go言語でできてるよ(どこでも動きます)

Page 49: わかると楽しいInfrastructure as code

なんでAuto Scalling じゃないの?• 細かい設定しまくりたかった • 会社のデプロイタイミング、予算状況などに合わせた監視体制をつくりたかった

• Auto Scallingのタイムラグがつらかった

Page 50: わかると楽しいInfrastructure as code

Q:コードかければサーバエンジニアになれる?

A:コードかけても、動きや機能を理解してないと作れたとしてもなんとなく動いたになって運用で苦しむから仕事でサーバやるならちゃんと勉強しようね!

★まとめ★

Page 51: わかると楽しいInfrastructure as code

ご静聴ありがとうございました!