Slide 1

Slide 1 text

DevOpsって何だろう?デモ編 JFrogとJenkinsでCIにトライ! 2020.07.30 JFrog webinar

Slide 2

Slide 2 text

デモとご一緒に このセッションはデモが肝です!CIの実行が少しうまく行きませんでしたが… 動画はこちら(SpeakerDeckの説明欄からも飛べます): https://www.youtube.com/watch?v=ZTVjSV2EicE&feature=youtu.be デモは30:00頃から始まります!

Slide 3

Slide 3 text

自己紹介 Ayana Yokota Developer Advocate §2020年2月よりジョイン §前職までは主にバックエンドの開発 (SIer -> 広告会社 -> 証券スタートアップ) § 韓国ドラマにハマり中 5XJUUFS!JIDPNFHB ʮΑ͜ͳʯͱ ݺΜͰ͍ͩ͘͞ 2

Slide 4

Slide 4 text

今日のメイントピック「CI」 このセッションは • CIを取り入れたことがない • よく分からないままCIツールをポチっとしてきた という方々が • CIとはどんなものか、何故必要なのかを理解できた • CIツールを使って自動化した開発フローのイメージを掴めた という状態になっていることを目指すセッションです! 一緒にDevOpsの大きな一歩を踏み出しましょう! 3 ਖ਼௚$*͕ා͍ํɺ ҆͝৺͍ͩ͘͞ʂ

Slide 5

Slide 5 text

まずはおさらいから 4 %FW0QTͬͯ Կ͚ͩͬ 参考(前回のwebinarより): 資料 https://speakerdeck.com/ihcomega56/what-is-devops 動画 https://www.youtube.com/watch?v=l3AYycWpMqc

Slide 6

Slide 6 text

DevOpsとは 顧客に価値を素早く届けるため 開発・運用が協力する 文化的な姿勢・取り組み 5

Slide 7

Slide 7 text

DevOpsを支える柱 6 文化 ベスト プラクティス ツール 参考: https://jfrog.com/devops-tools/what-is-devops/ • 始めからすべてに取り掛かる必要はないが、最終的にはすべて 達成することを目指す

Slide 8

Slide 8 text

今日は「ツール」に注目 7 ツール +'SPH͸ओʹπʔϧͰ %FW0QTΛࢧ͑ΔձࣾͰ͢

Slide 9

Slide 9 text

ツールの例 • ソースコード管理ツール • CI/CDパイプライン • テストツール • 設定の管理やデプロイを支えるツール • バイナリ管理ツール • モニタリングツール • セキュリティ対策ツール • コラボレーションツール(チャットやバグトラッキングなど) 8 Լઢ෇͖ͷπʔϧΛ σϞͰѻ͍·͢

Slide 10

Slide 10 text

ツールを使うと何が嬉しい? • 今日のポイントは「自動化」 o o o o o 9 ϦϞʔτϫʔΫΛ ࢧ͑Δ͔΋ʂ

Slide 11

Slide 11 text

テストデプロイ どこが自動化できるだろう? 10 コーディング レビュー OSSの 脆弱性チェック 結合テスト 単体テスト ビルド 本番デプロイ

Slide 12

Slide 12 text

自動化ポイント1: ビルドとデプロイ 11 ビルド テストデプロイ 本番デプロイ

Slide 13

Slide 13 text

自動化ポイント1: ビルドとデプロイ 12 • コマンドを1つずつ手で実行していませんか? • 一部スクリプト化しただけで満足していませんか? • 複数人で時間をかけて作業していませんか? • デプロイの度に複雑な手順書を用意する手間がかかっていませんか? • 面倒だったりミスが怖かったりしてデプロイをなるべく避けたい…なんて 思っていませんか?

Slide 14

Slide 14 text

自動化ポイント2: テスト 13 結合テスト 単体テスト

Slide 15

Slide 15 text

