Slide 1

Slide 1 text

GitLabによる Complete DevOpsの実現 これからのDevOps-Toolchain Shingo.Kitayama

Slide 2

Slide 2 text

Introduction 2 日本ヒューレット・パッカード株式会社 テクニカルアーキテクト ・オープンソースソリューションの提案 ・コンサルティング、および構築デリバリーを担当 shkitayama spchildren Shingo Kitayama Powered by Shingo.Kitayama

Slide 3

Slide 3 text

Today’s Agenda GitLabによる Complete DevOps 3 1. GitLab Complete DevOps 2. GitLab Development Lifecycle 3. GitLab Cloud Native Application

Slide 4

Slide 4 text

1. GitLab Complete DevOps What’s complete DevOps 4

Slide 5

Slide 5 text

GitLabのビジョン Less time maintaining Toolchain 5 “GitLab’s vision is to serve enterprise-scale, integrated software development teams that want to spend more time writing code and less time maintaining their tool chain.” GitLabのビジョン エンタープライズの開発チームが、 Toolchainを維持する時間を短縮し、 ソフトウェア開発に時間を費す環境を提供すること。

Slide 6

Slide 6 text

Traditional DevOps Intersection of development, operations 6 Developers Operators [参照] https://about.gitlab.com/2017/10/11/from-dev-to-devops/ Developer Tools Operator Tools Traditional DevOps DevOpsは、開発者と運用者の交点にある一連のプラクティス。 Conwayの法則: チームの開発成果がその組織の内部的なコミュニケーションのあり方によって決まる

Slide 7

Slide 7 text

7 Traditional DevOps DevOps Toolchain for Traditional DevOps Continuous Integration Continuous Deployment Plan Create Verify Package Release Configure Monitor Toolchainのステージごとに異なるミドルウェアを連携している

Slide 8

Slide 8 text

8 2018 Global Developer Report Top 3 challenges you face to support your investments for 2018 [参照] https://about.gitlab.com/developer-survey/2018/ 1. 適切なテクノロジーの選択 2. 他のツールとの統合/連携 3. 不十分な内部プロセス 新しいツールの採用 デプロイの実行 技術者やマネージャーのスキル不足 トレーニングやサポート 2018年の投資を支援する上で直面している3つの課題 主要な機能の欠如 n=684 Most say they use 3 to 6 tools to complete the development process

Slide 9

Slide 9 text

9 Traditional DevOps Integration with other tools in our stack

Slide 10

Slide 10 text

Complete DevOps Culture Shift from traditional DevOps to complete DevOps 10 Developers Operators Complete DevOps 変更を容易にするためのツールチェーンの管理をなくし、開発者と運用者間のコラボレーションを促進するカルチャーシフト。

Slide 11

Slide 11 text

11 Complete DevOps DevOps Toolchain for Complete DevOps Continuous Integration Continuous Deployment Plan Create Verify Package Release Configure Monitor Complete DevOps

Slide 12

Slide 12 text

12 Advantage of Complete DevOps Visible / Efficient / Governed Visible Efficient Governed Real time view across the entire lifecycle Collaborate without waiting Develop and operate with confidence 可視化 効率化 統制化 •See everything that matters •Stay in your flow •Don’t wait on syncing •Manage projects, not tools •Improve cycle time •Start immediately •Work concurrently •No more handoffs •Security and compliance already built-in •Simplify user management •Expedite auditing •Act with certainty ライフサイクル全体のリアルタイムビュー 待ち時間なしのコラボレーション 統制がとれた開発と運用

Slide 13

Slide 13 text

13 GitLab vs GitHub GitLab aims to Complete DevOps [参照] https://jp.techcrunch.com/2018/03/23/2018-03-22-gitlab-adds-support-for-github/ GitLabは、GitHubが目指すマーケットの軸から外れている

Slide 14

Slide 14 text

2. GitLab Development Lifecycle How GitLab implements Deployment Cycle 14

