시작하며
"매일 반복되는 수작업 때문에 정작 중요한 일에 집중할 수 없어요."
우아한형제들에서 프론트엔드 개발자로 일하던 중, 여러 팀에서 들려오는 공통된 아쉬움이었습니다. Slack에서 업무 요청을 받으면 Jira에 수동으로 등록하고, 위키 문서를 매번 직접 작성하고, 코드 리뷰 알림을 하나하나 확인하는 일들이 개발자들의 시간을 빼앗고 있었죠.
이런 문제를 해결하기 위해 시작한 프로젝트가 바로 우아한웤플로입니다. 단순히 자동화 도구를 만드는 것을 넘어서, 조직의 업무 프로세스를 근본적으로 개선하고 협업 문화를 강화하는 플랫폼을 만들어가는 여정을 공유하고자 합니다.
문제 정의: 파편화된 업무 프로세스
변화하는 업무 환경
제가 입사한 2019년, 우아한형제들의 구성원은 1,000명이 조금 넘었습니다. 하지만 시간이 지나면서 2,000명을 넘어 두 배 이상 늘어났고, 코로나를 지나며 매일 가던 오피스는 일주일에 한 번 가는 것으로 바뀌었습니다.
이런 변화를 통해 비대면 커뮤니케이션의 중요성이 매우 높아졌습니다. 더 이상 옆자리, 뒷자리 동료와 쉽게 소통하기 어려워졌고, 모든 커뮤니케이션이 디지털 도구를 통해 이루어져야 했습니다.
파편화된 업무 방식
회사 내부에는 다양한 업무 도구들이 있었습니다. Slack, Jira, GitLab, Grafana, Opsgenie, Atlassian 위키... 각 도구는 나름의 역할을 하고 있었지만, 서로 연동되지 않아 개발자들은 매번 여러 도구를 오가며 반복적인 작업을 해야 했습니다.
업무 생산성 향상을 위해 각 팀에서는 다양한 시도들이 있었고, 그 중 업무 요청에 관한 것이 가장 많았습니다. 하지만 비대면 커뮤니케이션 도구인 Slack의 활용 능력에 따라 업무 요청 방식은 다르게 적용되었습니다:
- 누군가는 Slack 메시지를 통해
- 누군가는 Slack 워크플로를 통해
- 누군가는 (Slack을 통하지 않은) Jira를 통해
- 누군가는 메일을 통해
이렇게 각자의 노력으로 탄생한 좋은 해결책들이었지만, 부작용도 있었습니다:
- 확인해야 할 채널이 늘어남
- 답변을 남겼지만 알림을 받지 못하는 경우 발생
- 업무 진행이 늦어지는 상황 발생
- 일관성 없는 프로세스로 인한 혼란
예를 들어, Slack에서 업무 요청이 들어오면:
- 요청 내용을 확인하고
- Jira에 직접 접속해서
- 이슈를 생성하고
- 담당자를 할당하고
- Slack에 다시 알림을 보내는...
이런 과정을 매번 반복해야 했습니다. 하루에 이런 요청이 수십 건씩 들어온다면? 생각만 해도 비효율적이었죠.
전수조사와 사용자 인터뷰
문제의 정도를 파악하기 위해 사내 업무 요청 채널을 전수조사했습니다. 생각보다 더 다양한 방법으로 사용하고 있었고, 워크플로 설정에 진입장벽을 느껴 원하는 기능을 충분히 사용하지 못하는 경우도 많았습니다.
수많은 서포트 채널들을 조사하면서:
- 어떤 절차로 사용하고 있는지
- 어떤 요구사항이 있는지
- 어느 특수 기능이 있는지
이런 내용들을 종합 분석하고 사용자 인터뷰도 진행했습니다.
해결책: 자동화 워크플로우 플랫폼 구축
핵심 아이디어
"도구들을 연결해서, 사람이 해야 할 일을 최소화하자."
이런 생각에서 시작했습니다. 각 도구의 API를 활용해서 워크플로우를 자동화하면, 개발자들은 정말 중요한 일에만 집중할 수 있을 거라 생각했어요.
우아한웹플로란?
우아한웹플로는 우아한형제들에서 일을 더 잘하기 위한 가이드라인이자, 이를 돕는 도구입니다. 사내 구성원의 자발적인 참여를 통해 다양한 기능들을 제공하고 있습니다.
"우아하게 일하는 방식 가이드, 근데 이제 자동화 도구를 곁들인"이라고 표현할 수 있겠네요.
프로젝트의 목표
파편화된 업무 요청 프로세스를 통일하는 과정에서 우리가 세운 목표는 크게 두 가지였습니다:
-
업무요청자와 업무담당자 간 질문·답변하는 방식 통일하기
- 업무 요청자의 학습 비용 절감
- 일관된 프로세스로 혼란 최소화
-
업무 진행상황을 자동으로 추적하고 관리하기
- 수동 추적의 번거로움 제거
- 투명한 업무 프로세스 구축
주요 기능들
1. 서포트웤플로: Slack과 Jira의 완벽한 연동
가장 먼저 해결한 문제가 바로 Slack과 Jira 연동이었습니다.
문제 상황:
기존에는 Slack에서 업무 요청이 들어오면, 담당자가 직접 Jira에 접속해서 이슈를 생성하고 담당자를 할당해야 했습니다. 이 과정에서:
- 컨텍스트 스위칭으로 인한 집중력 저하
- 수동 입력 과정에서 발생하는 실수 가능성
- 요청 처리 상태를 추적하기 어려움
- 여러 도구를 오가며 발생하는 시간 낭비
이런 문제들이 있었습니다.
구현 방식:
Slack의 Slash Command와 Jira API를 활용하여 완전 자동화된 워크플로우를 구축했습니다.
-
Slack 워크플로우 활용
- 워크플로를 통해 업무 요청 시, Event Subscriptions 기능을 통해 메시지를 읽어 지라 티켓을 생성
- 사용자 친화적인 인터페이스로 접근성 향상
-
Jira API 연동
- Slack에서 입력한 정보를 자동으로 Jira 이슈로 변환
- 프로젝트, 이슈 타입, 우선순위, 담당자 등 자동 할당
- 커스텀 필드 및 라벨 자동 설정
-
양방향 동기화
- Jira에서 이슈 상태가 변경되면 Slack에 자동 알림
- Slack에서도 이슈 진행 상황을 실시간으로 확인 가능
- 댓글 및 업데이트 정보 자동 동기화
-
워크플로우 템플릿화
- 각 팀별로 자주 사용하는 워크플로우를 템플릿으로 저장
- 재사용 가능한 워크플로우로 일관성 확보
기술적 구현 세부사항:
- Slack Events API: 실시간 이벤트 수신 및 처리
- Jira REST API: 이슈 생성, 업데이트, 조회
- Webhook 활용: 양방향 통신을 위한 Webhook 설정
- 에러 핸들링: API 실패 시 재시도 로직 및 알림 시스템
- 보안: OAuth 2.0을 통한 안전한 인증 및 권한 관리
사용자 경험 개선:
- 간단한 커맨드: 복잡한 절차 없이 한 줄 명령으로 업무 요청
- 즉시 피드백: 요청 생성 즉시 Jira 링크와 함께 확인 가능
- 상태 추적: Slack에서 이슈 진행 상황을 실시간으로 확인
- 알림 최적화: 중요한 업데이트만 선별적으로 알림
주요 기능 상세:
-
이모지 기반 인터랙션
- 업무 요청을 받은 스레드에 이모지를 추가하여 Jira 티켓의 담당자를 배정
- 완료 이모지를 추가하면 Jira 티켓 상태가 자동으로 완료로 변경
- 직관적이고 빠른 인터랙션으로 사용자 경험 향상
-
버튼을 통한 빠른 대응
- 다양한 상황에 대해 버튼을 통해 빠르고 편리하게 대응 가능
- 복잡한 절차 없이 원클릭으로 처리
-
기록 기능
- 업무 처리 중간에 '기록' 기능을 통해 중간 저장 가능
- 기록 후 완료 처리 시 기록된 내용 이후부터 자동으로 기록
- 업무 진행 과정의 투명성 확보
결과:
2024년 6월 중순부터 9월까지의 성과:
- 136개 워크플로에 적용
- 55개 Jira 프로젝트에서 사용
- 62개 Slack 채널에서 활용
- Jira 메시지 5,000회 이상 자동 처리
- 업무 요청 처리 시간 30% 단축
- 사용자 만족도 크게 향상
달성한 효과 5가지:
-
누구나 쉽게 일관된 방식으로 워크플로 설정 가능
- 워크플로 설정의 진입장벽 제거
- 일관된 프로세스로 혼란 최소화
-
업무 요청의 분류별로 담당자를 자동 배정하고 Slack에서 멘션
- 수동 할당 과정 제거
- 즉시 알림으로 빠른 대응 가능
-
이모지와 버튼을 통해 다양한 상황에 빠르고 편리하게 대응
- 직관적인 인터랙션
- 복잡한 절차 없이 원클릭 처리
-
Jira 티켓 변경사항을 Slack에서 확인 가능하여 진행상황 빠르게 파악
- 여러 도구를 오갈 필요 없음
- 실시간 상태 추적
-
업무 요청 관리 프로세스 통일
- 파편화된 프로세스 해결
- 조직 전체의 업무 효율성 향상
이 기능은 나중에 Slack Tour Seoul 2024에서 "Slack x Jira 연동을 통한 업무요청 관리시스템 구축"이라는 제목으로 발표하게 되었고, 많은 관심을 받았습니다. 발표에서는 실제 구현 과정, 트러블슈팅 경험, 그리고 사용자 피드백을 바탕으로 한 개선 사항들을 공유했습니다.
2. 위키 자동 생성: 반복 작업의 완전 자동화
개발자들이 매번 작성해야 했던 위키 문서를 자동으로 생성하는 기능을 만들었습니다.
결과:
- 매월 170~215회 이상의 반복 작업 절감
- 문서화 품질의 일관성 확보
- 개발자들의 시간을 더 중요한 일에 집중
3. 코드리뷰 자동화: GitLab과의 연동
GitLab의 Merge Request를 자동으로 처리하는 시스템을 구축했습니다.
결과:
- MergeRequest 28,523건 자동 처리
- 173개 프로젝트에 적용
- 코드 리뷰 프로세스의 투명성 향상
4. 우아한스펙트럼: 기술 자산의 체계적 관리
회사 내부에는 수많은 프론트엔드 프로젝트, 라이브러리, 모노레포가 있었지만, 이들이 어디에 있는지, 어떤 기술 스택을 사용하는지, 어떻게 활용할 수 있는지 파악하기 어려웠습니다.
문제 상황:
- 새로운 프로젝트를 시작할 때 기존에 비슷한 프로젝트가 있는지 찾기 어려움
- 공통 라이브러리나 컴포넌트를 재사용하고 싶지만 어디에 있는지 모름
- 각 프로젝트의 기술 스택과 상태를 파악하기 어려움
- 모노레포 구조의 프로젝트들이 어떻게 구성되어 있는지 확인하기 어려움
해결 방안:
우아한스펙트럼은 회사의 기술 자산을 체계적으로 정리하고 시각화하는 웹 페이지입니다.
주요 기능:
-
프로젝트 탐색
- 프론트엔드 프로젝트, 라이브러리, 모노레포를 카테고리별로 탐색
- 기술 스택, 상태, 설명 등 상세 정보 제공
- 검색 기능을 통한 빠른 탐색
-
기술 스택 시각화
- 각 프로젝트가 사용하는 기술 스택을 한눈에 확인
- React, Next.js, TypeScript 등 기술별 분류
- 프로젝트 간 기술 스택 비교 가능
-
모노레포 구조 파악
- 모노레포 내부의 패키지 구조를 명확하게 표시
- 패키지 간 의존성 관계 시각화
- 각 패키지의 역할과 용도 명시
-
재사용성 향상
- 기존 프로젝트나 라이브러리를 쉽게 찾아 재사용
- 중복 개발 방지
- 개발 효율성 향상
결과:
- 개발자들이 필요한 기술 자산을 빠르게 찾을 수 있게 됨
- 프로젝트 시작 시 기존 자산 활용률 증가
- 기술 스택의 일관성 확보
- 조직 내 기술 자산의 가시성 향상
5. 우아한북마크: 정보 접근성 향상
개발자들이 업무를 하면서 자주 사용하는 링크와 리소스들이 있었지만, 각자 브라우저 북마크에 저장해두거나 메모장에 기록해두는 등 개인적으로 관리하고 있었습니다.
문제 상황:
- 중요한 링크를 찾기 위해 여러 곳을 뒤져야 함
- 팀원 간 공유된 링크가 없어 정보 접근성이 낮음
- 새로 입사한 개발자가 필요한 리소스를 찾기 어려움
- 자주 사용하는 도구나 문서의 링크를 잊어버리는 경우 발생
해결 방안:
우아한북마크는 개발자들이 자주 사용하는 링크와 리소스를 중앙화하여 관리하고 공유할 수 있는 기능입니다.
주요 기능:
-
중앙화된 북마크 관리
- 팀 또는 조직 단위로 북마크 관리
- 카테고리별 분류 (도구, 문서, 위키, 대시보드 등)
- 검색 기능을 통한 빠른 접근
-
공유 및 협업
- 팀원 간 북마크 공유
- 추천 북마크 기능
- 자주 사용하는 링크 통계
-
접근성 향상
- 한 곳에서 모든 필요한 링크에 접근
- 새로 입사한 개발자의 온보딩 시간 단축
- 정보 접근성 향상으로 업무 효율성 증가
결과:
- 정보 접근 시간 단축
- 팀 내 정보 공유 문화 개선
- 신규 입사자의 적응 시간 단축
- 업무 효율성 향상
6. 기타 기능들
우아한웹플로는 업무 요청 프로세스 외에도 다양한 기능들을 제공합니다:
- 온콜 알림: 온콜 담당자를 Slack에 자동으로 알려주는 기능
- Opsgenie 연동: Slack 유저 그룹을 Opsgenie 스케줄 담당자로 자동 변환
- Grafana 패널 알림: Grafana 이미지를 Slack 메시지로 전달하여 모니터링 데이터 공유
- 코드리뷰 알람: 개발자를 위한 GitLab Merge Request 알림 기능
- 우아한TIL: 개발자들의 학습 내용 공유 플랫폼
이런 다양한 기능들을 통해 업무 생산성 향상을 위한 통합 플랫폼으로 발전하고 있습니다.
기술 스택과 아키텍처
기술 선택의 이유
프로젝트 초기에는 기존 스택을 사용했지만, 점차 규모가 커지면서 아키텍처 개선이 필요했습니다.
프론트엔드:
- Next.js: 서버 통합 및 성능 최적화를 위해 전환
- Module Federation: 마이크로 프론트엔드 아키텍처 적용 준비
- React.js: 컴포넌트 기반 개발
백엔드:
- Nest.js: 타입 안전성과 확장성을 고려한 선택
- TypeORM: 데이터베이스 관리의 효율성
연동 도구:
- Slack, Jira, GitLab, Grafana, Opsgenie, Atlassian 등 다양한 API 활용
아키텍처 개선
초기에는 여러 서버와 데이터베이스로 분산되어 있었지만, 통합을 통해 운영 효율성을 크게 향상시켰습니다.
- 서버: 6개 → 3개 (50% 절감)
- DB: 3개 → 1개
- 운영 비용: 50% 절감
프로젝트 성장 과정
1명에서 17명으로
프로젝트는 프론트엔드 개발자 1명으로 시작했습니다. 하지만 점차 팀원들이 합류하면서:
- 기획자 3명
- 백엔드 개발자 2명
- 디자이너 1명
- 프론트엔드 개발자 포함 총 17명
이렇게 대규모 협업 프로젝트로 성장했습니다.
역할의 변화
처음에는 개발자로서 코드를 작성하는 것에 집중했지만, 프로젝트가 커지면서:
- 기획자 역할: 각 팀의 요구사항을 분석하고 솔루션 설계
- 프로덕트 리더: 프로젝트 전반을 리딩하고 우선순위 결정
- 기술 리더: 아키텍처 설계 및 기술 스택 선정
- 협업 촉진자: 다양한 팀과의 협업 주도
이렇게 다양한 역할을 경험할 수 있었습니다.
협업의 힘
다양한 팀과의 협업
이 프로젝트를 진행하면서 정말 많은 팀과 협업했습니다.
- 정보보안팀: 인프라 보안 관련
- 인프라보안팀: 클라우드 환경 구축
- 클라우드스토리지팀: 데이터 이전 및 관리
- 기술고도화팀: 기술적 개선 및 최적화
- 클라우드인프라팀: 퍼블릭망 구축
각 팀의 전문성을 존중하고, 함께 문제를 해결해나가는 과정에서 많은 것을 배웠습니다.
협업 문화 만들기
- 코드 리뷰: 주기적인 코드 리뷰를 통한 품질 향상
- 기술 공유: 기술 공유 세션을 통한 팀 역량 강화
- 피드백 수집: 주기적인 피드백 수집 및 개선 작업
- 업무 세분화: 역할 명확화를 통한 작업 효율 극대화
성과와 지표
정량적 성과
- 활성 사용자: 297명
- 반복 작업 자동화: 월 200시간 이상 절감
- 운영 비용: 50% 절감
- 서비스 확장: 우아한형제들뿐만 아니라 우아한청년들까지 확장
정성적 성과
- 업무 프로세스의 투명성 향상
- 팀 간 협업 효율성 개선
- 개발자들의 만족도 향상
- 조직 내 자동화 문화 확산
얻은 인사이트
협업의 핵심
"협업의 핵심은 다양한 관점을 수용하고 이를 시스템적으로 해결하는 능력"
이 프로젝트를 통해 가장 크게 배운 점입니다. 각 팀은 서로 다른 관점과 요구사항을 가지고 있었지만, 이를 시스템적으로 접근하고 해결하는 과정에서 진정한 협업이 이루어졌습니다.
문제 해결 접근법
- 요구사항 분석: 각 부서의 요구사항을 깊이 있게 분석
- 맞춤형 솔루션: 특정 부서의 요청을 우선 해결하여 가치 확인
- 고도화: 검증된 솔루션을 모든 팀이 사용할 수 있도록 일반화
- 지속적 개선: 피드백을 통한 지속적인 시스템 개선
기술적 리더십
최신 기술 스택을 도입하고, 외부 발표를 통해 기술 역량을 공유하며, 팀 내 기술 전파 문화를 만드는 것이 중요하다는 것을 배웠습니다.
개인적 성장
이 프로젝트를 통해 단순히 개발자로서의 역량뿐만 아니라:
- 프로덕트 리더십: 기획, 개발, 디자인, 운영 전반 경험
- 기술적 역량: 프론트엔드뿐만 아니라 백엔드, 인프라까지 폭넓은 경험
- 협업 능력: 다양한 팀과의 협업을 통한 커뮤니케이션 역량 강화
- 시스템 사고: 복잡한 문제를 시스템적으로 접근하고 해결하는 능력
이런 다양한 역량을 키울 수 있었습니다.
마무리하며
우아한웤플로 프로젝트는 단순히 자동화 도구를 만드는 것을 넘어서, 조직의 업무 프로세스를 근본적으로 개선하고 협업 문화를 강화하는 경험이었습니다.
이 프로젝트를 통해 배운 것들:
- 다양한 도구를 연동하여 업무 효율성을 극대화하는 방법
- 대규모 협업 프로젝트를 리딩하는 경험
- 복잡한 문제를 시스템적으로 접근하고 해결하는 능력
- 협업의 진정한 가치
- 기술 자산의 체계적 관리와 정보 접근성 향상의 중요성
우아한웤플로는 단순히 자동화 도구를 넘어서, 서포트웤플로, 위키 자동 생성, 코드리뷰 자동화, 우아한스펙트럼, 우아한북마크, 우아한TIL 등 다양한 기능을 통해 조직의 업무 프로세스를 근본적으로 개선하고 협업 문화를 강화하는 플랫폼으로 발전했습니다.
이런 경험들은 이후 공통 모듈 개발, 모듈러 시스템 구축, 대규모 협업 프로젝트 리딩 등 다양한 영역에서 활용할 수 있는 핵심 역량이 되었습니다.
우아한웹플로의 미래
지속적인 성장
우아한웹플로 덕분에 업무 생산성이 크게 증가했다는 피드백을 많이 받았습니다. 하지만 이것은 끝이 아니라 또 다른 시작일 뿐입니다.
우아한웹플로는 단발성 프로젝트가 아니라 계속 성장하여 우아한형제들의 업무 생산성 향상을 위해 계속 노력하고 있습니다.
Coming Soon: 향후 계획
늘어나는 사용자와 그만큼 늘어나는 다양한 요구사항에 대응하기 위해 다음과 같은 기능들을 준비하고 있습니다:
업무 처리 통계:
- 어떤 카테고리의 요청이 많이 접수되는지 분석
- 누가 가장 많이 업무 요청 처리를 하는지 파악
- 얼마나 빠르게 요청이 처리되는지 측정
미할당/미처리 업무 리마인더:
- 장기간 할당되지 않은 업무 요청 자동 알림
- 장기간 처리되지 않은 업무 요청 자동 알림
- 프로세스화하여 전체를 관리할 수 있는 기능
이런 기능들을 통해 단발성에 그치지 않고 프로세스화하여 전체를 관리할 수 있는 시스템으로 발전시켜 나갈 예정입니다.
발표 경험: Slack Tour Seoul 2024
발표 준비 과정
우아한웤플로 프로젝트, 특히 서포트웤플로 기능은 Slack Tour Seoul 2024에서 발표할 기회를 얻게 되었습니다. 발표 제목은 **"Slack x Jira 연동을 통한 업무요청 관리시스템 구축"**이었습니다.
발표 준비 과정에서:
- 실제 사용 사례와 데이터를 정리
- 기술적 구현 세부사항을 명확하게 설명
- 트러블슈팅 경험과 해결 과정 공유
- 사용자 피드백을 바탕으로 한 개선 사항 소개
이런 내용들을 포함했습니다.
발표에서 다룬 주요 내용
-
문제 정의와 해결 과정
- 파편화된 업무 프로세스의 문제점
- 자동화를 통한 해결 방안
-
기술적 구현
- Slack Events API와 Jira REST API 연동
- Webhook을 활용한 양방향 동기화
- 에러 핸들링 및 보안 고려사항
-
실제 성과
- 정량적 지표 (150개 워크플로우, 5,000회 이상 처리)
- 정성적 개선 (업무 효율성, 사용자 만족도)
-
트러블슈팅 경험
- API 레이트 리밋 처리
- 동시성 문제 해결
- 사용자 경험 개선을 위한 반복적 개선
발표 후기
발표를 통해 많은 분들이 관심을 보여주셨고, 특히:
- 다른 회사에서도 비슷한 문제를 겪고 있다는 공감
- 구현 방법에 대한 구체적인 질문들
- 향후 개선 방향에 대한 제안
이런 피드백들을 받을 수 있었습니다. 이 경험은 프로젝트의 가치를 다시 한번 확인할 수 있는 기회였고, 외부에 기술 역량을 공유할 수 있는 좋은 기회였습니다.
참고 자료
- 발표: Slack Tour Seoul 2024 - "Slack x Jira 연동을 통한 업무요청 관리시스템 구축"
- 기간: 2024.02 ~ 2024.12
- 역할: FrontEnd/BackEnd Engineer, Product Manager
