「GitLab実践ガイド」から学んだこと。
概要
- 著作: 「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.yml
に environment
パラメータを適切に設定できればすぐに導入できそうな気がしましたが、 environment
パラメータの name
と url
オプションに動的な変数を割り当てる必要があるということで、ここがよくわからなかったので調べる必要があります。
仕事に活かせそうな知識、活かせそうな状況と活かし方
- デフォルトラベルや Issue Board の活用
- 担当案件のシステム構成への理解を深め、本書で継続的デプロイに関する知識が活かせないか検討・提案してみる
- Review Apps の導入
- GitLab CE を構築してみる
Discussion