Slide 15

Slide 15 text

15 Complete DevOps for GitLab Checking each function Plan Create Verify Package Release Configure Monitor

Slide 16

Slide 16 text

16 Plan Get your best ideas into development. Plan Create Verify Package Release Configure Monitor Planとは、ビジネス価値とアプリケーションの要件を定義し、それに対して計画を持つ活動です。日常の会話の中で出てくる アイデアをどのように形にするのかを共有しながら計画を立てます。 [参照] https://about.gitlab.com/ Collaborative Workflows (ワークフローの協力) Visualize Schedules (見える化) Prioritize Tasks (タスクの優先順位) Track Progress (進捗管理) Planを促進するソリューション例: Atlassian、CA Technologies、iRise、Jama Software、Slack など

Slide 17

Slide 17 text

17 Plan Get your best ideas into development. Chat Issue Management Mattermost Issue Tracker Issue Board

Slide 18

Slide 18 text

18 Create Securely write and manage code and project data. Plan Create Verify Package Release Configure Monitor Createとは、ソフトウェア開発プロセスの設計、コーディング、ビルドなどを行う活動です。実際に要求を形にすべく、コードを 作成し管理していきます。 Release Candidate (ブランチ管理) Software Build (ビルド) Coding w/ quality and performance (コード化) Design of the software (設計) Createを促進するソリューション例: Bitbucket、GitLab、GitHub、Electric Cloud、CFEngine など

Slide 19

Slide 19 text

19 Create Securely write and manage code and project data. Version Control Code Review Push to create a new project Merge request Image discussion in merge request diff

Slide 20

Slide 20 text

20 Verify Ship better software, faster. Plan Create Verify Package Release Configure Monitor Verifyとは、コードの品質を検証し、リリースを確実に実現するために継続的インテグレーションを行う活動です。この時点で テストとフィードバックを繰り返し、リリース可能なアーティファクト作ります Performance Test (パフォーマンス) Security/Vulnerab ility Analysis (脆弱性分析) Regression Testing (回帰テスト) Static Code Analysis (静的解析) Verifyを促進するソリューション例: OWASP ZAProxy、Selenium、Appium、Apache Jmeter、など

Slide 21

Slide 21 text

21 Verify Where in the development process do you encounter the most delays? 開発プロセスの中で、最も遅延が発生するポイント テストを自動化し、CI/CDパイプラインにテストを導入する テスト工程を前倒しすることによって、開発全体の時間軸を前に移し、 後工程での影響度を最小化する仕組みが必要 Shift Left Testing [参照] https://about.gitlab.com/developer-survey/2018/

Slide 22

Slide 22 text

22 Verify Ship better software, faster. Continuous Integration Docker images for known vulnerabilities using Clair, a Vulnerability Static Analysis tool for containers. SAST (Static Application Security Testing) & DAST (Dynamic Application Security Testing) include in CI pipeline Code Quality

Slide 23

Slide 23 text

23 Verify SAST with each language C/C++ Flawfinder Python bandit Ruby on Rails brakeman Java find-sec-bugs Go (experimental) Go AST Scanner Static Application Security Testing 既存の.gitlab-ci.ymlファイルにCIジョブを含めるか、 Auto DevOpsを使用して、既知の脆弱性のソースコードを分析します。 Supported Languages

Slide 24

Slide 24 text

24 Verify DAST in gitlab-ci.yml Dynamic Application Security Testing dast: image: registry.gitlab.com/gitlab-org/security-products/zaproxy variables: website: "https://example.com" login_url: "https://example.com/sign-in" allow_failure: true script: - mkdir /zap/wrk/ - /zap/zap-baseline.py -J gl-dast-report.json -t $website \ --auth-url $login_url \ --auth-username "[email protected]" \ --auth-password "john-doe-password" || true - cp /zap/wrk/gl-dast-report.json . artifacts: paths: [gl-dast-report.json] OWASP ZAProxyを使用して、実行中のWebアプリケーションの分析を実行します。 ※OWASP Zed Attack Proxy: Webアプリケーションの脆弱性を見付けるための簡単に使える統合ペネトレーションテストツール

