リモート開発とCI/CDで業務効率化と迅速なリリース
はじめに
近年では、様々な企業がマーケティングデータを基に消費者の行動パターンを可視化・分析し、需要の予測や販促計画の立案を行っています。連携するデータも多様化が進み、外部データベースへの接続、ダンプファイル取得、WebAPIのリクエストなど色々な方法に対応する必要があります。
今回はそんな課題を解決する『リモート開発とCI/CDで業務効率化と迅速なリリース』をテーマにお伝えできればとおもいます。
1.概要
連携するデータも多様化が進む中、外部データベースへの接続、ダンプファイル取得、WebAPIのリクエストなど色々な方法に対応する必要がありますが、リリースしたデータウェアハウスに対して新しいデータ連携を追加するために、連携元との連携方法の仕様調整や各データの精査を1つずつ進めていたのでは、実際にデータを分析に利用できるまでに時間がかかり過ぎてしまいます。
成果物をお客様とリアルタイムで共有し、お客様自身で迅速なデータ連携追加を可能とするためにGitHubとCIツールを使用した継続的インテグレーション/継続的デリバリー(CI/CD)を薦めています。
2.構成図
構築する環境は下記の図通りです。
クラウドサービスはAzure、GCP、AWSなどに対応しています。データウェアハウスとストレージを用意し、CIツールを実行する環境になります。
実行するプログラムや定義ファイルなどはGitHubで一元管理します。
3.成果物管理
1.リポジトリの作成
お客様に組織アカウントを作成していただき、組織に参加してリポジトリを作成します。こうすることで成果物はお客様の管理下になり、納品物として別途用意する必要が無くなります。
新規データ連携の追加や既存データ連携の変更を行う場合は、メンバーの作業毎にブランチを切って開発を行い、管理者の承認が無ければリリース版に反映されないようにします。
2.プルリクエストとブランチのマージ
プルリクエストを利用することでブランチを切って開発した機能のリリースに管理者の承認を必須とします。管理者のレビューとブランチのマージを承認ワークフローとして行います。
3.イシューによる問題管理
他のコミュニケーションツールを使用すると情報が一元管理されないため、見落としが発生したり、履歴から機能に関する問い合わせ内容を探すのに手間がかかります。リポジトリのイシューでやり取りすることで問い合わせ内容が何に属するものか分かりやすくなります。
4.テスト・リリース管理
CIツールでテスト・リリースを自動化することにより、作業の属人化から解放されるため、お客様による迅速かつ頻繁なテスト・リリースが可能になります。
GitHubのプッシュをトリガーに自動デプロイする方法もありますが、データ連携開始のスケジュールが決まっていたり、環境でデータ連携が実行中の場合があるので手動での実施を採用しています。
テストとリリースは別々のジョブを用意します。実行するジョブによって適用する環境を切り替えることで誤って本番環境に適用される操作を回避します。
5.運用保守
基本的にはお客様がデータ連携の追加や変更を行えるようにし、既存機能で対応できない新しい連携方式や特異なデータへの対応などを求められた場合に機能改修を請け負います。
6.まとめ
パンデミックの影響でお客様先への移動や常駐が難しくなったり、テレワークが推奨されるようになったことで、AWSのワークスペースなどを利用した場所に左右されないシステム開発が増えてきています。
ジールでは今回ご紹介したGitHubとCIツールを使用した継続的インテグレーション/継続的デリバリー(CI/CD)を積極的に活用し、効率的な開発や品質管理、迅速なデータの提供を目指しています。