Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
【新卒向け】なんとなくでも知っておいてほしいDevOps
Search
とろゝ
August 23, 2023
Technology
440
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
【新卒向け】なんとなくでも知っておいてほしいDevOps
本スライドは、2023年のサイバーエージェント新卒エンジニア研修にて、DevOpsについて講義した際の資料を一部修正したものです。
とろゝ
August 23, 2023
More Decks by とろゝ
See All by とろゝ
CyberZのSREにおけるプロダクト開発チームとの関わり方
toro_ponz
1
3.2k
EKS x Locustで構築する大規模負荷試験環境
toro_ponz
5
6.8k
Other Decks in Technology
See All in Technology
なぜJMBC(Japan MCP Business Community)? MCPってどう活用できるの?
cdataj
0
110
作品が生態系になった ─ Mini Tokyo 3D から世界へ
nagix
0
180
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
3
480
Tips for Building Useful Agent Skills
rstankov
0
110
ASTを使って影響範囲を特定する
nealle
0
180
Deployment の 先にある AI Agent 基盤 - kagent vNext、Agent Substrate、Hermes から読み解く Agent Runtime の現在地 / k8s-matsuri-2-ai-agent-platform-amsy810
masayaaoyama
3
300
リージョンの壁を越える、 ちょっと変わったAWSサービスの話
falken
PRO
1
310
Omarchy Quattro の日本語設定周り
simosako
2
170
すぐできる衛星通信対応 あとは山奥に行くだけ
tatetate55
0
110
Adaptive Warehouse を今すぐ導入すべき理由と迷ったときの判断基準
__allllllllez__
0
210
データ界隈LT祭 第1回LT登壇
taromatsui_cccmkhd
1
1k
AIを活用するために決めた "やらないこと" - 価値に注目する / Not betting on AI
soudai
PRO
1
450
Featured
See All Featured
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
480
Joys of Absence: A Defence of Solitary Play
codingconduct
1
510
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
270
Amusing Abliteration
ianozsvald
1
290
Darren the Foodie - Storyboard
khoart
PRO
3
3.9k
Documentation Writing (for coders)
carmenintech
77
5.5k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.9k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
450
Balancing Empowerment & Direction
lara
6
1.3k
Building a Scalable Design System with Sketch
lauravandoore
464
34k
KATA
mclloyd
PRO
35
15k
Transcript
【新卒向け】 なんとなくでも知っておいてほしいDevOps CyberZ SRE 藤井 貴大
この資料は2023年サイバーエージェント 新卒エンジニア向け研修で使われたものです おことわり
自己紹介 藤井 貴大 (Fujii Takahiro) 2019年新卒入社 株式会社CyberZ 開発本部 プロダクト開発局 SRE
OPENREC.tvや新規サービスなどにSREとして従事 好きなサービスはAmazon DynamoDB
• 本日のゴール • はじめに: DevOpsとは • ケーススタディ • 具体的取り組み •
まとめ 目次
本日のゴール 1.「DevOps」とは一体何なのか、なんとなくでも理解する 2. 一般的にDevOpsと呼ばれるいくつかの取り組みについて触れる
はじめに: DevOpsとは 「チームのサイロ化を取り除いたりして、 素早いソフトウェア開発を行う方法論」 (今回の発表内ではそう定めることとします)
はじめに: DevOpsとは 「チームのサイロ化を取り除いたりして、 素早いソフトウェア開発を行う方法論」 🤔 ?
はじめに: DevOpsとは 「チームのサイロ化を取り除いたりして、素早いソフトウェア開発 を行う方法論」 まずここについて
研修中、こんなことありませんでした? (例として、サーバーサイドエンジニアの目線に立って)
ケーススタディ 事例① 修正をデプロイしたら別のところでエラー 〜数分後〜 ここエラーになってるよ〜 直したからすぐデプロイするわ! (数行の変更だしちゃんとチェックしなくても 大丈夫でしょ) こんどはこっちが壊れてるんだけど......
ケーススタディ 事例② 手動でAWSリソースをいじって壊す インフラできたで〜 (ちょっとここ気になるから手動でいじっちゃお。 正確にインフラ構成把握してないけど多分大丈夫 でしょ) 誰かAWSリソース触った?ここ壊れてるんだけど......
実際のプロダクト開発でできますか? そんな雑なこと (もちろん今回の研修ではそういった経験も学びにしてください!)
事例① リリース前に手動でのチェックをちゃんとするようにする ・次第に大変になって負荷が高まる ・=> 可能な限り自動テストなどの導入 ・さらなる品質チェックの均一化と効率化 => QAチーム発足 事例② インフラの知識を高め、気をつけて作業するようにする
・ヒューマンエラーはゼロにできないので仕組みで解決する ・=> TerraformなどのIaCを導入し、安全なCD基盤を構築 ・よりよいインフラ運用の探求 => 運用専門部隊の設立 ケーススタディ 例えばどのように品質を担保するか
各チームが協調し品質が安定 開発 QA 運用 機能開発に集中 品質チェックに集中 効率的・安定的な運用に 集中
一方で、チーム間連携に課題が生じることも 開発 QA 運用 リリースするとバグ出る からできるだけリリース しないでほしい (安定性に目標を置く) すぐ公開したいのにQA が通らなくて出せない
(機能開発に目標を置く) QAに1週間かかるから 週に2回リリースはキツ い (品質に目標を置く) 開発速度低下
一方で、チーム間連携に課題が生じることも 開発 QA 運用 リリースするとバグ出る からできるだけリリース しないでほしい (安定性に目標を置く) すぐ公開したいのにQA が通らなくて出せない
(機能開発に目標を置く) QAに1週間かかるから 週に2回リリースはキツ い (品質に目標を置く) 開発速度低下 チーム間のやりとりの問題 で、適切な情報共有などがさ れないようになることを サイロ化といいます。
はじめに: DevOpsとは 「チームのサイロ化を取り除いたりして、素早いソフトウェア開発を行 う方法論」 品質を優先するなら サイロ化は仕方がない?
品質と開発速度はトレードオフか否か 一見、いずれかを取ればもう一方が損なわれそうですが......
品質と開発速度は(多くの場合)両立できる GitHubのような超巨大なコードベースですら、毎日何回もデプロイしている “200万行近い規模のコード、Railsを毎週アップデート ブログによると現在のGitHub.comは200万行近い規模のコードとなっており、1000人以上のエ ンジニアが開発に取り組んでいるとのことです。 そして1日に20回以上デプロイをし、毎週Railsをアップデートしているとも説明されています。” 引用: https://www.publickey1.jp/blog/23/github200railsrailsruby.html
チーム間の連携の問題を解決し、品質と 開発速度を両立するのが「DevOps」 開発 (dev) 運用 (ops) QA DevOps! ※ QAが名前に入っていないです
がDevOpsという名前の成り立ち によるものなので気にしなくて良 いです。今回は説明のためQAも 入れた図にしました。
噛み砕いて言うと (組織や事業の大きさに関わらず) 今回の研修のように、必要に応じて役割をまたいで密に連携して素早く開発 しつつ、テストや運用をしっかりおこなって、安定したサービスを提供する 必要がある。
DevOpsとは 「チームのサイロ化を取り除いたりして、 素早いソフトウェア開発を行う方法論」 なんのために? 素早いとはどういう意味?
開発速度が遅い組織と早い組織の違い DORAの市場調査によると、開発速度の早い(※)組織は、市場競争力も高い と言われている。つまりテクノロジーを扱う企業にとって、開発速度 ≒ 市場 競争力といっても過言ではない。 開発速度を追求することが企業の利益につながるということ。 ※ 開発のリードタイムや、デプロイ頻度、障害復旧時間、変更障害率などが良い状態 のこと
例えば、一日に数回以上デプロイしているグループをハイパフォーマーとしている
まとめると 不具合を少なく障害の影響を小さくしたまま、 短い期間に何度もデプロイを行う(行える)ことこそが、 開発生産性が高く競争力のある組織へと繋がる。 ※ 不具合や障害はゼロにはできないので、 ある程度それを許容して開発速度を重視するような考え方
DevOpsとは 「チームのサイロ化を取り除いたりして、 素早いソフトウェア開発を行う方法論」 技術のことではない?
DevOpsの能力 (参考) プロダクト 技術 (ツール) プロセス (進め方) 文化 (人) まず文化を醸成し、
プロセスを整備する。 そしてそれを実現する技術を以っ て開発体験の向上を図る。 結果プロダクトが良くなる。 そういう方法論がDevOps。 ※ 「モダンなツールを使おう」と いうものではない 計測 (モニタ リング)
DevOpsとは 「チームのサイロ化を取り除いたりして、素早い開発を行う方法論」 他には?
サイロの排除以外も多岐にわたる 開発をして、それをエンドユーザーに届け、フィードバックを得てさらなる サービス開発をする。その一連のサイクルをまわすために、サイロの排除以 外もさまざまな要素がDevOpsにはある。
では具体的に何をするのか 代表的な取り組みの一例をご紹介
一日に何十回もデプロイするためには、適したブランチ運用、Git運用があ る。いわゆるGit Flowなどよりも、開発速度を重視したフローが好ましい (場合がある) ・Git Flow ・feature -> develop ->
release -> master ・トランクベース ・feature -> main (trunk) を短いスパンで [技術] トランクベース開発 (参考)
[技術] トランクベース開発 (参考) ・機能ごとではなく、小さなバッチサイズにして作業(1つのPRを小さく) ・1日1回以上作業ブランチをトランクに取り込む ・フィーチャーフラグなどを活用し、いつでもデプロイできるように
[技術] フィーチャーフラグ コードとは別のデータソースにフラグ管理を任せ、アプリケーションをリ リースすることなく機能のON/OFFを制御する CA発のOSS「Bucketeer」などがある ・デプロイと機能公開の切り離し ・トランクベースとの相性◎ ・大きな機能も細かく分けてリリースできる
[技術] Continuous Integration, 自動テスト 短いスパンで開発〜リリース〜フィードバックのサイクルを回すためには、 さまざまな自動化を行うことが必須。 各種テストコード(ユニット・結合・E2E等)を整備し、変更による影響がな いことを自動で確認することが大事。
[技術] Continuous Delivery リリース作業が煩雑なままでは、デプロイ頻度を上げようと思っても上げら れません。 例えばKubernetes(EKS)やECSなど、コンテナ技術とそれをオーケストレー ションするシステムに乗っかることで、 よりソフトウェアデリバリを容易にできます。
[技術] IaC, GitOps TerraformやCDKなどでInfrastructure as Code(IaC)環境を構築するこ とで、日々のサービス開発で発生する運用業務を容易にする必要がある。 また、インフラ構成以外についても、GitOpsと呼ばれるコードによって設 定値や構成を管理することが肝要。
[プロセス] A/Bテスト 機能をリリースするには、まず「狙い」があり、それが実際にどうだったか の「測定」が必要になる。ユーザーに機能を出し分けてその動きを計測する A/Bテストの仕組みを用いたりして、作った機能を客観的に評価し、良い フィードバックループを回すことが、昨今の目まぐるしいサービス開発では 重要になっている。
QAやインフラ(SRE)など、アプリケーション開発に直接関わらないチー ムも機能開発の初期段階(例えば要件定義)から参加することで、連携コス トが減ったりして素早い開発サイクルが回せるようになる。 [プロセス] QAやインフラチームも機能開発に 開発 (dev) インフラ (ops) QA
[文化] DevOpsの啓蒙・文化醸成 DevOpsはあくまで方法論のため、その実現には組織全体の協力・協調が必 須になる(場合によってはエンジニア以外も含めて) DevOpsとは何なのか、なぜ推進する必要があるのか、どのように進めるの か、という啓蒙を行ったり、勉強会やLT、分科会などを通してDevOps的取 り組みが進めやすい文化を醸成する必要がある 今日の講義もその取り組みの内の一つ
[計測] FourKeys 「開発生産性」を評価する下記の四指標。これらを計測することで自組織の 開発の生産性を可視化し改善に活かす。GitHubのイベントを収集するOSS やSaaSなどがある ・変更のリードタイム ・デプロイ頻度 ・障害復旧時間 (MTTR) ・変更障害率
計測
Q. では全ての組織で同じDevOpsソリュー ションを採るべきか?
A. もちろんそんなことはない 何もない状態から集まって開発を始めた研修とは違い、みなさんが配属される先 には既に人がいて、組織があり、文化が醸成され、そこに根付いた開発プロセス がある。 どのように開発速度を向上させエンジニアとして貢献できるようになるかは、 事業のフェーズなどさまざまな要因を考慮して行う必要がある。 Q. 全ての組織で同じDevOps ソリューションを採るべきか?
再掲: 本日のゴール 1.「DevOps」とは一体何なのか、なんとなくでも理解する 2. 一般的にDevOpsと呼ばれるいくつかの取り組みについて触れる
まとめ 1. DevOpsとは a. チームのサイロ化を取り除いたりして、素早いソフトウェア開 発を行う方法論 b. 一に文化、二にプロセス。三に技術。計測も忘れずに。 2. DevOpsのさまざまな取り組み
a. 啓蒙・文化醸成 b. A/Bテスト、バリューストリームマッピング c. トランクベース、フィーチャーフラグ、CI/CD、IaC/GitOps d. FourKeys計測 e. 他にもたくさん...... (道のりは長く険しい)
参考 • DevOpsの能力 - Google Cloud • Effective DevOps •
アジャイル、CI/CD、DevOpsの違いとは