AWS・連携
2019年12月 - 2020年1月
Backlogの通知をSlack連携させる
ECナビのCS対応用Backlogで課題の追加や更新・とりこぼしに気付きづらい問題を解決するため、BacklogのイベントをSlack通知させるシステムを新規開発。Lambdaとバッチ処理を組み合わせた独立したシステムを構築。
プロジェクト概要
チーム構成:1名
役割:設計・開発
期間:2019年12月 - 2020年1月
技術スタック
GoMySQLLinux/UNIXLambdaAPI GatewayCloudwatchPHPAWSSlack API
プロジェクト背景
ECナビではCSを外注しており、やり取りをBacklogで行っている。従来の運用では、業務委託先担当者が社内担当者を指定してBacklogに起票しても通知はどこにも来ず、各課題担当者は担当になった課題があるかを確認しに行く必要があった。課題の起票ペースは日によって数回〜数日に1回と幅があり、対応状況や更新の通知が来なかったため、都度アクセスして確認するしか方法がなかった。
課題・チャレンジ
- Backlogのデフォルト通知機能が利用できない(機微情報が含まれるため)
- 課題の更新が定期的・頻繁でないため、確認頻度が落ちて対応速度が遅くなる
- 担当者以外が気付きづらい仕組みで課題の確認漏れが増加
- LambdaやGoは初めての技術スタック
- 複数プロジェクトに応じた適切なSlack通知の設計
解決策・アプローチ
- Webhookを利用したLambda関数によるイベント通知システムの構築
- プロジェクトやカテゴリに応じたSlackグループへのメンション機能
- 平日10:00AMのリマインド通知バッチ処理の実装
- 優先度に応じた通知期間の設定(高:3日、中:1週間、低:通知なし)
- 独立したシステム設計による改修しやすさの確保
技術詳細
アーキテクチャ
Webhookを利用したLambda関数によるイベント通知システムと、バッチ処理によるリマインド通知システムの組み合わせ。独立したシステム設計により、改修・削除が容易な構造。
データベース設計
Backlog APIからのデータ取得とSlack通知の連携。ジェネレータを使用した100件ずつのリクエスト処理。例外発生時のAPI_KEY保護機能。
主要なAPI・機能
- Backlog Webhook API
- Slack API
- Backlog API
- CloudWatch API
成果・学び
成果
- 課題の対応漏れがほぼ0になり、業務委託先担当者からの進捗伺いが来ない状況を実現
- 課題の更新があれば通知が来るため、都度確認する手間を削減
- 担当者以外も気付きやすい仕組みにより、課題のパスや進捗確認が容易に
- 独立したシステムにより、今後も要望に応じた改善が可能
- CloudWatchLogsとDatadogによる監視システムでエラー検知を実現
学び
- Lambda関数の設計・実装手法
- Go言語での開発経験
- Webhookを活用した外部サービス連携
- バッチ処理とイベント駆動処理の組み合わせ
- 独立したシステム設計の重要性
- 機微情報を考慮した通知システムの設計