2015年gmoペパボ新卒エンジニア研修...

80
WEB OPERATION 2015年 GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

Upload: takahiro-okumura

Post on 07-Aug-2015

6.526 views

Category:

Engineering


1 download

TRANSCRIPT

Page 1: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

WEB OPERATION2015年 GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

Page 2: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

アジェンダWebオペレーション研修 … おさらい

Webオペレーションとは … 言葉が内包するもの

研修における位置付け … 何を学んでほしいのか

Nyahについて … ペパボの仮想インフラ基盤の紹介

研修の進め方 … ゴール、チーム、ルール、見積りと計画

Page 3: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

月 火 水 木 金

10:00 読書会

11:00 基礎研修

13:00 昼

14:00 基礎研修

17:00 CK 研修 CK 基礎研修

18:00 リフレク&シェアリング・次回目標・日報

Webアプリケーションを “正常稼働” させるために必要な知識の修得 (7/6~8/7)

Webオペレーション研修

Web開発

モバイル Web オペレーション

http://www.slideshare.net/hifumis/20150608-thetaoofpepaboengineer-49152106

Page 4: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

Webオペレーションとは言葉が内包するもの

Page 5: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

役割、期待、実態から見るWebオペレーション

Webオペレーションとは

1. 役割:どのような職種か

2. 期待:必要とされている知識領域

3. 実態:どのように業務を遂行しているのか

Page 6: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

1. 役割:どのような職種か

Webオペレーションとは

• Webアプリケーションを正常稼働させるのに必要な知識や経験を備えた専門職種

• ペパボでは、「インフラエンジニア」が主にこの領域を担当

※ちなみに表紙の魚は「バラクーダ(オニカマス)」らしい

Page 7: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

2. 期待:必要とされている知識領域

Webオペレーションとは

ネットワーク・ルーティング・スイッチング・ファイアウォール・負荷分散・高可用性・障害復旧・TCPやUDPのサービス・NOCの管理・ハードウェア仕様・複数のUnix環境・複数のウェブサーバ技術・キャッシュ技術・データベース技術・ストレージインフラ・暗号技術・アルゴリズム・傾向分析・キャパシティ計画立案…

『ウェブオペレーション 1章』より

Page 8: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

3. 実態:どのように業務を遂行しているのか

Webオペレーションとは

• 先の知識領域を1人で全部やるのは大変

• ペパボでは、東京のインフラグループ・福岡のインフラチームが横断的に活動

• 得意な分野を牽引し、得意な分野で助け合い、連携して業務を遂行している

Page 9: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

3. 実態:どのように業務を遂行しているのか(例として)

Webオペレーションとは

Page 10: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

ペパボにおける「インフラG/T」と「情シス」の違いは知ってる?

Webオペレーションとは

•サービスのインフラを支えているのがインフラG/T

•ロリポップ!、ヘテムル、カラーミー、…

•ペパボスタッフのインフラを支えているのが情シス

• PC機器類、社内ネットワーク、社内インフラ、… ※完全にこの通りでは無いが、概形として。

Page 11: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

まとめ:役割、期待、実態から見るWebオペレーション

Webオペレーションとは

1. 役割:Webアプリを正常稼働させるのに必要な知識や経験を備えた専門職種

2. 期待:必要とされている知識領域は多岐にわたる(最近は仮想化・分散化技術等も)

3. 実態:ペパボではインフラ部隊が問題解決にあたる

Page 12: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

研修における位置付け何を学んでほしいのか

Page 13: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

何を学んでほしいのか

研修における位置付け

• エンジニア全員に持ってほしい能力

• ペパボの強みを知る

• 科学ではなく技芸

Page 14: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

エンジニア全員に持ってほしい能力

研修における位置付け

• 開発者もメトリクスは見るし、運用者もコードは書く時代*

• 「何かが来た」** ときに、迅速かつ適切な対応をするには、Webオペレーション能力も必要

* http://www.slideshare.net/studio3104_com/yapc-asia-2014 ** https://speakerdeck.com/inouetakuya/ec-performance-testing

Page 15: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

エンジニア全員に持ってほしい能力:対話と協調の大切さ

Webオペレーションとは

If non-communicative & non-collaborative…

http://www.slideshare.net/jallspaw/10-deploys-per-day-dev-and-ops-cooperation-at-flickr

It’s not my machines,it’s your code!

It’s not my code, it’s your machines!

Page 16: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

エンジニア全員に持ってほしい能力:視野を更に広げよう

Webオペレーションとは

• エンジニアは自らの職能を越えた動きを推奨されている*

