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

GitLabによるComplete DevOps

GitLabによるComplete DevOps

Shingo.Kitayama

April 25, 2018
Tweet

More Decks by Shingo.Kitayama

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

  4. 1. GitLab Complete DevOps
    What’s complete DevOps
    4

    View Slide

  5. 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を維持する時間を短縮し、
    ソフトウェア開発に時間を費す環境を提供すること。

    View Slide

  6. 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の法則: チームの開発成果がその組織の内部的なコミュニケーションのあり方によって決まる

    View Slide

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

    View Slide

  8. 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

    View Slide

  9. 9
    Traditional DevOps
    Integration with other tools in our stack

    View Slide

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

    View Slide

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

    View Slide

  12. 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
    ライフサイクル全体のリアルタイムビュー 待ち時間なしのコラボレーション 統制がとれた開発と運用

    View Slide

  13. 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が目指すマーケットの軸から外れている

    View Slide

  14. 2. GitLab Development Lifecycle
    How GitLab implements Deployment Cycle
    14

    View Slide

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

    View Slide

  16. 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 など

    View Slide

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

    View Slide

  18. 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 など

    View Slide

  19. 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

    View Slide

  20. 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、など

    View Slide

  21. 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/

    View Slide

  22. 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

    View Slide

  23. 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

    View Slide

  24. 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アプリケーションの脆弱性を見付けるための簡単に使える統合ペネトレーションテストツール

    View Slide

  25. 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など

    View Slide

  26. 26
    Package
    Manage custom container images with ease.
    Container Registry

    View Slide

  27. 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 など

    View Slide

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

    View Slide

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

    View Slide

  30. 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

    View Slide

  31. 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 など

    View Slide

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

    View Slide

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

    View Slide

  34. 34
    GitLab DevOps Toolchain
    Complete DevOps
    Complete DevOps

    View Slide

  35. 35
    GitLab DevOps Toolchain
    New features in 2018

    View Slide

  36. 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

    View Slide

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

    View Slide

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

    View Slide

  39. 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に手間をかけずに開発を開始する

    View Slide

  40. 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/

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  44. Promotions
    44

    View Slide

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

    View Slide

  46. 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

    View Slide

  47. 47
    GitLab Enterprise Editions
    GitLab EE Value of Creationline

    View Slide

  48. Thank you…
    48

    View Slide

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

    View Slide