【事例】DevOps環境で使うツールを統一することで生産性向上や高速化を実現
はじめに
第4回目の今回は、開発で使う各種ツールがプロジェクトごとに異なっていたところをオールインワンのツールに統一し、生産性向上やデプロイ頻度を高めるなどの成果をもたらしたケースを紹介します。
開発ツールがプロジェクトごとにバラバラで
知見や専門知識が共有できない
今回の事例のベースとなるのは社員数が約300人で、企業向けにITソリューションを提供する日本企業です。日本企業におけるITシステムは自社で内製するのではなく、プロジェクトごとに開発や運用を社外のエンジニアから選定し、委託する形をとることが少なくありません。この構造が日本におけるDevOps達成のために、社内のエンジニアと協力する権限を適切に管理することへのハードルとなっていました。
DevOpsはビジネスの現場に近いところで開発と運用が密に連携をとり、細かく改善のサイクルを繰り返すことで、アプリケーション開発の効果やスピードを高めます。社外に発注するとなると、まとまった単位でしか改善が進みませんし、理解の行き違いも起こりがちです。また要件のとりまとめや業者選定で時間もコストもかかってしまいます。こうした習慣や構造がようやく変化し、日本でもDevOpsが浸透してきています。
同社もかつては開発プロジェクトごと、チームごとに異なるツールを導入し、個別のソース管理やバージョン管理ツールを使用していました。また、サービス開発に必要な要素を各ツールに分散させていました。例を挙げると、プロジェクトごとに使用されていたツールにはGitBucket、BitBucket、Redmine、Jira、Jenkins、Drone CI、Circle CIなどがあり、これらが知識やノウハウのサイロ化を引き起こしていました。現場のエンジニアは「社内の開発者や運用オペレーターの知見と専門知識をプロジェクトの枠を超えて共有する方法を求めていました」と話しています。
様々なツールがプロジェクトごとに運用されてしまうと、権限管理もプロジェクトごとにサイロ化します。知見や専門知識までもプロジェクトごとに閉じ、同様にサイロ化されてしまいます。これは同社にとって好ましいこととは言えません。先述したエンジニアが言うとおり、開発や運用を通じて獲得したノウハウは会社全体で共有できるようにしたほうが、将来の進展につながります。
バージョン管理ツール(VCS)を
分散型バージョン管理ツール(Git)へ
日本でGitが注目されはじめた2014年ごろから、同社では各種バージョン管理ツールを分散型バージョン管理システム(Git)に統合する機運が高まってきました。同社が内部で検討を進めたところ、Gitは大部分のニーズを満たすと分かってきました。
中でも、この現場が最も優先していたのは日本の商習慣に沿って承認を管理することでした。つまり日本におけるシステムの開発や運用では(SIerなど)社外との連携が必要になるため、会社の枠を超えて承認を管理する必要があるということです。
加えて、DevOpsに必要な機能がオールインワンな環境であることです。現場のエンジニアは「プロジェクトごとにさまざまなツールを組み合わせるのは労力的にもコスト的にも多くの無駄が生じてしまうことを経験的に痛感しています。そのため当時の私たちが必要とするイシュー管理、進捗管理、コード管理、CI、CDなどを統合的に使えるツールを探しました」と言います。
同社は各種Gitの中からGitLabを選定しました。まずはGitLabを小規模なチームに導入して評価したところ、要件に合うことが確認できたため、徐々に社内で利用を拡大させていきました。現在では全社で統一的にGitLabを運用する環境が整っています。GitLabプラットフォームでは組織を超えて使用できるため、社内のチームメンバー全体で開発を通じたノウハウの共有が可能となったのです。
今では非エンジニアも含め、同社の全社員とプロジェクトで関わりがある社外のエンジニアもGitLabを使用しています。同社のエンジニアは「GitLabでプロジェクト管理のコンセプトが開発チームだけではなく、運用、設計、営業のチームにも浸透し、知見や専門知識の共有が容易にできるようになりました」と話しています。
また、先述したように同社が最重要視していたのは会社を越えた承認管理です。その点、GitLabの承認管理は同社のニーズに応えることができました。社内エンジニアはもちろん、社外エンジニアは承認を経ることで、どちらも希望するプロジェクトにDevOpsを実装できます。
社内と社外のメンバーがセキュアなプラットフォームを共有できるため、社内外を隔てる障壁がなくなり、かつ情報漏えいを恐れることなくノウハウや専門知識を共有することが容易になりました。また、画像のDiff機能やWebIDEが追加されたことで技術者以外でも使いやすくなり、GitLabの活用の幅が広がりました。
ツールの統合と一元化、デプロイの高速化と高頻度化へ
GitLabを導入してから得られた成果のうち、初期のものは異なるプロジェクト管理ツールの配下に散在していたリポジトリをGitLabに集約できたことが挙げられます。加えてサービス運用フローの改善も挙げられます。同社の監査法人からは「リスク管理を考慮した優れたワークフローになっている」と高い評価を受けたそうです。
さらにGitLab SCM(ソースコード管理)により、生産効率と品質が大幅に向上しました。あるチームは開発サイクルが最大で6ヶ月かかっていたところ、今ではわずか数日でリリースできるほど短くなりました。開発チームメンバーの中には「GitLabの新機能に毎月興奮しています」とGitLabの月次リリースに頼る人もいます。
開発ライフサイクルの早い段階でバグを検出することは、アウトプット能力向上にもつながります。現場では「品質テストがリリース前にスムーズに実行できるため、予定されたリリース日を守り、計画通りにマーケティングを実行できる」と評価されています。検証は小規模な仮想インフラを再現する社内ツールを用いて、GitLab CIと連携して実施しています。
GitLab CIにより、同社のチームはブルーグリーンデプロイメントのような小さな開発単位のデプロイを迅速に行えるようになりました。これまで最長で6ヶ月に1度の頻度で約1日かかっていたデプロイが、最短で数週間に1度の頻度で数分で済むようになっています。
それまで用いていたSlack、Jenkins、Prometheus、RedmineはすべてGitLabと連携されています。今回のツール統合により、イシュー管理、進捗管理、コード管理、CI/CDの手順など、これまではこれらのプロセスがすべてチームごとに異なる状況をGitLabのDevOpsプラットフォームで統一できました。また、現場では人員を柔軟に配置できるようになり、新しいメンバーがすぐにチームに参加しやすくなりました。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- 【事例】すべての機能を利用可能なDevSecOpsプラットフォームで生産性向上
- DevOpsはここから始めよう
- DevOpsのフローとDevOpsの実践に必要な技術
- 【事例】アジャイル開発を実践する老舗IT企業がCI/CDの効率化で生産性向上とコスト削減を実現
- 開発チームの環境をAnsibleで一括構築しよう
- DevOpsを始めるときに「何をやるべきか」を理解しよう
- DevOps、CI/CDパイプラインでもコンテナは大活躍!
- 【事例】開発プロセスの初期段階からセキュリティを組み込んだ製品を導入することでDevSecOpsやシフトレフトを実現
- DevOpsのアプリ開発にも欠かせない「Git」を活用したソースコードのバージョン管理
- コンテナー管理ツール「Rancher」のエンタープライズ利用に向けたイベント開催