• 研修を通しての繰り返しになるが、研修の3つの軸を学ぶことで、広く深い知識や経験を手に入れてほしい

* https://speakerdeck.com/kentaro/engineering-in-gmo-pepabo-inc?slide=15

Page 17: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

ペパボの強みを知る

Webオペレーションとは

http://www.slideshare.net/hifumis/20150608-thetaoofpepaboengineer-49152106/27

Page 18: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

科学ではなく技芸

Webオペレーションとは

• 正規の教育や資格、標準、「正しい方法」はない

• プロフェッショナルの知識や経験、ツール、プロセスが「Webオペレーション」という技芸になっていった

• 研修というサポート環境のもとで、実践的な「型」を身につけてほしい

Page 19: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

まとめ:何を学んでほしいのか

Webオペレーションとは

• 開発・運用はエンジニアに修得してほしいスキル

• Webオペレーションはペパボの強みの1つ

• プロフェッショナルの技術から、実践的な「型」を学ぶ

Page 20: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

Nyahについてペパボの仮想インフラ基盤の紹介

Page 21: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

OpenStackをベースとしたペパボの仮想インフラ基盤 (IaaS)

次世代開発環境としてのNyah

• サービスに必要なインフラ基盤を、仮想化技術にもとづいて提供

• 作りたいものをバーンと作って公開できる環境

http://www.slideshare.net/ume3_/pb-tc01-bob001

Page 22: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

Nyahが無かった頃の開発環境:Maglica

Episode Zero

• https://github.com/mizzy/maglica • http://www.slideshare.net/mizzy/

maglica-techkayac • GH:E tech/maglica-usage

Page 23: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

Nyah説明会・ハンズオン• @ume3_ (ボブさん) 主導

• 本日7/6 14:00-16:00

• @放送室

Page 24: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

まとめ

Nyahについて

•サービスに必要なインフラ基盤を仮想化技術にもとづいて提供してくれる君

•昔(今も現役だけど)はmaglicaを使っていた

•午後にハンズオンを予定

Page 25: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

研修の進め方ゴール、チーム、グランドルール、見積りと計画について

Page 26: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

グランドルール

見積りと計画

チーム

ゴール

Page 27: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

アプリが「動く」インフラを、ステップ・バイ・ステップで成長させる

ゴール

Page 28: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

アプリが「動く」インフラを、ステップ・バイ・ステップで成長させる

ゴール

manual install infra as code transfer high availabilitytest

Vagrant編 Nyah編

Page 29: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

Vagrant編

VagrantにRails Tutorialのアプリケーションが動く環境を作る

Page 30: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

VagrantにRails Tutorialで作ったWebアプリケーションが動く環境を作る

ステップ:manual install

• パッケージマネージャやエディタなどを駆使して頑張る

• gistなどに手順をメモしておく

※historyコマンドは便利

Page 31: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

rails s -b 0.0.0.0 -p 80 して、VM上のWebアプリにアクセス可能にする

ステップ:manual install

VM ——————

app, dbrails, mysql (or mariadb)

Page 32: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

ペパボのプロダクションでも使われている構成にジャンプアップする

ステップ:manual install

VM ——————

app, dbnginx + unicorn (socket), mysql

Page 33: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

やること

ステップ:manual install

1. VagrantでVM (CentOS 7) を作る

2. Rails Tutorialで作ったWebアプリをVM上で動かす (rails server)

3. nginx + unicornに切り替える

※出来る人は2を飛ばしても良い

Page 34: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

サーバは意図通りに動いてますか?それをどうやって保証しますか?

ステップ:test

• パッケージなに入れた?

• 設定ファイルを変更した?

• サービスは起動した?

• サービスは自動起動する?

• ポートはリスンしてる?

• 適切な権限を与えた?

• 実行ユーザは存在する?

• サービスは動作してる?

Page 35: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

サーバの構成・状態をテストしよう

ステップ:test

✓パッケージなに入れた?

✓設定ファイルを変更した?

✓サービスは起動した?

✓サービスは自動起動する?

✓ポートはリスンしてる?

✓適切な権限を与えた?

✓実行ユーザは存在する?

✓サービスは動作してる?

Page 36: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

1st: Serverspec

ステップ:test(ing tools)

• サーバの状態をコードにより自動的にテストするためのツール

http://serverspec.org https://github.com/serverspec

Page 37: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

2nd: Infrataster

ステップ:test(ing tools)

• サーバの振る舞いをテストするためのツール

• 出来たらやってみよう

https://github.com/ryotarai/infrataster

Page 38: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

やること

ステップ:test

1. Serverspecをインストール

2. サーバのテストを書く

