Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CircleCIでビルド・テストを高速化するだけでなく、よりセキュアに

 CircleCIでビルド・テストを高速化するだけでなく、よりセキュアに

2023年3月9日開催の CircleCI x Fortinet 共催ジョイントウェビナー
「DevSecOpsを実現するための最適なソフトウェア開発とシフトレフト」
での CircleCI の使用スライドです。

https://circleci.connpass.com/event/275623/

More Decks by Masahiko Funaki(舟木 将彦)

Other Decks in Programming

Transcript

  1. 1 ⾈⽊ 将彦 (@mfunaki) Principal Developer Advocate / CircleCI CircleCI

    でビルド・テストを⾼速化 するだけでなく、よりセキュアに DevSecOps を実現するための最適なソフトウェア開発とシフトレフト
  2. 2 ⾈⽊ 将彦(@mfunaki) CircleCI合同会社 Principal Developer Advocate ビジネスを⽀えるソフトウェアが お客様やマーケットに合わせて 継続して進化していくために不可⽋な

    ・CI(継続的インテグレーション) ・CD(継続的デリバリ/デプロイ) の意義や価値、進め⽅を 技術、ビジネス、経営の⾔葉で お届けしています。 2000~ ◦ AppleのSiriの前⾝となるDejima社にて 特許出願を含む製品開発 (⾞載、家電での⾳声対話操作) 2003~ ◦ データベースベンダー(Sybase)による買収に伴い ⾃然⾔語でのデータベース検索や モバイル環境での対話型検索の開発 2013~ ◦ ERPベンダー(SAP)による買収に伴い ERPのモバイル対応や、 ⾃動⾞関連(電装パーツ、タイヤ、⾃動⾞、 再⽣可能エネルギー)のイノベーション促進 2018~ ◦ ⾃動⾞や⼩売り、製造、⾦融といった業界に 対して、 アイデア〜コード〜プロト〜製品/サービス 間の時間差を最⼩限に 2020~ • アイデア〜エンジニアによる実装 〜アプリやサービスの間を⾃動化で結び、 フィードバックループを⾼速に回すため、 CircleCI にて Developer Advocate に ⾃⼰紹介
  3. 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. 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%以上
  5. 7 デリバリー成熟度を上げるためのポイント〜⾃動化 プラン コード ビルド テスト リリー ス デプ ロイ

    運用 監視 継続的インテグレーション(CI) 継続的 デプロイ (CD) 自動化できない 非正常系は 自動化できない ⾃動化できる→継続的であるために⾃動化すべき 1. ワークフロー実⾏時間(10分) 2. スループット 3. 平均リカバリ所要時間 - 変更をキャンセル - 変更で⽣じた問題を修正 4. ワークフロー成功率 (デフォルトブランチマージ時の の割合)
  6. 10 SAST と DAST • 静的アプリケーションセキュリティテスト (SAST) ◦ プログラムのソースコードを分析して、 セキュリティ脆弱性を特定

    → 開発の早期段階から実施 • 動的アプリケーションセキュリティテスト (DAST) ◦ 悪意あるユーザーのフリをして、 リモートでのアプリケーションの 侵⼊をシミュレート → 開発プロセス後半で実施 https://circleci.com/ja/blog/sast-vs-dast-when-to-use-them/
  7. 11 SAST / DAST の⾃動実⾏タイミング プラン コード ビルド テスト リリー

    ス デプ ロイ 運用 監視 継続的インテグレーション(CI) 継続的 デプロイ (CD) 自動化できない 非正常系は 自動化できない ⾃動化できる→継続的であるために⾃動化すべき 1. ワークフロー実⾏時間(10分) 2. スループット 3. 平均リカバリ所要時間 - 変更をキャンセル - 変更で⽣じた問題を修正 4. ワークフロー成功率 (デフォルトブランチマージ時の の割合) SAST DAST
  8. 12 縦に伸ばす(⾃動化実⾏環境のスペックを上げる) リソースクラスと消費クレジット 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
  9. 13 横に広げる(並列化) 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
  10. 16 1. ベースとなるワークフロー Node Orb を使い npm install 時にキャッシュ適⽤で⾼速化 package-lock.jsonファイルが未更新ならキャッシュしたライブラリを

    使⽤ Dockerコンテナをビルドし、Amazon ECR に登録 - コンテナのビルド時に、Dockerレイヤーのイメージを キャッシュ、再利⽤することでビルド時間を⾼速化 - ECR登録後は、AWS App Runner でコンテナイメージを ウェブアプリケーションとして公開 テスト ビルド & デプロイ
  11. 17 2. FortiDevSec ‒ SASTでソースコードをスキャン Dockerレイヤーキャッシュを有効にすることで、 Dockerコンテナとして提供される FortiDevSec イメージの更新を レイヤーごとにチェックし、未更新であれば既存のキャッシュを使⽤

    →コンテナイメージの取得時間を短縮 SAST によるスキャンと、ウェブアプリのビルドは並⾏して⾏う ことで、コードコミット〜スキャン、ビルド完了までの時間を短縮
  12. 18

  13. 24 • バグが⽣まれるのはコード開発時 →問題があるのであれば、できるだけ早く(10分以内)気づけば、 コードの記憶が鮮明なうちに修正に取り掛かれ、より効率的 • ビルド、テスト、リリース(CI)、デプロイ(CD)は⾃動化+⾼速化可能 ◦ 適切なマシンスペックの選択 +

    並列化の活⽤ • FortiDevSec を CircleCI と組み合わせて使⽤することで、 • ビルドやテストと並⾏しての SAST 実⾏が可能 • CircleCI のDockerレイヤーキャッシュを使い、コンテナイメージの ビルド + FortiDevSec イメージローディングを⾼速化可能 • 単に「早く」「簡単に」開発するだけでなく、 バグを修正する、さまざまな機能を盛り込むという「量」と 利⽤者が安⼼して使えるという「セキュリティ」の両⽴が重要 今⽇お伝えしたかったこと