Slide 25

Slide 25 text

25 Package Manage custom container images with ease. Plan Create Verify Package Release Configure Monitor Packageとは、リリース可能な成果物(アーティファクト)を管理する活動です。この時点で、CIとCDフェーズが受け渡されま す。 Triggered Releases (トリガーリリース) Package configuration (パッケージ管理) Packageを促進するソリューション例: Jfrog Artifactory、SonaType Nexus、Docker Registryなど

Slide 26

Slide 26 text

26 Package Manage custom container images with ease. Container Registry

Slide 27

Slide 27 text

27 Release Minimize complexity with built-in Continuous Delivery. Plan Create Verify Package Release Configure Monitor Releaseとは、ターゲット環境にアーティファクトを展開するための、スケジューリング、オーケストレーション、プロビジョニングを 行う活動です。GitLabが各環境に対してデプロイ、リリース作業を実施します。 Scheduled/timed Release (スケジュールリリース) Fallbacks and Recovery (フォールバック) Deploying Applications (デプロイ) Release Coordination (リリース調整) Releaseを促進するソリューション例: Kubernetes、OpenStack、Vmware など

Slide 28

Slide 28 text

28 Release Minimize complexity with built-in Continuous Delivery. Continuous Delivery (CD) / Release Automation Environments Deploy Board Canary deployments

Slide 29

Slide 29 text

29 Configure Automate configuration management Plan Create Verify Package Release Monitor Configureとは、リリース後の環境に対して変更作業やデプロイ環境のプロビジョニングを行う活動です。単発の変更作業 を示すわけではなく、継続的な構成管理の自動化を示します。 Deploying Applications (再デプロイ) Infrastructure Provisioning (インフラの展開) Configureを促進するソリューション例: Ansible、Chef、Puppetなど Configure

Slide 30

Slide 30 text

30 Configure Automate configuration management Infrastructure Configuration Application Control Panel Configure GKE cluster Monitoring of Kubernetes cluster Secret variables Scale a deployment from the Environments page

Slide 31

Slide 31 text

31 Monitor Analyze shipping velocity and application performance. Plan Create Verify Package Release Configure Monitor Monitorとは、リリースに対する問題を特定するだけでなく、開発工程のボトルネックを把握し、エンドユーザーへの影響を図 る活動です。これらの結果、変更および新しいリリースサイクルに影響するフィードバックが得られることもあります。 Production metrics (生産指標) User Experience (ユーザー経験) Infrastructure Performance (パフォーマンス測定) Monitorを促進するソリューション例: New Relic、Pandra、Zabbix など

Slide 32

Slide 32 text

32 Monitor Analyze shipping velocity and application performance. Application Performance Monitoring Prometheus monitoring Custom Metrics

Slide 33

Slide 33 text

33 Monitor Analyze shipping velocity and application performance. Communication Process Monitoring Conversational Development Index

Slide 34

Slide 34 text

34 GitLab DevOps Toolchain Complete DevOps Complete DevOps

Slide 35

Slide 35 text

35 GitLab DevOps Toolchain New features in 2018

Slide 36

Slide 36 text

36 Enterprise Product Support Security / Scale / Support Security Scale Support Respond Non-functional Requirement Technical Support セキュリティ スケール サポート •Extended authentication •Role-based permissions •LDAP group sync •CI build permissions •Push rules •Audit logs •Deployment Flexibility •External Repository Mirroring •High Availability •Geo Performance •License Flexibility •24x7 Emergency Support •4-Hour Non-emergency Response Time •HA Architecture Assistance •Live Upgrade Assistance ハイレベルなセキュリティ機能 非機能要求に応える機能 エンタープライズ向け技術支援 100人以上のユーザーがいる組織にとって、その機能の必要性が 高いと判断する場合に、GitLab EEに取り込まれる。 High-Level Security Functions

