LIVESENSE ENGINEER BLOG

リブセンスエンジニアの活動や注目していることを発信しています

DatadogとGitHub Actionsを使ってバグが混入したデプロイを一瞬で見破れるようにする方法

これは Livesense Advent Calendar 2024 DAY 19 の記事です。

はじめに

株式会社リブセンスに内定者インターンとして参加している小野です。

本記事では、Datadogを活用してアプリケーションのバージョントラッキングを実装する方法について解説します。 アプリケーション開発の過程でバージョン管理を行うことには、以下のようなメリットが存在します。

  • バージョンごとのパフォーマンスの監視
  • 発生したエラーがいつリリースされたバージョンによるものなのかを監視

また今回の実装では、GitHubのコミットハッシュをバージョンとして表示する方針で進めます。
(技術ブログを書くのはこれが初めてなので緊張していますが、少しでもお役に立てれば幸いです...!)

本記事で行わないこと
  • GitHub ActionsでのCI/CDパイプラインの構築
  • タスク定義ファイルに関する説明

実装しようと思った背景

リブセンスでは以前よりDatadogを活用してアプリケーションごとのパフォーマンスの監視やログの収集を行ってきました。

しかし、デプロイメントの追跡が行えていなかったためバグや問題が発生した際にどのコミットでそれが発生したのかを特定できませんでした。
特にバグが混入したバージョンを素早く特定できないことは、開発チーム全体の効率性に影響を与える重要な課題でした。

このような背景から、アプリケーションのデプロイメントを追跡することの重要性を認識し、新たな取り組みを展開することに決定しました。

実装手順

タスク定義にバージョンタグを追加

タスク定義を行っているファイル内の、environment内にDD_SERVICEDD_VERSIONを、environmentと同じ階層にdockerLabelsを追加します。
実際にDatadog上でバージョンとして表示されるコミットハッシュは変数として設定しています。これによりGitHub Actions側からCI/CDが実行されるたびに値を動的に更新させることが可能となり、バージョントラッキングが実現できます。

{
  "containerDefinitions": [

 --- 省略 ---

      "environment": [
        {
          "name": "DD_SERVICE",
          "value": "service_name"
        },
        {
          "name": "DD_VERSION",
          "value": "{{GITHUB_SHA}}"
        },
      ],
      "dockerLabels": {
        "com.datadoghq.tags.service": "service_name",
        "com.datadoghq.tags.version": "{{GITHUB_SHA}}"
      },

 --- 省略 ---
  ]
}


GitHub Actionsからコミットハッシュをtask定義ファイルに渡す

GitHub ActionsのGet GitHub_SHAステップでコミットハッシュの最初の7桁を取得し、Update JSON with GITHUB_SHAステップで取得したコミットハッシュを基にTask定義ファイルを更新します。
これにより、CI/CDが実行されるたびにTask定義には常に最新のコミットハッシュが反映されるため、開発チーム全体で異なるバージョンごとのパフォーマンスの比較や分析を行うことが可能となります。

- name: Get GitHub_SHA
   id: get_short_sha
   run: echo "short_sha=${GITHUB_SHA::7}" >> $GITHUB_OUTPUT

- name: Update JSON with GITHUB_SHA
   run: |
     sed -i "s/{{GITHUB_SHA}}/${{ steps.get_short_sha.outputs.short_sha }}/g" path/to/your/task-definition.json

実装結果

画像のようにコミットハッシュがDatadogのAPM(Application Performance Monitoring)で確認できたら成功です!

最後に

今回はDatadogでアプリケーションのバージョンをトラッキングする方法を説明しました。

バージョン管理はアプリケーション開発において大切な要素です。Datadogのバージョントラッキングを実装することで、より効果的にアプリケーションの改善や問題解決を行うことができるため、ぜひ実装してみてください!

最後まで読んでくださりありがとうございました!

参考にした記事

docs.datadoghq.com