Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ベンチャー企業のインフラを運用して学んだ99のこと
Search
urmot
September 28, 2018
Technology
0
1k
ベンチャー企業のインフラを運用して学んだ99のこと
Bit Valley -inside- vol.1
https://atnd.org/events/99854
urmot
September 28, 2018
Tweet
Share
More Decks by urmot
See All by urmot
ログラスを支える設計標準について / loglass-design-standards
urmot
10
2.2k
ログラスを支える技術的投資の仕組み / loglass-technical-investment
urmot
10
5.2k
実践!CloudFormation Best Practice ~CloudFormationで始める組織改革~
urmot
2
2.9k
CircleCIを導入した話
urmot
0
54
SPA on AWS
urmot
0
150
実践!CloudFormation Best Practice
urmot
0
120
RDBのログを取る時にDMSを使うという選択肢
urmot
0
76
Other Decks in Technology
See All in Technology
[PlatformCon 24] Platform Orchestrators: The Missing Middle of Internal Developer Platforms?
danielbryantuk
1
820
少数チームで挑む: SwiftUI, TCA, KMPを用いた 新規動画配信アプリ 「ABEMA Live」の開発について
tomu28
0
610
Google Cloud Next '24でブログを10本書いた方法と勉強会を沸かせた方法
yasumuusan
0
250
推しは推せるときに推せ! プロダクトにフィードバックしていこう
nakasho
0
240
日本におけるデータエンジニアリングのこれまでとこれから
foursue
16
4k
現代CSSフレームワークの内部実装とその仕組み
poteboy
8
3.4k
Reducing Cross-Zone Egress at Spotify with Custom gRPC Load Balancing Recap
koh_naga
0
180
自動生成を活用した、運用保守コストを抑える Error/Alert/Runbook の一元集約管理 / Centralized management of Error/Alert/Runbook to minimize operational costs using automated code generation
biwashi
12
2.3k
**強い**エンジニアのなり方 - フィードバックサイクルを勝ち取る / grow one day each day
soudai
64
19k
Cracking the KubeCon CfP
inductor
2
170
On Your Data を超えていく!
hirotomotaguchi
2
620
オーナーシップを持つ領域を明確にする
konifar
13
3k
Featured
See All Featured
Thoughts on Productivity
jonyablonski
57
3.8k
Faster Mobile Websites
deanohume
298
30k
Pencils Down: Stop Designing & Start Developing
hursman
117
11k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
658
120k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
16
1.4k
Producing Creativity
orderedlist
PRO
336
39k
Intergalactic Javascript Robots from Outer Space
tanoku
266
26k
Typedesign – Prime Four
hannesfritz
36
2.1k
Fashionably flexible responsive web design (full day workshop)
malarkey
398
65k
The Invisible Side of Design
smashingmag
294
49k
The MySQL Ecosystem @ GitHub 2015
samlambert
242
12k
How to Ace a Technical Interview
jacobian
272
22k
Transcript
ベンチャー企業のインフラを運 用して学んだ99のこと レバレジーズ株式会社 村本 雄太 2018/09/26
目次 1. 自己紹介 2. 学んだこと99連発 3. まとめ 4. さいごに
自己紹介.yaml Name: 村本 雄太 BelongsTo: レバレジーズ株式会社: メディカル事業部 Tags: - 新卒2年目
- いんふらえんじにあ
自己紹介.png
自己紹介.png
学んだこと99連発!!!
今日は時間がないので3つだけ!
ベンチャー企業のインフラを運用して学んだ99のこと 今日お話すること 1. 自動化のすゝめ 2. ユースフルなサーバ構成を作る方法 3. サービスを継続的に動作させるには
今日お話すること 1. 自動化のすゝめ 2. ユースフルなサーバ構成を作る方法 3. サービスを継続的に動作させるには ベンチャー企業のインフラを運用して学んだ99のこと
自動化のすゝめ
自動化のすゝめ なぜ自動化するのか • ヒューマンエラーを減らしたい • 効率化したい • 手作業がつらい...
自動化のすゝめ 自動化のメリット • 一貫性 • プラットフォーム • 高度な修復 • 素早いアクション
• 時間の節約
自動化のすゝめ 自動化のメリット • 一貫性 • プラットフォーム • 高度な修復 • 素早いアクション
• 時間の節約 BY
自動化のすゝめ 自動化のメリット ~噛み砕いたVer~ • 人が手作業するより正確 • 無駄な動きがないので早い • 感情がないので無限に同じことをさせられる •
属人化を回避できる
浮いた時間で生産的な開発が出来る!
自動化のすゝめ どのようにして自動化するのか 1. 設計 2. 浸透 3. 自動化
自動化のすゝめ 設計 • ステークホルダーを把握する • 誰が、いつ、何を、すれば良いのかを設計する • 担当範囲を明確化する
自動化のすゝめ 浸透 • ドキュメントを作成する • トップダウンで浸透させる • 基本的にフローに従っていないものは断る
自動化出来る部分を見極める • 人の判断が必要なものは、自動化しない • トリガーを決める 自動化のすゝめ 自動化
自動化のすゝめ 例: デプロイを自動化したい! 1. デプロイフローの設計 2. デプロイフローの浸透 3. デプロイの自動化
自動化のすゝめ 例: メディカル事業部のデプロイフロー 1. 責任者がリリース内容を決定 2. Githubのリリースタグを切る 3. CircleCIがビルドする 4.
CircleCIからデプロイコマンドを実行 5. 結果がSlackに通知される
自動化のすゝめ 例: CircleCIとAmazon SSMを使った自動デプロイ
今日お話すること 1. 自動化のすゝめ 2. ユースフルなサーバ構成を作る方法 3. サービスを継続的に動作させるには ベンチャー企業のインフラを運用して学んだ99のこと
ユースフルなサーバ構成を作る方法
ユースフルなサーバ構成を作る方法 ユースフルなサーバ構成とは 1. 安全に変更できる 2. 再現性がある 3. 一覧性のある
ユースフルなサーバ構成を作る方法 安全に変更できるサーバ構成 ユースケース • php extensionをインストールしたい • リバースプロキシの向き先を変更したい • 静的ファイルは圧縮して配信するようにしたい
ユースフルなサーバ構成を作る方法 再現性のあるサーバ構成 ユースケース • テスト環境を作って欲しい • スケールアウトしなければならない • 事故って開発環境がクラッシュ...
ユースフルなサーバ構成を作る方法 一覧性のあるサーバ構成 ユースケース • サーバに何がインストールされているか知りたい • PHPのバージョンが知りたい • Nginxの設定がみたい
ユースフルなサーバ構成を作るには?
ユースフルなサーバ構成を作るには? マニュアルを作ろう!!
ユースフルなサーバ構成を作るには? マニュアルを書こう!!!
ユースフルなサーバ構成を作るには? 構成管理ツールを使おう!!
ユースフルなサーバ構成を作る方法 構成管理ツールを使おう!! • サーバ構成をコード化 • コードに従ってサーバを自動で構築
ユースフルなサーバ構成を作る方法 メディカル事業部では
ユースフルなサーバ構成を作る方法 Ansibleとは • Redhat製のオープンソースの構成管理ツール • エージェントレス • YAMLで記述 • モジュール
• 冪等性
ユースフルなサーバ構成を作る方法 Ansibleを用いたサーバ構成変更フロー 1. Ansible設定リポジトリをclone 2. 変更してPRを出す 3. Review & Merge
4. Ansibleを実行してサーバ構成を変更 ※ サーバ構成変更時には、必ずAnsibleを経由する!
今日お話すること 1. 自動化のすゝめ 2. ユースフルなサーバ構成を作る方法 3. サービスを継続的に動作させるには ベンチャー企業のインフラを運用して学んだ99のこと
サービスを継続的に動作させるには
サービスを継続的に動作させるには 冗長化することで、障害に備えよう! • 障害が発生しても、サービス全体止めない冗長構成 • ダウンタイムなしでスケール可能な構造 • 障害の原因を特定出来るように準備しておく
サービスを継続的に動作させるには 障害が発生しても、サービス全体を止めない冗長構成 ユースケース • データセンターが障害でダウン • アクセス急増によりサーバがダウン • 突然プロセスが暴走!?
サービスを継続的に動作させるには ダウンタイムなしでスケール可能な構造 ユースケース • DBのCPU使用率が100%に張り付く • 昼と夜でアクセス数が8倍違う
サービスを継続的に動作させるには 障害の原因を特定出来るように準備しておく ユースケース • 何が原因でサーバがダウンしたのか知りたい • 大量アクセスしたBotが誰か特定したい
サービスを継続的に動作させるには 冗長化することで、障害に備えよう! • 障害が発生しても、サービス全体を止めない冗長構成 • ダウンタイムなしでスケール可能な構造 • 障害の原因を特定出来るように準備しておく
サービスを継続的に動作させるには
サービスを継続的に動作させるには クラウドを活用しよう!
サービスを継続的に(簡単に)動作させるには クラウドを活用しよう!
サービスを継続的に動作させるには クラウドを活用しよう! • 簡単に冗長構成が構築可能 • 勝手にスケールするサービスが沢山ある • サーバログの収集などがパッケージ化されている
サービスを継続的に動作させるには メディカル事業部では
サービスを継続的に動作させるには AWSとは • クラウドインフラ市場でシェアNo.1 • 100以上の多彩なサービスを提供 • 150万以上のユーザにつかわれているクラウドベンダー
サービスを継続的に動作させるには 例: ALBを使ったWebサーバの冗長構成
サービスを継続的に動作させるには 例: リレーショナルデータベースの場合 • 書き込みはスケールアウトは不可能 ◦ 整合性を取るために一台のマスターサーバ上だけ書き込み可能 • フェイルオーバー可能な仕組みを作る ◦
マスターに変更を加える時はスレーブをマスターに昇格させる • 読み込み専用DBを用意する ◦ 読み込みには整合性がないのでスケールアウト可能
サービスを継続的に動作させるには 例: リレーショナルデータベース on AWS RDS • 書き込みはスケールアウトは不可能 ◦ 整合性を取るために一台のマスターサーバ上だけ書き込み可能
• フェイルオーバー可能な仕組みを作る ◦ 勝手にやってくれる • 読み込み専用DBを用意する ◦ GUIで簡単に作成可能
まとめ
まとめ 1. 自動化のすゝめ a. 段階的に進めよう 2. ユースフルなサーバ構成を作る方法 a. 構成管理ツールを使おう 3.
サービスを継続的に(簡単に)動作させるには a. クラウドを活用しよう ベンチャー企業のインフラを運用して学んだ99のこと
感想 • インフラは学びが多い楽しい領域 • 新卒2年目でも頑張ればインフラ運用できる • まだまだ出来る事がある ベンチャー企業のインフラを運用して学んだ99のこと
インフラの挑戦 今後取り組みたい技術的挑戦 1. Blue/Green Deployment 2. Auto Scaling 3. テスト環境を必要な時だけ立てる仕組み
4. AWSアカウントの整理
さいごに
さいごに 次回! 4. アプリケーションエンジニアを巻き込む方法 5. 外部サービスに頼ろう 6. 監視・アラート・対策 …