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. Today’s Agenda GitLabによる Complete DevOps 3 1. GitLab Complete DevOps

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

    Continuous Deployment Plan Create Verify Package Release Configure Monitor Toolchainのステージごとに異なるミドルウェアを連携している
  5. 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
  6. Complete DevOps Culture Shift from traditional DevOps to complete DevOps

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

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

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

    Management Mattermost Issue Tracker Issue Board
  13. 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 など
  14. 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
  15. 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、など
  16. 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/
  17. 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
  18. 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
  19. 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アプリケーションの脆弱性を見付けるための簡単に使える統合ペネトレーションテストツール
  20. 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など
  21. 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 など
  22. 28 Release Minimize complexity with built-in Continuous Delivery. Continuous Delivery

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

    Monitor Configureとは、リリース後の環境に対して変更作業やデプロイ環境のプロビジョニングを行う活動です。単発の変更作業 を示すわけではなく、継続的な構成管理の自動化を示します。 Deploying Applications (再デプロイ) Infrastructure Provisioning (インフラの展開) Configureを促進するソリューション例: Ansible、Chef、Puppetなど Configure
  24. 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
  25. 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 など
  26. 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
  27. 38 What’s Cloud Native Containerized / Orchestration / Microservice クラウドコンピューティングとコンテナスケジューラの機能を最大限に活用し、アプリケーションを構築する方法。

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

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

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

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