3. 余裕があればInfratasterでのテストも導入する

Page 39: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

Infrastructure as Code : コードとしてのインフラ

ステップ:infra as code

package 'nginx' do action :install end

service 'nginx' do action [:enable, :start] end

Page 40: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

Configuration management tool : 構成管理ツール

ステップ:infra as code

• インフラの状態を構造化

• プラットフォーム間の差異を吸収

• Puppet, Chef, Ansible, Itamae…

Page 41: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

構成管理ツールとして、Itamaeを使っていきましょう

ステップ:infra as code

• https://github.com/itamae-kitchen/itamae • 構成管理ツールの学習そのものは研修の本質からやや逸れる

• Web開発研修でRubyを扱った

• Itamaeはシンプル、軽量、Ruby DSL

Page 42: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

やること

ステップ:infra as code

1. Itamaeをインストールする

2. manual installの手順をコード化する

3. 新規VMにItamaeを実行する

4. テストをオールグリーンにする

※3と4は往復することもあり得る

Page 43: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

やることまとめ

Vagrant編

1. Web開発研修で作成したRailsアプリを、Vagrantで動かす

2. Serverspec, Infratasterなどでサーバの構成・振る舞いをテストする

3. Itamaeでサーバ構成をコード化する

Page 44: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

Nyah編

Page 45: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

WebアプリをNyahで動かせるようにする

ステップ:transfer

1. NyahのVMを1個作る

2. Itamaeでサーバ構築

3. テストをオールグリーンにする

Page 46: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

VM ——————

app, db

可用性に対する課題

ステップ:high availability

• 1サーバで動いているものが多い

• リソースの食い合い

• どのパッケージがどのシステムに必要なのか分かりにくい複雑な依存関係

Page 47: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

VM ——————

a role

可用性に対する課題 : 役割ごとにVMを用意する

ステップ:high availability

• 再利用できるネットワークアクセス可能な単位 (サービス)* に分割

• 構成の変更に伴うコードや設定の修正・変更

VM ——————

a roleVM

—————— a role

VM ——————

a roleVM

—————— a role

* 「ウェブオペレーション 5章 コードとしてのインフラ」より

Page 48: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

可用性に対する課題 : 役割に対して適切なスペックを与える

ステップ:high availability

• ストレージ、メモリ、CPU、…

• それぞれの役割に対して適切なflavor (OpenStackの仮想ハードウェアの名称) を選択する VM

—————— a role

VM ——————

a role

VM ——————

a role

VM ——————

a role

VM ——————

a role

Page 49: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

Normal stageまずはここから

Page 50: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

app/dbの分離

ステップ:high availability

app

db

nginx + unicorn (socket)

mysql

Page 51: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

dbのレプリケーション (backup, redundancy)

ステップ:high availability

app

db (master)

db (repl)

nginx + unicorn (socket)

mysql

Page 52: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

Grand stageより本格的なインフラ構成をめざして

Page 53: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

unicorn

リバースプロキシの導入

ステップ:high availability

app

db (master)

db (repl)

reverse proxynginxupstream (TCP)

Page 54: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

appサーバの冗長化 (scale out)

app

ステップ:high availability

db (master)

db (repl)

reverse proxy

app

nginx

unicorn

upstream (TCP)

Page 55: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

セッションストレージの分離

app

ステップ:high availability

db (master)

db (repl)

reverse proxy

app session storage

redis, memcached

Page 56: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

Extra stage余裕があればやってみよう

Page 57: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

監視・メトリクスの導入 (monitoring)

app

ステップ:high availability

db (master)

db (repl)

reverse proxy

app session storage

Nagiossensu

consul-alertmackerel.io

Munin

New Relic

Page 58: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

Legendary stage研修よりはるか高みへ

Page 59: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

研修としてはオーバクオリティ… (この辺から “high” っぽくなってくる)

app

ステップ:high availability

db (master) slave

proxy

appsession (active)

proxy

load balancerlvs + keepalived, serf + haproxy, …

reference to slave

session (standby)lb

redis sentinel, …

lb

lb

Page 60: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

やること (Extra, Legendaryはおかわり案件)

ステップ:high availability

1. app/dbを分離

2. dbの冗長化 3. リバースプロキシの導入

4. appの冗長化 5. セッションサーバの分離

Page 61: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

サーバ移行、冗長化、オーケストレーション

Nyah編

1. Nyah上のVMでアプリケーションを動かす

2. 役割ごとにVMを分割し、耐障害性を向上させる

Page 62: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

ゴール

グランドルール

見積りと計画

チーム

Page 63: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