14 • テストをすべて手動で行っていませんか? • 修正の影響範囲を調べるのに時間をかけすぎていませんか? • 環境によってテストの実行結果が異なっていませんか? 会員情報 編集機能 会員情報取得API ↓ 会員情報更新API ↓ 会員情報取得API 1つずつAPIコール して確認する… 自動化ポイント2: テスト ςετͱ͸গ͠ҧ͍·͕͢ ίʔυͷϑΥʔϚοτνΣοΫ΍ मਖ਼΋ࣗಈͰͰ͖·͢

Slide 16

Slide 16 text

自動化ポイント3: OSSの脆弱性チェック 15 OSSの 脆弱性チェック

Slide 17

Slide 17 text

16 • 使用しているOSSをリストアップして1つずつチェックしていませんか? 自動化ポイント3: OSSの脆弱性チェック

Slide 18

Slide 18 text

こんなに自動化できる 17 ビルド 結合テスト 本番デプロイ OSSの 脆弱性チェック 単体テスト テストデプロイ

Slide 19

Slide 19 text

こんなに自動化できる 18 • 数日かかっていた作業が数十分〜数時間で終わる o o • 開発を続ける以上は何度も繰り返しやる作業なので、長い目で 見るとより大きな効果が実感できる ਖ΋ੵ΋Ε͹ ࢁͱͳΔʜ

Slide 20

Slide 20 text

自動化の先へ: CI 19 • CI(継続的インテグレーション)という考え方を取り入れると、 開発の効率や速度がさらに上がる • 開発したソースコードを頻繁にマスターとなるコードベース (例えばGitのmasterブランチ)にマージし、かつその後自動でテストや ビルドなどを行う • リリースの頻度を上げ、顧客に素早く価値を届けたりより多く のフィードバックを得たりすることを目指して改善していく • CIを支えるツールは数多くあり、「CIツール」と呼ばれる

Slide 21

Slide 21 text

CIのポイント 20 • 処理のまとまりと前後関係を意識しよう • 他の人にも分かりやすい記述、命名を心がけよう • CIサーバーの設定はVCSで管理しよう • 冪等性のある処理にしよう (同じインプットに対し同じ操作をすれば同じ結果が得られることを目指す) • メンテナンスしやすい状態を保つ • 実行時に意識しなくてはいけないことをゼロにする (トリッキーで、特殊な知識がないと実行できないというのは望ましくない) ৄ͘͠͸σϞͰ ͓ݟͤ͠·͢

Slide 22

Slide 22 text

デモのアプリとシナリオ 21 request: 「ハロー」 response: 「ハロー」 request: 「ハロー」 response: 「ハローハロー」

Slide 23

Slide 23 text

デモのCI 22 push/ merge test, build deploy release scan clone webhook

Slide 24

Slide 24 text

Jenkins 23 • オープンソースのCIツール • 日本で多くの開発者に使われている • トリガーや実行スクリプトなどの設定を柔軟に行える • プラグインも多く存在し、他ツールとのインテグレーションも しやすい

Slide 25

Slide 25 text

JFrog Artifactory 24 • バイナリ・リポジトリマネージャー • ソースコードの様にアーティファクトをバージョン管理できる • アーティファクトにメタデータを付与して管理できる • 25種以上のパッケージマネージャーに対応したユニバーサルな リポジトリなので使う技術が増えてもリポジトリが乱立しない • オンプレミス版、クラウド版(SaaS)から選べる

Slide 26

Slide 26 text

JFrog Xray 25 • OSSの脆弱性・ライセンス違反を自動で検出できる • アーティファクトに対しチェックをかけることができる • 検出された脆弱性のレベルに応じて通知をしたりダウンロード を禁止したりといった柔軟な設定ができる

Slide 27

Slide 27 text

デモのCI(改めて) 26 push/ merge test, build deploy release scan clone webhook

Slide 28

Slide 28 text

まとめ 27 • DevOpsを支える要素のひとつ「ツール」を導入することで 作業の自動化ができる • 自動化を発展させた「CI(継続的インテグレーション)」により 顧客への価値提供、フィードバックの収集が素早く高頻度に 行える • 大事なポイントをおさえてCIツールを使い、誰もが使いやすく メンテナンスしやすい状態を目指すことが大事である

Slide 29

Slide 29 text

28 Thank you