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. 監視・アラート・対策 …