🚀 새로운 시작: 팀장님의 등장과 명확한 가이드
2025년 1월 7일, 조직 개편과 함께 팀장님이 새로 부임하셨습니다. 이전 글에서 고군분투했던 본부장님용 템플릿은 팀장님의 스타일과는 조금 달랐지만, 이번에는 매우 강력한 무기가 있었습니다. 바로 엑셀로 정리된 명확한 요구사항이었죠.
팀장님의 3대 요구사항
- 필드 정의: 테이블에 포함되어야 할 열(Column) 정보를 명확히 정의.
- 데이터 형식: 각 필드에 들어갈 데이터 규격 지정.
- 상세 기록: 업무 내용은 최대한 자세히 기록할 것.
💡 자동화의 필요성: "도구가 잡무가 되지 않게"
팀장님의 가이드는 명확했지만, 실무자 입장에서 일일이 날짜를 입력하고 상태를 변경하는 것은 또 다른 '잡무'였습니다. 이를 해결하기 위해 세 가지 핵심 자동화를 설계했습니다.
- 시작일 자동화: 상태가 "진행 중"으로 변경되면 현재 날짜 자동 입력.
- 종료일 자동화: 상태가 "테스트" 또는 "완료"로 변경되면 현재 날짜 자동 입력.
- 실시간 알림: 완료 상태가 되는 즉시 팀 채널에 공유.
🛑 난관: GUEST 계정의 한계
팀원 모두 GUEST 계정이었기에 노션 자체 자동화 기능을 사용하는 데 제약이 있었습니다. 다행히 유료 계정 권한을 가진 분의 도움으로 기본 자동화는 해결했으나, 커스텀 Slack 알림은 외부 시스템 연동이 필수적이었습니다.
🏗️ 시스템 아키텍처
단순 알림을 넘어, 노션 페이지 링크와 담당자 정보가 포함된 구조화된 메시지를 보내기 위해 Firebase Functions를 브릿지로 활용했습니다.

🛠️ 실전 구현: Firebase Functions 기반 Slack 앱
1. Firebase Functions 코드 작성
Node.js와 Axios를 활용하여 노션의 페이로드를 받아 Slack Block Kit 형식으로 전송합니다.
const functions = require('firebase-functions');
const axios = require('axios');
exports.notionToSlack = functions.https.onRequest(async (req, res) => {
try {
const { title, assignee, completedDate, url } = req.body;
const slackMessage = {
text: `✅ 업무 완료 알림`,
blocks: [
{
type: "section",
text: {
type: "mrkdwn",
text: `*${title}*\\n*담당자:* ${assignee}\\n*완료일:* ${completedDate}`
}
},
{
type: "actions",
elements: [
{
type: "button",
text: { type: "plain_text", text: "노션 페이지 열기" },
url: url,
style: "primary"
}
]
}
]
};
await axios.post(process.env.SLACK_WEBHOOK_URL, slackMessage);
res.status(200).send('Success');
} catch (error) {
console.error('Error:', error);
res.status(500).send('Error');
}
});
2. 핵심 설정: Google IAM 권한 (중요!)
배포 후 노션 서버가 이 함수를 호출할 수 있도록 **공개 액세스(allUsers)**를 허용해야 합니다. 이 단계를 놓치면 403 에러를 마주하게 됩니다.
gcloud functions add-iam-policy-binding notionToSlack \\
--member="allUsers" \\
--role="roles/cloudfunctions.invoker"
ℹ️ Slack에 나타낼 정보 선택
필요한 데이터만 파싱해서 Slack으로 전송합니다:
- 업무 제목
- 담당자
- 완료일
- 노션 페이지 링크
실제 사용 화면
- 노션 템플릿 최종 버전
- 아래 '업무 리스트업' 페이지는 전체 DB 테이블을 의미합니다. (팀장님 전용으로 사용되는 테이블)
- 새로 만들면 기존에 작성한 내용을 모두 일일이 옮겨야 해서, 형태는 제가 제안했던 템플릿을 유지하되 팀장님의 요구사항을 추가했습니다.

팀장님이 사용하는 전체 업무 대시보드

팀원들이 각자 사용하는 업무 기록 페이지
Slack 알림 화면

웹훅 상세 정보

업무 완료 시 Slack 채널로 전송되는 알림
성과 측정과 피드백
이후 팀장님은 매달 초 각자 진행한 업무들의 개수를 격려의 말씀과 함께 엑셀 파일로 전달해 주셨습니다.

팀장님 피드백 엑셀 파일
📈 성과 및 피드백: 데이터가 말해주는 가치
시스템 도입 후 팀장님은 매달 업무 통계를 기반으로 팀원들을 격려해주셨습니다.
| 월별 통계 | 주요 피드백 |
|---|---|
| 2월 | 자동화 도입 초기, 데이터 누락 없이 실시간 업무 파악 성공 |
| 3월 | 업무 처리량 증가 및 데드라인 준수율 향상 |
| 4월 | 정량적 지표 기반의 상부 보고용 데이터 확보 |
🧠 정량적 데이터에 대한 고찰
팀장님은 "이 정도 했다"를 보여주기 위한 용도로 활용하셨지만, 개발자로서 저는 **'숫자 너머의 가치'**를 고민하게 되었습니다.
단순히 처리한 업무의 개수보다 긴급 대응 속도나 재작업 비율 같은 질적 지표를 어떻게 자동화에 녹여낼지가 다음 과제로 남았습니다.
🏁 회고
배운 점
- 요구사항의 힘: 엑셀로 정리된 명확한 가이드가 개발 속도를 5배 이상 높여주었습니다.
- 서버리스의 편리함: Firebase Functions를 통해 서버 관리 부담 없이 강력한 브릿지를 구축했습니다.
- IAM의 중요성: 클라우드 인프라 활용 시 권한 관리(IAM)가 연동의 핵심임을 체감했습니다.
시리즈 완결
- 1편: 팀 생산성을 위한 템플릿 설계
- 2편: Slack 연동 자동화 (현재 글)
궁금한 점이나 비슷한 자동화 경험이 있다면 댓글로 공유해주세요! 🙌