前提 : ノウハウを共通化させる必要性について

チーム

• 構成管理ツールやデプロイツールの選択肢は多様

• サービス特性に応じたツール選択は必須

• 複数人での活動に耐えうる運用の確立は重要

Page 64: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

2人1組になってインフラを設計、構築、運用していきましょう

チーム

• リポジトリ、コード、ドキュメント、Issueの活用

• 外部公開出来ない情報も出るため、作業場はGH:Eで🙇

Page 65: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

Shuffle!

チーム

• 1週間ごとにチームは交代

• 他の人が手がけた運用に触れる経験

• その運用を引き継ぐも刷新するも自由、ただし対話というプロセスはとっても大切

Page 66: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

「test」のフェーズからチーム作業を開始しましょう

チーム

manual install infra as code transfer high availabilitytest

Page 67: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

各フェーズで相談しなければならないことの例

チーム

• お互いのmanual installの作業内容に問題は無いか?

• testの内容はこれで十分か?

• Itamae recipeの設計内容はこれで良いか?

• デプロイツールはどうする?

Page 68: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

まとめ

チーム

•「test」フェーズから、2人1組のチームを作って運用する

•チームは1週間毎に交代する

•それぞれのフェーズで運用方法を確かめ合っていく

• github.com ではなくGH:Eに新規リポジトリを作る

Page 69: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

ゴール

見積りと計画

チーム

グランドルール

Page 70: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

BDD (Bosukete Driven Development) は変わらず

グランドルール

http://www.slideshare.net/hifumis/20150609-webdevelopmenttraining/26

Page 71: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

ゴール

チーム

グランドルール

見積りと計画

Page 72: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

基本的なプロセスはWeb開発研修と同じだが、難易度は増した

見積りと計画

• 「やること」の幅が広がった

• 「やること」の複雑さが増した

• 見積りの単位はストーリーポイント?理想時間?

https://speakerdeck.com/kenchan/web-dev-training-introduction

Page 73: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

使える時間と場所

見積りと計画

• 7/6 16:00-17:00 音楽室

• 7/7 10:00-12:00 美術室

Page 74: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

まとめ

見積りと計画

• Web開発研修と同じやり方を再び実践

•前回よりも難易度は高い

• 3時間程度でやりましょう

Page 75: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

まとめWebオペレーション研修 … 7/6~8/7に実施する基礎研修の1つ

Webオペレーションとは … Webアプリを正常稼働させるための多岐にわたる知識や経験を備え、課題解決にあたる専門職 研修における位置付け … Webオペレーションの型をプロから学ぼう

Nyahについて … OpenStackをベースとしたペパボのIaaS

研修の進め方 … さいきょうのインフラをチームでつくろう

Page 76: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

Appendix

Page 77: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

DevOps• It's not abstraction. • It's not even "infrastructure as

code". • It's not any single tool. • It's not about provisioning. • It's not about deployment. • It's not about a job

description or position.

• It's also not about the cloud, except for the part where deployment and provisioning of infrastructure gets easier to understand for groups of people who historically wouldn't have touched that part of the business.

• It *is* about the collaborative and communicative culture and the tools and process that arise from that culture. Nothing more.

http://www.rationalsurvivability.com/blog/2010/05/incomplete-thought-the-devops-disconnect/#comment-3375

Page 78: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

Provisioning Toolchain

Provisioning Toolchain by Lee Thompson (Velocity 2010), サーバプロビジョニングのこれまでとこれから (デブサミ2014) より作成

Application Service Orchestration

System Configuration

OS install Cloud or VM Image Launch

Capistrano Fabric Serf Consul

Puppet Chef Itamae

Kickstart Cobbler EC2 OpenStack

Orchestration

Configuration

Bootstrapping

Ansible

Page 79: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

Test Driven InfrastructureVirtualization and Cloud Computing have made it easy to procure and provision hardware and virtual servers. But with this flexibility comes scale and complexity, and managing our virtual estates has become increasingly difficult. Using techniques more familiar in the software development world such as TDD, BDD and CI offers an approach to managing this complexity and gives us the confidence to make changes to our infrastructure in a safe, repeatable and automatable manner. Provisioning testing tools, like rspec-puppet, Test Kitchen and serverspec, are available for most platforms. http://www.thoughtworks.com/radar/techniques/provisioning-testing

Page 80: 2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション

Nightmare microservices

Migrating to Microservices by @adrianco GOTO Berlin 2014

“Death Star” Architecture Diagrams

Netflix Gilt Groupe (12 of 450) Twitter

As visualized by Appdynamics, Boundary.com and Twitter internal tools