Slide 1

Slide 1 text

DevOps環境の紹介 GCPを使った Koda 2019-11-23

Slide 2

Slide 2 text

● 「Cloud」とか「DevOps」とか「Agile」やってます ● 某メーカーの中でアプリなどを開発中 ● プログラミングと温泉、家族を愛してます(チームビルディングもまぁまぁ好き) ● Google系を中心にクラウド系の技術コミュニティに参加 KODA (@koda3t) 2

Slide 3

Slide 3 text

3 本日のゴール ▷ クラウド時代におけるモダンな開発・運用について、ふんわり理解し、 各自が調査&試行できる知識を習得する ▷ 紹介する内容を自分で構築できるハンズオン資料もあるので、興味を 持ったら試してみてください ○ 要望があればハンズオンをまた開催します あぁ、、あれね。 聞いたことあるよ(ドヤッ)

Slide 4

Slide 4 text

4 Agenda 1. DevOpsとは 2. DevOpsな環境 3. まとめ

Slide 5

Slide 5 text

5 1. DevOpsとは

Slide 6

Slide 6 text

開発担当者と運用担当者が連携して協力すること 6 https://ja.wikipedia.org/wiki/DevOps

Slide 7

Slide 7 text

Dev vs Ops 新しい機能を追加したから リリースさせろや!! そんなんで、安定稼働できるん かいな! 責任とるのはこっちやぞ!! 7

Slide 8

Slide 8 text

DevOps ユーザに価値のあるものを 素早く出していくために協力 しよう! そのために何が必要かを、 一緒に考えていこう!! 8

Slide 9

Slide 9 text

市場投入までの時間の短縮 高い顧客満足度 改良された製品の品質 改良されて、信頼性の高いリリース 改良された生産性・効率 迅速な実験によって、適切な製品を構築する能力 9 DevOpsの効果

Slide 10

Slide 10 text

DevOpsな組織文化 Respect: お互いを尊重することです。相手のことを思いやることでコミュニケーションが円滑に取れるように なります。 Trust: チームメンバーを信頼することです。開発者、運用者の垣根を越えて、システムに関わっているメン バーを信頼する必要があります。 Healthy attitude about failure: 失敗に対して健全な態度をとることです。失敗はチャレンジすれば起こりえるもので、担当者を責め るのはおかしいという考えです。 Avoiding Blame: 非難を避けることです。失敗しないように取り組むのがDevOpsの目的の1つですが、それでもミス をゼロにはできません。しかし、たとえミスが起きたてもそれを非難する事はしてはいけません。 2009年のFlickr社から 10

Slide 11

Slide 11 text

DevOpsを実現するための技術 ● Continuous Integration ○ 自動化されたビルド・テスト ● Continuous Deployment ○ 自動化されたデプロイ ● Infrastructure as Code ○ 自動化されたインフラ ● Service Mesh ○ 小さく迅速に市場投入・ロールバック ● Serverless / Managed service ○ 運用負荷の低いインフラ ● Microservices ○ 小さく迅速に開発 11

Slide 12

Slide 12 text

2. DevOpsな環境 12

Slide 13

Slide 13 text

13 Dev Ops 開発したものが運用にシームレスに 連携されていく環境 DevOpsな環境?

Slide 14

Slide 14 text

14 Code Code コードを編集 自動ビルド 自動デプロイ GitLab Feature Branch Push Container Registry 自動ビルド イメージ登録 動作確認 Skaffold Kubernetes Kubernetes Engine Canary Production 一般ユーザ アーリーアダプタ 自動デプロイ モニタリング Istio Prometheus Grafana 動作確認 Spinnaker CI レビュー GitLab Master Branch GitLab Merge Tag バージョン 管理(タグ) CI Google Cloud ビルド&テスト Pub/Sub トラフィック制御 ローカルPC リリース判断

Slide 15

Slide 15 text

15 Code Code コードを編集 自動ビルド 自動デプロイ GitLab Feature Branch Push Container Registry 自動ビルド イメージ登録 動作確認 Skaffold Kubernetes Kubernetes Engine Canary Production 一般ユーザ アーリーアダプタ 自動デプロイ モニタリング Istio Prometheus Grafana 動作確認 Spinnaker CI レビュー GitLab Master Branch GitLab Merge Tag バージョン 管理(タグ) CI Google Cloud ビルド&テスト Pub/Sub トラフィック制御 ローカルPC リリース判断 Dev(開発)

Slide 16

Slide 16 text

