ベンチャー企業のインフラを運用して学んだ99のこと
by
urmot
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
ベンチャー企業のインフラを運 用して学んだ99のこと レバレジーズ株式会社 村本 雄太 2018/09/26
Slide 2
Slide 2 text
目次 1. 自己紹介 2. 学んだこと99連発 3. まとめ 4. さいごに
Slide 3
Slide 3 text
自己紹介.yaml Name: 村本 雄太 BelongsTo: レバレジーズ株式会社: メディカル事業部 Tags: - 新卒2年目 - いんふらえんじにあ
Slide 4
Slide 4 text
自己紹介.png
Slide 5
Slide 5 text
自己紹介.png
Slide 6
Slide 6 text
学んだこと99連発!!!
Slide 7
Slide 7 text
今日は時間がないので3つだけ!
Slide 8
Slide 8 text
ベンチャー企業のインフラを運用して学んだ99のこと 今日お話すること 1. 自動化のすゝめ 2. ユースフルなサーバ構成を作る方法 3. サービスを継続的に動作させるには
Slide 9
Slide 9 text
今日お話すること 1. 自動化のすゝめ 2. ユースフルなサーバ構成を作る方法 3. サービスを継続的に動作させるには ベンチャー企業のインフラを運用して学んだ99のこと
Slide 10
Slide 10 text
自動化のすゝめ
Slide 11
Slide 11 text
自動化のすゝめ なぜ自動化するのか ● ヒューマンエラーを減らしたい ● 効率化したい ● 手作業がつらい...
Slide 12
Slide 12 text
自動化のすゝめ 自動化のメリット ● 一貫性 ● プラットフォーム ● 高度な修復 ● 素早いアクション ● 時間の節約
Slide 13
Slide 13 text
自動化のすゝめ 自動化のメリット ● 一貫性 ● プラットフォーム ● 高度な修復 ● 素早いアクション ● 時間の節約 BY
Slide 14
Slide 14 text
自動化のすゝめ 自動化のメリット ~噛み砕いたVer~ ● 人が手作業するより正確 ● 無駄な動きがないので早い ● 感情がないので無限に同じことをさせられる ● 属人化を回避できる
Slide 15
Slide 15 text
浮いた時間で生産的な開発が出来る!
Slide 16
Slide 16 text
自動化のすゝめ どのようにして自動化するのか 1. 設計 2. 浸透 3. 自動化
Slide 17
Slide 17 text
自動化のすゝめ 設計 ● ステークホルダーを把握する ● 誰が、いつ、何を、すれば良いのかを設計する ● 担当範囲を明確化する
Slide 18
Slide 18 text
自動化のすゝめ 浸透 ● ドキュメントを作成する ● トップダウンで浸透させる ● 基本的にフローに従っていないものは断る
Slide 19
Slide 19 text
自動化出来る部分を見極める ● 人の判断が必要なものは、自動化しない ● トリガーを決める 自動化のすゝめ 自動化
Slide 20
Slide 20 text
自動化のすゝめ 例: デプロイを自動化したい! 1. デプロイフローの設計 2. デプロイフローの浸透 3. デプロイの自動化
Slide 21
Slide 21 text
自動化のすゝめ 例: メディカル事業部のデプロイフロー 1. 責任者がリリース内容を決定 2. Githubのリリースタグを切る 3. CircleCIがビルドする 4. CircleCIからデプロイコマンドを実行 5. 結果がSlackに通知される
Slide 22
Slide 22 text
自動化のすゝめ 例: CircleCIとAmazon SSMを使った自動デプロイ
Slide 23
Slide 23 text
今日お話すること 1. 自動化のすゝめ 2. ユースフルなサーバ構成を作る方法 3. サービスを継続的に動作させるには ベンチャー企業のインフラを運用して学んだ99のこと
Slide 24
Slide 24 text
ユースフルなサーバ構成を作る方法
Slide 25
Slide 25 text
ユースフルなサーバ構成を作る方法 ユースフルなサーバ構成とは 1. 安全に変更できる 2. 再現性がある 3. 一覧性のある
Slide 26
Slide 26 text
ユースフルなサーバ構成を作る方法 安全に変更できるサーバ構成 ユースケース ● php extensionをインストールしたい ● リバースプロキシの向き先を変更したい ● 静的ファイルは圧縮して配信するようにしたい
Slide 27
Slide 27 text
ユースフルなサーバ構成を作る方法 再現性のあるサーバ構成 ユースケース ● テスト環境を作って欲しい ● スケールアウトしなければならない ● 事故って開発環境がクラッシュ...
Slide 28
Slide 28 text
ユースフルなサーバ構成を作る方法 一覧性のあるサーバ構成 ユースケース ● サーバに何がインストールされているか知りたい ● PHPのバージョンが知りたい ● Nginxの設定がみたい
Slide 29
Slide 29 text
ユースフルなサーバ構成を作るには?
Slide 30
Slide 30 text
ユースフルなサーバ構成を作るには? マニュアルを作ろう!!
Slide 31
Slide 31 text
ユースフルなサーバ構成を作るには? マニュアルを書こう!!!
Slide 32
Slide 32 text
ユースフルなサーバ構成を作るには? 構成管理ツールを使おう!!
Slide 33
Slide 33 text
ユースフルなサーバ構成を作る方法 構成管理ツールを使おう!! ● サーバ構成をコード化 ● コードに従ってサーバを自動で構築
Slide 34
Slide 34 text
ユースフルなサーバ構成を作る方法 メディカル事業部では
Slide 35
Slide 35 text
ユースフルなサーバ構成を作る方法 Ansibleとは ● Redhat製のオープンソースの構成管理ツール ● エージェントレス ● YAMLで記述 ● モジュール ● 冪等性
Slide 36
Slide 36 text
ユースフルなサーバ構成を作る方法 Ansibleを用いたサーバ構成変更フロー 1. Ansible設定リポジトリをclone 2. 変更してPRを出す 3. Review & Merge 4. Ansibleを実行してサーバ構成を変更 ※ サーバ構成変更時には、必ずAnsibleを経由する!
Slide 37
Slide 37 text
今日お話すること 1. 自動化のすゝめ 2. ユースフルなサーバ構成を作る方法 3. サービスを継続的に動作させるには ベンチャー企業のインフラを運用して学んだ99のこと
Slide 38
Slide 38 text
サービスを継続的に動作させるには
Slide 39
Slide 39 text
サービスを継続的に動作させるには 冗長化することで、障害に備えよう! ● 障害が発生しても、サービス全体止めない冗長構成 ● ダウンタイムなしでスケール可能な構造 ● 障害の原因を特定出来るように準備しておく
Slide 40
Slide 40 text
サービスを継続的に動作させるには 障害が発生しても、サービス全体を止めない冗長構成 ユースケース ● データセンターが障害でダウン ● アクセス急増によりサーバがダウン ● 突然プロセスが暴走!?
Slide 41
Slide 41 text
サービスを継続的に動作させるには ダウンタイムなしでスケール可能な構造 ユースケース ● DBのCPU使用率が100%に張り付く ● 昼と夜でアクセス数が8倍違う
Slide 42
Slide 42 text
サービスを継続的に動作させるには 障害の原因を特定出来るように準備しておく ユースケース ● 何が原因でサーバがダウンしたのか知りたい ● 大量アクセスしたBotが誰か特定したい
Slide 43
Slide 43 text
サービスを継続的に動作させるには 冗長化することで、障害に備えよう! ● 障害が発生しても、サービス全体を止めない冗長構成 ● ダウンタイムなしでスケール可能な構造 ● 障害の原因を特定出来るように準備しておく
Slide 44
Slide 44 text
サービスを継続的に動作させるには
Slide 45
Slide 45 text
サービスを継続的に動作させるには クラウドを活用しよう!
Slide 46
Slide 46 text
サービスを継続的に(簡単に)動作させるには クラウドを活用しよう!
Slide 47
Slide 47 text
サービスを継続的に動作させるには クラウドを活用しよう! ● 簡単に冗長構成が構築可能 ● 勝手にスケールするサービスが沢山ある ● サーバログの収集などがパッケージ化されている
Slide 48
Slide 48 text
サービスを継続的に動作させるには メディカル事業部では
Slide 49
Slide 49 text
サービスを継続的に動作させるには AWSとは ● クラウドインフラ市場でシェアNo.1 ● 100以上の多彩なサービスを提供 ● 150万以上のユーザにつかわれているクラウドベンダー
Slide 50
Slide 50 text
サービスを継続的に動作させるには 例: ALBを使ったWebサーバの冗長構成
Slide 51
Slide 51 text
サービスを継続的に動作させるには 例: リレーショナルデータベースの場合 ● 書き込みはスケールアウトは不可能 ○ 整合性を取るために一台のマスターサーバ上だけ書き込み可能 ● フェイルオーバー可能な仕組みを作る ○ マスターに変更を加える時はスレーブをマスターに昇格させる ● 読み込み専用DBを用意する ○ 読み込みには整合性がないのでスケールアウト可能
Slide 52
Slide 52 text
サービスを継続的に動作させるには 例: リレーショナルデータベース on AWS RDS ● 書き込みはスケールアウトは不可能 ○ 整合性を取るために一台のマスターサーバ上だけ書き込み可能 ● フェイルオーバー可能な仕組みを作る ○ 勝手にやってくれる ● 読み込み専用DBを用意する ○ GUIで簡単に作成可能
Slide 53
Slide 53 text
まとめ
Slide 54
Slide 54 text
まとめ 1. 自動化のすゝめ a. 段階的に進めよう 2. ユースフルなサーバ構成を作る方法 a. 構成管理ツールを使おう 3. サービスを継続的に(簡単に)動作させるには a. クラウドを活用しよう ベンチャー企業のインフラを運用して学んだ99のこと
Slide 55
Slide 55 text
感想 ● インフラは学びが多い楽しい領域 ● 新卒2年目でも頑張ればインフラ運用できる ● まだまだ出来る事がある ベンチャー企業のインフラを運用して学んだ99のこと
Slide 56
Slide 56 text
インフラの挑戦 今後取り組みたい技術的挑戦 1. Blue/Green Deployment 2. Auto Scaling 3. テスト環境を必要な時だけ立てる仕組み 4. AWSアカウントの整理
Slide 57
Slide 57 text
さいごに
Slide 58
Slide 58 text
さいごに 次回! 4. アプリケーションエンジニアを巻き込む方法 5. 外部サービスに頼ろう 6. 監視・アラート・対策 …