20130928 jaws festa kansai 2013 sonicgarden流devops

53
SonicGarden流 2013年9月28日 JAWS FESTA Kansai 2013 安達 輝雄 (interu)

Upload: teruo-adachi

Post on 31-May-2015

3.653 views

Category:

Technology


1 download

DESCRIPTION

少人数で自社サービスから受託案件まで数十ものサービスを提供するために実践しているDevOpsについて、技術的な内容から開発/運用の考え方について

TRANSCRIPT

Page 1: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

SonicGarden流

2013年9月28日JAWS FESTA Kansai 2013

安達 輝雄 (interu)

Page 2: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

自己紹介

安達 輝雄 (Teruo Adachi)

昔はバリバリのインフラ屋。今は開発からインフラまで幅広く対応。自称フルスタックエンジニア

福岡出身の独身エンジニア 30歳

創業メンバー

Page 3: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

SonicGardenについて

Page 4: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

さっそく本題へ?

Page 5: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

n ITにおける事業領域の拡大

n 業務のIT化からビジネスをIT化へ

最近のITサービス動向

Page 6: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

柔軟かつ継続的に進化可能なサービスを望むビジネスオーナーが増加

最近のサービス動向

開発スタイルにも変化が。

ウォーターフォール から アジャイル へ 

パッケージ  から サービス へ

Page 7: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

ここ最近のサービス動向を実現する

アプローチとしてDevOpsが注目!

最近のサービス動向

Page 8: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

DevOpsって?

Page 9: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

DevOpsとは

【引用】http://www.publickey1.jp/blog/11/devops.html

Page 10: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

DevOpsとは

ビジネスゴールに向かって、

開発者(Dev)と運用者(Ops)が

互いに協力し合い、

柔軟かつSpeedyに

サービスを成長させるための

PracticeBusiness

Value

PassionExcitement

SkillKnowledge

Page 11: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

ホントにDevOpsって大事なの?

Page 12: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

DevとOpsが対立!

DevOpsの概念が浸透し始める以前は・・・

これは開発側の仕事だ!いや、運用側の仕事だ!

この障害はアプリが原因だ!開発側は早急に対応しろ!

運用側がミドルウェアのバージョンアップ対応をしてくれないから迅速な対応は難しい!

現場は・・・

Page 13: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

これまでは、開発/運用を分離し、各々の範囲内での部分最適化が進められてきた

【開発】フレームワーク/テストツール

【運用】仮想化/冗長化 成熟化!

DevOpsの考え方で最適化フェーズに突入!

なぜDevとOpsが対立してたのか?

Page 14: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

DevとOpsが垣根を越えるアプローチはさまざま

運用者がインフラの構成管理/構築自動化をやりやすくしただけでなく、プログラマブルであることで開発者も理解しやすい仕組みであるツール

代表的なツール

Page 15: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

Chef = DevOps

なのだろうか?

Page 16: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

必ずしもそうとは言えません!!

DevOpsの定義を思い出してください。

Page 17: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

ビジネスゴールに向かって、

開発者(Dev)と運用者(Ops)が

互いに協力し合い、

柔軟かつSpeedyに

サービスを成長させるための

Practice

Page 18: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

“ビジネスゴールに向かって”という

目的を見失ってはいませんか?

● 技術的興味● 運用だけを考慮して効率化 ビジネスゴールに向かって、

開発者(Dev)と運用者(Ops)が

互いに協力し合い、

柔軟かつSpeedyに

サービスを成長させるための

Practice

NG

Page 19: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

ちなみに

Page 20: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

SonicGardenでも

2008〜2010年の間、

運用の効率化を目的として

を採用

Page 21: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

なぜ やめた のか?

Page 22: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

2010年頃n クラウドサービスの進化

n マルチテナントアーキテクチャの確立

n ハードウェアアーキテクチャの進化

技術進歩によりシステム構成トレンドにも変化が

Page 23: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

マルチインスタンス型 から マルチテナント型 へ

複数台サーバ管理の運用効率化の価値が低下

EC2のAMIで管理する方式を採用

(一戸建て型) (集合住宅型)

システム構成の変化

Page 24: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

今はどうしているのか?

Page 25: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

イケてるクラウドサービスの活用!

何でも自分たちで作るのではなく、イケてるクラウドサービス(SaaS/PaaS/IaaS)を

積極的に活用することで、

開発/運用の一部のリソースをアウトソースして

ビジネスゴールへの近道を目指す

DevOpsの取り組み【1】

Page 26: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

採用しているクラウドサービス

OpsWorksが提供しているChefの仕組みを活用するスタイルに変化

サーバ管理 AWS / Heroku

インフラ構築自動化 OpsWorks / Heroku / CloudInit

バージョン管理 GitHub / Gemnasium

エラー管理 Bugsnag / AirBrake

タスク管理 PivotalTracker

単体/統合テスト Rspec / Capybara / Serverspec

デプロイ自動化 OpsWorks / Heroku / 自社ツール

サービス監視 NewRelic / Munin / Nagios

バックアップ監視/管理 自社ツール

Page 27: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

DevもOpsもクラウドサービスを積極採用することで、

少人数でも20以上のサービス開発/運用が可能に

Page 28: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

他にも

クラウドの進化や経験により変化したこと/ものはさまざま

Page 29: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

“サービスについての考え方”の変化

DevOpsの取り組み【2】

Page 30: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

2008年からAWSを利用してきて

"障害を0にはできない"ことを痛感

【参考】http://interu.hatenablog.com/entry/20110425/1303731515

n いきなりインスタンスのフリーズ/リブート

n EBSパフォーマンス低下による影響

n ネットワーク/API障害によるアクセス不可

