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
CircleCIのSnyk Orbを使ったCI/CDのセキュリティスキャンへの組み込み
Search
Masahiko Funaki(舟木 将彦)
September 14, 2022
Technology
71
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CircleCIのSnyk Orbを使ったCI/CDのセキュリティスキャンへの組み込み
Masahiko Funaki(舟木 将彦)
September 14, 2022
More Decks by Masahiko Funaki(舟木 将彦)
See All by Masahiko Funaki(舟木 将彦)
「つくるAI」だけではバグは見つからない ~テストに必要な「見つけるAI」を分離させる戦略~
mfunaki
0
290
自動化したのに回らない テスト運用の壁―AI時代の品質責任と生産性
mfunaki
0
840
自動化したのに回らないテスト運用の壁ーAI時代の品質責任と生産性
mfunaki
1
210
202605-進化し続けるUIに追従.pdf
mfunaki
0
66
mablの要素選択を完全理解〜壊れないテストを作るための技術選択
mfunaki
0
88
知って得するmabl活用Tips〜「こんな時どうする?」実践機能ガイド
mfunaki
0
110
20260422-mablで変わるテスト自動化_品質_速さ_コストの三角形を崩す5つのアプローチ.pdf
mfunaki
0
140
手順(プロンプト)だけで テストを自動作成~テスト作成エージェントを使いこなすための 実践プロンプト術
mfunaki
0
230
「見た目」と「意味」をAIが判定 ~ビジュアルアサーションで変わる テストの守備範囲~
mfunaki
0
110
Other Decks in Technology
See All in Technology
Conditional PED-ANOVA: Hyperparameter Importance in Hierarchical & Dynamic Search Spaces
pfn
PRO
0
140
事業成長とデータ活用を止めないためのマネジメントへ挑戦
hiracky16
0
400
NDIでApple Vision Proにリアルタイム映像送信
jyouryuusui
0
130
しろおびから始める!ログ活用の第一歩
shumei_ito
0
950
Getting Started with Google Antigravity
glaforge
0
320
Rustuna: Rustによる高速なOptuna実装
pfn
PRO
0
200
WasmをRustにする
sansantech
PRO
0
260
サブエージェントと Claude Mods で作る独自 Advisor ツールの話
kenichiodo
2
160
Optunaの最新リリースv5.0について
pfn
PRO
0
120
専門領域のAIをどう評価するか
bengo4com
2
270
古い指輪から広がった JAVA コミュニティ とのつながり
yamad
0
130
AI導入は済んだ。次は統制を作り替える番だ_AI×開発組織 Summit 2026
techtekt
PRO
0
320
Featured
See All Featured
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
4
4.4k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Crafting Experiences
bethany
1
380
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
410
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.2k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3.1k
RailsConf 2023
tenderlove
30
1.6k
Transcript
1 舟木 将彦 (@mfunaki) Principal Developer Advocate / CircleCI CircleCI
の Snyk Orb を使った CI/CD へのセキュリティスキャンの 組み込み CircleCI + Snyk でセキュアなアプリケーション/サービスを実現する
2 舟木 将彦(@mfunaki) CircleCI合同会社 Principal Developer Advocate ビジネスを支えるソフトウェアが お客様やマーケットに合わせて 継続して進化していくために不可欠な
・CI(継続的インテグレーション) ・CD(継続的デリバリ/デプロイ) の意義や価値、進め方を 技術、ビジネス、経営の言葉で お届けしています。 2000~ ◦ AppleのSiriの前身となるDejima社にて 特許出願を含む製品開発 (車載、家電での音声対話操作) 2003~ ◦ データベースベンダー(Sybase)による買収に伴い 自然言語でのデータベース検索や モバイル環境での対話型検索の開発 2013~ ◦ ERPベンダー(SAP)による買収に伴い ERPのモバイル対応や、 自動車関連(電装パーツ、タイヤ、自動車、 再生可能エネルギー)のイノベーション促進 2018~ ◦ 自動車や小売り、製造、金融といった業界に 対して、 アイデア~コード~プロト~製品/サービス 間の時間差を最小限に 2020~ • アイデア~エンジニアによる実装 ~アプリやサービスの間を自動化で結び、 フィードバックループを高速に回すため、 CircleCI にて Developer Advocate に 自己紹介
CircleCIってどんな会社 • 世界最大規模のクラウドCI/CD(継続的インテグレーション/継続的デプロイ)サービス ◦ 22,000以上の組織の 100万以上の開発者が実行する 毎月7億以上のジョブを支えるサービス • ミッション: Manage
change So software teams can innovate faster (変化をマネージしよう、そうすれば ソフトウェアチームはより速くイノベーションできる ) • 2011年設立、サンフランシスコに本社 2021/05/11 にSeries Fで1億ドルを調達 (これまでに$315Mの投資、$1.7Bの企業価値) • 600+人の社員 (米国、日本、英国、オランダ、フランス+ リモートワーク)
4 Agenda DevOps とソフトウェア デリバリーの成熟度 自動化された10分で開発効率と質を両立 【デモ】セキュリティスキャンの自動化への組み込み 終わりに
5 DevOps とソフトウェア デリバリーの成熟度
6 デリバリー成熟度に関わる4つの主要な指標 4つの指標 US/Japanの CircleCIユーザー中央値 CircleCIが考える 目標値 1. ワークフロー実行時間 3.82分(US)
3.54分(Japan) 10分 (🙅10分以内) 2. スループット (ワークフロー実行回数) 1.67回/日(US) 1.00回/日(Japan) プルリクエストの数+ 自動実行数 3. 平均リカバリ所要時間 80.01分(US) 68.50分(Japan) 1時間以内 4. ワークフロー成功率 (master / main ブランチ) 77%(US) 75%(Japan) 90%以上
7 デリバリー成熟度を上げるためのポイント〜自動化 プラン コード ビルド テスト リリース デプ ロイ 運用
監視 継続的インテグレーション (CI) 継続的 デプロイ (CD) 自動化できない 非正常系は 自動化できない 自動化できる→継続的であるために自動化すべき 1. ワークフロー実行時間 (10分) 2. スループット 3. 平均リカバリ所要時間 - 変更をキャンセル - 変更で生じた問題を修正 4. ワークフロー成功率 (デフォルトブランチマージ時の の割合)
8 ビルド〜デプロイを自動化し、現況を見える化する 実行回数 成功確率 実行時間 クレジット消 費量 復旧時間
9 自動化された10分で開発効率と質を両立
10 縦に伸ばす(自動化実行環境のスペックを上げる) リソースクラスと消費クレジット Docker Executor クラス vCPUs RAM クレジット small
1 2GB 5クレジット/分 medium 2 4GB 10クレジット/分 medium+ 3 6GB 15クレジット/分 large 4 8GB 20クレジット/分 Freeプランでは30,000クレジット/月が無料で付与 (smallクラスなら6000分=100時間に相当) ※月20日換算で一日あたりのジョブ実行時間 5.0時間 https://circleci.com/docs/ja/using-docker#available-docker-resource-classes
11 横に広げる(並列化) 1 5 50 5 45 40 100 60
1 0 30 20 100 1 5 50 60 20 1 0 45 40 30 5 100 50 1 0 45 1 5 60 20 5 40 30 1並列 3並列 5並列 1’44” 1’14” 1’09” 1’14” 1’15” 6:20 64クレジット (¢3.84相当) 2’09” 2’09” 2’09” 74クレジット (¢4.44相当) 81クレジット(¢ 4.86相当) https://circleci.com/docs/ja/parallelism-faster-jobs#test-splitting-to-speed-up-pipelines
12 横に広げる(並列化) 1 5 50 5 45 40 100 60
1 0 30 20 100 1 5 50 60 20 1 0 45 40 30 5 100 50 1 0 45 1 5 60 20 5 40 30 1並列 3並列 5並列 1’44” 1’14” 1’09” 1’14” 1’15” 6:20 64クレジット (¢3.84相当) 2’09” 2’09” 2’09” 74クレジット (¢4.44相当) 81クレジット(¢ 4.86相当) https://circleci.com/docs/ja/parallelism-faster-jobs#test-splitting-to-speed-up-pipelines
13 10分の中で量(効率)+CircleCI Orbで質の向上をしっかり盛り込む
14 セキュリティスキャンの自動化への組み込み
15 【デモ1】 ソースコードの修正を起点としたスキャン
16 1. ベースとなるワークフロー この名前でイメージをビルド、プッシュ Node Orb, Docker Orbを使い、簡潔な定義+キャッシュ適用で高速化 以前使用したDockerレイヤーのイメージをキャッシュ、再利用し 高速化
package-lock.jsonファイルが未更新ならキャッシュしたライブラリを 使用 Dockerの - アカウントをチェック (ログインできなければエラー ) - Dockerfileをlintし (記述ミスがあればエラー ) - イメージをビルドし - Docker Hub(コンテナイメージリポジトリ )にPush テスト ビルド リリース
17
18 2. Slackによる結果通知を追加 Slack Orb を追加 CircleCIによる実行結果が - fail(失敗)なら basic_fail_1
テンプレートを使い - pass(成功)なら basic_success_1 テンプレートを使い メッセージを送信する メッセージ送信先は、コンテクスト slack-secrets の中で定義された 環境変数 SLACK_ACCESS_TOKEN, SLACK_DEFAULT_CHANNEL で指定
19
20 3. Snyk Orbを使ってイメージをスキャン Snyk Orbを追加 docker build でビルドしたイメージ ($IMAGE_NAME)をスキャンし
- 問題がなければ、引き続き Docker Hub に PUSH - 問題があれば、 Docker Hub に PUSH せず Slackで失敗メッセージを通知する Snykを使用する際に当たって必要な API Token は、 コンテクスト snyk-secrets の中で定義された 環境変数 SNYK_TOKEN で指定
21
22 【デモ2】 パイプラインのスケジュール実行によるスキャン
23 パイプラインのスケジュール実行 https://circleci.com/docs/ja/scheduled-pipelines
24 終わりに
25 • 単に「早く」「簡単に」開発するだけでなく、 バグを修正する、さまざまな機能を盛り込むという「量」と 利用者が安心して使えるという「質」の両立が重要 • ビルド、テスト、リリース(CI)、デプロイ(CD)は自動化+高速化可能 ◦ 適切なマシンスペックの選択 +
並列化の活用 • バグが生まれるのはコード開発時 →問題があるのであれば、できるだけ早く(10分以内)気づけば、 コードの記憶が鮮明なうちに修正に取り掛かれ、より効率的 • 自動化+高速化で10分以下にすることがゴールではなく、 「質」に関わる取り組みを CircleCI Orb を使い、自動化に組み込む 今日お伝えしたかったこと
Thank you. 26
27 ソースコードを GitHubなどの ソースコード 管理システムで管理 日時や週次で テストやビルドを 自動実行する コードが追加・修正 されるたび、
テストやビルドを 自動実行する ソースコードを 共有フォルダ等で 取りまとめる Linux/Windows/iOS /Android/GPU環境 向けビルドを(クラウド で)一元管理 テスト時間を短縮す ることで、作った記憶 がホットなうちに修正 可能に 必要に応じた スペックのビルド環境を 選択可能(縦に伸ばす) 直列実行だけでなく、 並列実行が簡単に 設定可能(横に広げる) レベル1 コード 共有 + 手作業の 自動化 レベル2 コード 履歴共有 + 手作業の 自動化 (巻戻可) レベル3 スペックや 多重度が 変化する 自動化 (高速化= 速く気づき 速く直す) ソフトウェア開発の現況 〜 今の立ち位置を知り、直近のゴールを定める 協力会社からは全体が見えない (見せない)+類似製品間で ほとんど同じコードを手動で仕向け CI/CDが自動化され、常に動くモノが ある状態だが伸びしろが見えない (語学学習で言う「中級者にはなっ たがもっと上達する気がしない」 ) 速さで Qualityと Quantity と 進化を両 立
28