Pro Yearly is on sale from $80 to $50! »

GitLabによるComplete DevOps

GitLabによるComplete DevOps

269258447d4284b5cb2ce0f048d143b2?s=128

Shingo.Kitayama

April 25, 2018
Tweet

Transcript

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

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

    Powered by Shingo.Kitayama
  3. Today’s Agenda GitLabによる Complete DevOps 3 1. GitLab Complete DevOps

    2. GitLab Development Lifecycle 3. GitLab Cloud Native Application
  4. 1. GitLab Complete DevOps What’s complete DevOps 4

  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を維持する時間を短縮し、 ソフトウェア開発に時間を費す環境を提供すること。
  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の法則: チームの開発成果がその組織の内部的なコミュニケーションのあり方によって決まる
  7. 7 Traditional DevOps DevOps Toolchain for Traditional DevOps Continuous Integration

    Continuous Deployment Plan Create Verify Package Release Configure Monitor Toolchainのステージごとに異なるミドルウェアを連携している
  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
  9. 9 Traditional DevOps Integration with other tools in our stack

  10. Complete DevOps Culture Shift from traditional DevOps to complete DevOps

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

    Continuous Deployment Plan Create Verify Package Release Configure Monitor Complete DevOps
  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 ライフサイクル全体のリアルタイムビュー 待ち時間なしのコラボレーション 統制がとれた開発と運用
  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が目指すマーケットの軸から外れている
  14. 2. GitLab Development Lifecycle How GitLab implements Deployment Cycle 14

  15. 15 Complete DevOps for GitLab Checking each function Plan Create

    Verify Package Release Configure Monitor
  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 など
  17. 17 Plan Get your best ideas into development. Chat Issue

    Management Mattermost Issue Tracker Issue Board
  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 など
  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
  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、など
  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/
  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
  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
  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 "john.doe@example.com" \ --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アプリケーションの脆弱性を見付けるための簡単に使える統合ペネトレーションテストツール
  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など
  26. 26 Package Manage custom container images with ease. Container Registry

  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 など
  28. 28 Release Minimize complexity with built-in Continuous Delivery. Continuous Delivery

    (CD) / Release Automation Environments Deploy Board Canary deployments
  29. 29 Configure Automate configuration management Plan Create Verify Package Release

    Monitor Configureとは、リリース後の環境に対して変更作業やデプロイ環境のプロビジョニングを行う活動です。単発の変更作業 を示すわけではなく、継続的な構成管理の自動化を示します。 Deploying Applications (再デプロイ) Infrastructure Provisioning (インフラの展開) Configureを促進するソリューション例: Ansible、Chef、Puppetなど Configure
  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
  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 など
  32. 32 Monitor Analyze shipping velocity and application performance. Application Performance

    Monitoring Prometheus monitoring Custom Metrics
  33. 33 Monitor Analyze shipping velocity and application performance. Communication Process

    Monitoring Conversational Development Index
  34. 34 GitLab DevOps Toolchain Complete DevOps Complete DevOps

  35. 35 GitLab DevOps Toolchain New features in 2018

  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
  37. 3. GitLab Cloud Native Application GitLab deploys Cloud Native Application

    simplify 37
  38. 38 What’s Cloud Native Containerized / Orchestration / Microservice クラウドコンピューティングとコンテナスケジューラの機能を最大限に活用し、アプリケーションを構築する方法。

    1. Containerized - コンテナ化 - 2. Dynamically orchestrated – オーケストレーション - 3. Microservice oriented - マイクロサービス指向 - アプリケーションやプロセスをコンテナにパッケージ化することにより、再現性、透過性、およびリソースの分離が容易になります。 積極的にスケジュールされた動的なオーケストレーションにより、リソースの使用率を最適化します。 アプリケーションをマイクロサービスに分割することにより、アプリケーションの全体の俊敏性と保守性を向上します。 [参照] https://www.cncf.io/about/faq/
  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に手間をかけずに開発を開始する
  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/
  41. 41 GitLab w/ Kubernetes on GCP GitLab + Google Cloud

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

    Platform = simplified, scalable deployment GitLabとGKEの統合により、Google Cloud Platformで管理されたデプロイメント環境を簡単に設定でき、柔軟な DevOps Toolchainを作ります。
  43. 43 Today’s Summary Complete DevOps GitLab Vision GitLab Components GitLab’s

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

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

    (Slack: https://gitlab-jp.herokuapp.com/)
  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
  47. 47 GitLab Enterprise Editions GitLab EE Value of Creationline

  48. Thank you… 48

  49. 49 本資料に関する諸注意 Announcements Shingo.Kitayama Mailto: spchildren@gmail.com GitLabは、GitLab Inc.の商標です。 その他、本資料で記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。 内容に関しては個人の意見に基づくものであり、十分考慮の上ですが、

    所属組織団体の公式見解とは異なる場合がございます。 何卒、ご了承下さい。 商標