障害を許容するという考え方

Page 31: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

ダウンしないことを目指さない障害が発生した際に

どれだけ早く復旧できるかを考えるように

障害を許容するという考え方

ダウンしないことにコストを費やし過ぎないすぐに復旧するなら少しのダウンタイムは許容

Page 32: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

【参考】http://interu.hatenablog.com/entry/2012/10/09/122848

障害を許容するという考え方

障害検知から30分以内の復旧を目標に

n インスタンスは使い捨て

n リージョンを越えてのバックアップ(Data/AMI)

n ベンダーロックインの仕組みは利用しない

n LCC的発想によるインフラ構成の共通化

Page 33: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

同じ時期に

開発スタイルにも変化が

Page 34: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

不具合を許容するという考え方

どれだけ頑張ってもバグは発生する

不具合0を目指すより

発生した際にどれだけ早く直せるかを考えるように

クリティカルな不具合は防ぐそうでないニッチな不具合は発生したらすぐに修正

Page 35: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

不具合を許容するという考え方

エラーを検知したらすぐに改修してデプロイを目標に

n エラー検出の仕組み整備

n シンプルなデプロイの仕組み

n リリース間隔の短縮

n デグレ/再発防止のためにテストコード

n 新しいフレームワークの利用

Page 36: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

不具合/障害が発生しても迅速に対応するという考え方によりn ビジネスゴールに到達するために費やせる

開発リソースの増加

ビジネスゴールへのスピードを加速

不具合数

改修コスト

ここまで対応!

Page 37: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

許容の裏には厳しい制約も存在

n ソースコードレビューの実施● 考慮漏れ/ミスの排除● 質の悪いコードの排除

n DevとOpsのスキルを要求● サービスに責任を持つ● 開発/運用の全体最適を考える

品質向上!

対立排除!

Page 38: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

この制約で苦しんだメンバーも・・・

http://blog.jnito.com/

兵庫県在住の

NOMAD Programmer

人気ブロガー

西脇のパン屋さんの夫でお馴染み!

2012年採用メンバー!

Page 39: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

http://blog.jnito.com/entry/2012/07/25/082843

「ソニックガーデンに入社して1ヶ月が過ぎました」

 当たり前と言えば当たり前ですが、 求められるハードルがめっちゃ高い!

 先輩プログラマが持っているスキルもめっちゃ高い! この格差は一体なんなの!?

 ホンマに一番の下手くそになったら、 毎日すごいプレッシャーやぞ!!

Page 40: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

厳しい制約を課したことでの効果

n エンジニアのスキル向上

n アプリ/インフラともにシンプルな仕組みに

Page 41: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

Lv 5

Lv 50 Lv 5

Lv 50

Lv 40 Lv 20

厳しい制約を課せたことによる効果

Dev 能力 Ops 能力

  アプリ開発ならお任せ!  インフラわかんない

 まぁまぁわかるよ  わからないこともない

 アプリわからない  インフラなら任せとけ!

玄人Dev

一般エンジニア

玄人Ops

Level 50 Level 3

Level 15

Level 3

Level 20

Level 50

制約を課す前

Page 42: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

Lv 5

Lv 50 Lv 5

Lv 50

Lv 40 Lv 20

厳しい制約を課したことによる効果

Dev 能力 Ops 能力

 インフラを意識++ わかりやすいコード++  基礎能力++

 わかりやすいコード++  インフラを経験++

 開発にも従事++  障害切り分け対応能力++

玄人Dev

一般エンジニア

玄人Ops

Level 50 ⇒ 60 Level 3 ⇒ 20

制約を課した後

Level 50 ⇒ 60Level 3 ⇒ 20

Level 20 ⇒ 30 Level 15 ⇒ 30

Page 43: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

制約を課した後

厳しい制約を課したことによる効果

n 足りない能力を互いに補完

n ペアオペ/ペアプロにて互いに教育

n 観点が増えることで得意領域の能力も上昇

チームとしての成長も!

DevとOpsという役割分割も排除!

Page 44: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

許容/シンプル化により

いろいろと失ってるモノもあるのでは?と思われますよね?

Page 45: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

失ったもの

n サービス稼働率100%の保証n 不具合が限りなくゼロであるという保証

保証しているところあるの??

Page 46: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

実際のところ

サービス稼働率 とかどうなのよ??

Page 47: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

99.896%

メンテナンスを含まない場合は 99.974%

Gmailの2012年の正常稼働率は 99.983%http://news.mynavi.jp/news/2013/04/09/066/index.html

サービス稼働率

【期間】2013/01/01 〜 2013/09/26

メンテナンスによる停止:5時間弱インスタンス強制マイグレート:1回インスタンス障害:1回OSレイヤ以上の障害:2回

100.00% メンテナンスによる停止:0分インスタンス強制マイグレート:1回インスタンス障害:0回

費用対効果から考えても良い値

Page 48: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

稼働率維持/向上は、

すべてAWSのようなクラウドサービスの

品質向上のおかげでもあります!

     万歳!

Page 49: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

考え方の変化で得たもの/失ったもの

いろいろありますが・・・

Page 50: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

失うものより得るモノの価値が大きい

エンドユーザの満足度

Page 51: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

他にも実践しているDevOpsはありますが、

それらはこの後の懇親会で!

最後にまとめ。

Page 52: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

まとめ

n イケてるクラウドを積極的に利用n 厳しい制約を課すことで、シンプルを善とし、障害/不具合の発生を許容する考え方

      におけるビジネスゴールをより早く実現するDevOpsの取り組み

Page 53: 20130928 JAWS Festa Kansai 2013 SonicGarden流devops

ご清聴ありがとうございました。