はてなの金次郎

Pythonエンジニアの奮闘記。Python, Django, Gitlab, Docker, AWS, k8s...

「GitLab実践ガイド」から学んだこと。

GitLab実践ガイド (impress top gear)

GitLab実践ガイド (impress top gear)

概要

  • 著作: 「GitLab実践ガイド」
  • 著者: 北山 晋吾
  • 著者経歴:
     楽天、日本ヒューレットパッカードに従事したのち、現在はテクニカルアーキテクトとしてDevOpsやクラウドDeep Learning分野をはじめとした、OSSソリューションの提案・コンサル・構築デリバリーを担当。

要約

組織がDevOpsを実現するためには、ConvDev(Conversationnal Development)の開発スタイルを実施するのが良いとのこと。そのためにGitlabは、Gitリポジトリ、タスク管理、CI/CD、Wiki、コンテナレジストリ、GitLab Pages(静的サイトホスティング)、モニタリング、Kubernetes連携機能など、アプリケーション開発・運用のために統合的な機能を提供しています。本書は、それらを用いた典型的な構成や実践的な使い方を紹介します。

※ 本書におけるDevOpsの定義

ビジネスやプロジェクトを成功させるために、組織文化とツールの両面を改善することで、
ビジネスアジリティを向上させ、リスクを低減する活動

本書より引用

※ ConvDevとは

ConvDevは、開発プロセスフロー全体において、グループメンバー同士のコミュニケーション
を重視してアプリケーション開発を行う自然な開発スタイルです。具体的には、
開発者は一貫性のある方法で、開発プロセスの一つひとつを追跡することが求められます。
ConvDevでは、アイデアから展開までのコラボレーションと知識共有を促進することで、
開発ライフサイクルを加速することを目指しています。

本書より引用

面白かった章とその理由

第1章 GitLabが目指す開発スタイル

単なるバージョン管理ツールではなく、DevOpsを実現するために統合的な機能を提供するアプリケーション支援ツールということを知れたことが大きな学びでした。本書を読むまでは、GitHubと似たサービスだけどプライベートリポジトリが作成できて、CIツールは独自に提供してるんだくらいにしか思ってませんでした。もしかすると、私と同じような認識の方もいらっしゃるかもしれません。

そういった意味で、GitLabの可能性をすごく感じられ、GitLabについてもっと詳しくなりたいなと思えた章でした。こちらの第1章に関しては 無料公開 されているのでぜひ一読してみてください。

理解できなかった章とその理由

第6章 継続的デプロイ

アプリケーション開発やInfrastructure as Codeにおける、ビルド、単体テスト、
デプロイメント、機能テスト、サービスリリースの各プロセスはステージと呼ばれ、
これら全体を自動化する実装をデプロイメントパイプラインと呼びます。

本書より引用(以下も同様)

担当している案件では、ビルド、単体テスト、デプロイメントに関しては自動化できていますが、機能テスト、サービスリリースに関しては部分的に自動化できていないように感じました。そのため、機能テスト、サービスリリースの自動化に関して想像しにくく理解が進みませんでした。

継続的デプロイにおいては、開発担当者側で一つひとつのリリース判断を行うのではなく、
ビジネス担当者の判断によって、動的なリリースを実現することが理想の形とも言えます。

ステージ間のデプロイ自動化だけなく、
サービスに影響を及ぼすすべての変更を動的に管理できることが求められます。

また、継続的デプロイはこの章を読んでいてまだまだ知識不足だと感じましたし、開発ワークフローやブランチ戦略に基づく最適なデプロイメントパイプラインの構築に関して考えたことがありませんでした。それは、担当している案件のシステム構成や開発ワークフローへの理解不足からきている気がするため改善したいです。

Review Appsはレビューアがすぐに動くアプリを確認できると同時に、
非エンジニアのメンバーにとってもデザインや構成を確認できることで、
開発上の手戻りや無駄なプロセスを回避します。

Review Appsに関しては、 .gitlab-ci.ymlenvironment パラメータを適切に設定できればすぐに導入できそうな気がしましたが、 environment パラメータの nameurl オプションに動的な変数を割り当てる必要があるということで、ここがよくわからなかったので調べる必要があります。

仕事に活かせそうな知識、活かせそうな状況と活かし方

  • デフォルトラベルやIssue Boardの活用
  • 担当案件のシステム構成への理解を深め、本書で継続的デプロイに関する知識が活かせないか検討・提案してみる
  • Review Appsの導入
  • GitLab CEを構築してみる

ブクログ始めました

フォローお待ちしてます。 https://booklog.jp/users/jumpyoshi