Slide 37

Slide 37 text

3. GitLab Cloud Native Application GitLab deploys Cloud Native Application simplify 37

Slide 38

Slide 38 text

38 What’s Cloud Native Containerized / Orchestration / Microservice クラウドコンピューティングとコンテナスケジューラの機能を最大限に活用し、アプリケーションを構築する方法。 1. Containerized - コンテナ化 - 2. Dynamically orchestrated – オーケストレーション - 3. Microservice oriented - マイクロサービス指向 - アプリケーションやプロセスをコンテナにパッケージ化することにより、再現性、透過性、およびリソースの分離が容易になります。 積極的にスケジュールされた動的なオーケストレーションにより、リソースの使用率を最適化します。 アプリケーションをマイクロサービスに分割することにより、アプリケーションの全体の俊敏性と保守性を向上します。 [参照] https://www.cncf.io/about/faq/

Slide 39

Slide 39 text

39 Advantage of Cloud Native Apps Easy integration of Cloud Native Platform Cloud Native Automated SDLC Speed Up Release Cycle Improve Customer Experience (Software Development Life Cycle) Cloud Native Appsのメリット ・開発者の時間を解放する ・コンテナオーケストレーションを介して、アプリケーションリソースを監 視し、スケールすることでコストを節約する。 ・より速いリリースとフィードバックを得る。 ・開発をビジネス目標に合わせられる。 ・システム開発からビジネス開発へ時間をシフトできる。 Cloud Native Platformに手間をかけずに開発を開始する

Slide 40

Slide 40 text

40 GitLab w/ Kubernetes on GCP GitLab supports GKE integration [参照] https://jp.techcrunch.com/2018/04/06/2018-04-05-gitlab-launches-a-native-integration-with-googles-kubernetes-engine/

Slide 41

Slide 41 text

41 GitLab w/ Kubernetes on GCP GitLab + Google Cloud Platform = simplified, scalable deployment GitLabとGKEの統合により、Google Cloud Platformで管理されたデプロイメント環境を簡単に設定でき、柔軟な DevOps Toolchainを作ります。

Slide 42

Slide 42 text

42 GitLab w/ Kubernetes on GCP GitLab + Google Cloud Platform = simplified, scalable deployment GitLabとGKEの統合により、Google Cloud Platformで管理されたデプロイメント環境を簡単に設定でき、柔軟な DevOps Toolchainを作ります。

Slide 43

Slide 43 text

43 Today’s Summary Complete DevOps GitLab Vision GitLab Components GitLab’s Cloud Native Apps GitリポジトリだけじゃないGitLabが真の目指す世界 Complete DevOpsを目指すための機能開発とツールによるDevOpsの統制 Cloud Native Applicationをより簡単に作れる世界

Slide 44

Slide 44 text

Promotions 44

Slide 45

Slide 45 text

45 Join the user group GitLab.JP Community https://gitlab-jp.connpass.com/ GitLab.JP Community (Slack: https://gitlab-jp.herokuapp.com/)

Slide 46

Slide 46 text

46 GitLab実践ガイド Now On Sale DevOpsワークフローの導入と運用 GitLab実践ガイド 販売サイトURL:https://book.impress.co.jp/books/1116101163 Ansible実践ガイド 第2版 販売サイトURL:https://book.impress.co.jp/books/1117101100

Slide 47

Slide 47 text

47 GitLab Enterprise Editions GitLab EE Value of Creationline

Slide 48

Slide 48 text

Thank you… 48

Slide 49

Slide 49 text

49 本資料に関する諸注意 Announcements Shingo.Kitayama Mailto: [email protected] GitLabは、GitLab Inc.の商標です。 その他、本資料で記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。 内容に関しては個人の意見に基づくものであり、十分考慮の上ですが、 所属組織団体の公式見解とは異なる場合がございます。 何卒、ご了承下さい。 商標