16 Code Code コードを編集 自動ビルド 自動デプロイ GitLab Feature Branch Push Container Registry 自動ビルド イメージ登録 動作確認 Skaffold Kubernetes Kubernetes Engine Canary Production 一般ユーザ アーリーアダプタ 自動デプロイ モニタリング Istio Prometheus Grafana 動作確認 Spinnaker CI レビュー GitLab Master Branch GitLab Merge Tag バージョン 管理(タグ) CI Google Cloud ビルド&テスト Pub/Sub トラフィック制御 ローカルPC リリース判断 Ops(運用)

Slide 17

Slide 17 text

実際のDevOps環境のサンプルを見ながら、 使われている技術の紹介

Slide 18

Slide 18 text

18 Docker ▷ コンテナ型の仮想ツール ▷ Immutable Infrastructure を実現

Slide 19

Slide 19 text

19 Kubernetes(K8s) ▷ コンテナ化したアプリケーションのデプロイ、スケーリング、および 管理を行うための、コンテナオーケストレーションツール ▷ 複数のコンテナをいい感じに運用できる

Slide 20

Slide 20 text

20 GKE ▷ マネージドなKubernetesプラットフォーム ▷ 現状のコンテナ系のサービスでは一番クセが無く「お安い」と思う

Slide 21

Slide 21 text

21 Istio ▷ サービスメッシュ ▷ マイクロサービス間などの通信をいい感じに管理できる ▷ カナリアリリースなどが簡単にできる

Slide 22

Slide 22 text

22 Prometheus & Grafana ▷ モニタリングツール & 可視化ツール ▷ 動的な環境での監視が得意 ▷ Istioをセットアップすると自動的についてくる

Slide 23

Slide 23 text

23 GitFlow ▷ Gitの機能を使っていい感じに開発するスタイル ▷ Featureブランチで開発して、CIでテスト、MR(PR)でレビューして というかんじで開発が進む

Slide 24

Slide 24 text

GitLab ▷ OSSのGitHubのようなもの ▷ SaaS(GitHub)が使えない場合の選択肢 ▷ GitHubでできることは代替可能 24

Slide 25

Slide 25 text

25 ▷ k8sを使ったサービスのローカルでの開発を便利にするツール

Slide 26

Slide 26 text

26 CI ▷ コードの変更の度に自動化されたビルドとテストを実行 ▷ これにより品質を保ちながら頻繁に結合を行うことが出来る https://cloud.google.com/solutions/continuous-integration

Slide 27

Slide 27 text

27 Spinnaker(CD) ▷ 継続デリバリのプラットフォーム ▷ Blue/Greenデプロイや、カナリアデプロイにも対応

Slide 28

Slide 28 text

28 3. まとめ

Slide 29

Slide 29 text

29 今まで話した内容を、 すんなり理解できましたか?

Slide 30

Slide 30 text

30 いろいろありすぎて 大混乱 話だけ聞いただけでは、私には無理でした。。。

Slide 31

Slide 31 text

31 使ってみよう! ✔ 使ってみると、意外と大した事ない

Slide 32

Slide 32 text

まずはDockerからはじめよう! Immutable Infrastructure Immutable Development Environment ≒ 自分のローカルの開発環境も使い捨てで使える! →気軽に新しい事が試せる!!

Slide 33

Slide 33 text

28人 27人 ハンズオン開催中 資料:https://gdg-shinshu.connpass.com/event/143112/ 資料:https://gcpug-shinshu.connpass.com/event/135612/

Slide 34

Slide 34 text

34 「きこりのジレンマ」 になっていないか確認しよう

Slide 35

Slide 35 text

35 同じ1人月でも内容(成果)は違う 12時間/日 6時間/日 余った時間でさらなる効率化

Slide 36

Slide 36 text

9/3にGoogleが開催したKubernetes Dayから資料を紹介します https://inthecloud.withgoogle.com/kubernetes-day-1909/Google_Cloud_Kubernetes_Day2_Session01.pdf

Slide 37

Slide 37 text

37

Slide 38

Slide 38 text

DevOpsに取り組んでいるチームは 生産性が 1.53倍高い

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

• デプロイ頻度: 208倍多い • コミットからデプロイまでの時間: 108倍短い • 環境変更の成功: 7倍の成功率(失敗が 1/7) • 障害から復旧にかかる時間: 2604倍早い

Slide 41

Slide 41 text

No content

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

44 イノベーションに手が回らない

Slide 45

Slide 45 text

最大で年間12兆円の経済損失

Slide 46

Slide 46 text

46 崖から落ちないためにも DevOpsに取り組む ☞ 新しい技術を試す時間を確保する(リーダ/マネージャ) ☞ 技術だけではなく、P10の「組織文化」も!

Slide 47

Slide 47 text

thanks! Any questions? You can find me at @koda3t 47