콘텐츠로 이동

사내 업무 시스템 구성도 및 사용 안내 (Redmine + Mattermost)

사내에 구축한 Redmine(업무/일감 관리) + Mattermost(사내 메신저) 연동 시스템의 전체 구성과 사용 방법 정리. 대상: 전 직원(사용편) + 운영 담당자(운영편).

다이어그램은 Mermaid로 작성되어 있습니다. (Markdown Preview Mermaid 지원 환경에서 보기)


1. 시스템 개요

  • Redmine — 업무 요구사항·일감의 등록/배정/진행/완료 관리 (기존 데이터 이관 완료)
  • Mattermost — 사내 메신저(팀 소통) + Redmine 업무 알림 수신
  • 미들웨어 — 두 시스템을 잇는 연결 프로그램 (알림 전송 / 일감 생성 / 통계)

핵심 동작 세 가지: 1. 업무 알림 — Redmine 일감 변경 → Mattermost 채널 + 담당자 DM 통보 2. 일감 등록 — Mattermost /issue 명령 → Redmine 일감 생성 3. 통계 — 주간/월간 진행현황을 채널에 게시 (확장 예정)


2. 전체 구성도

flowchart TB
    RM["🗂️ Redmine 서버<br/>업무/일감 관리"]
    MM["💬 Mattermost 서버<br/>사내 메신저 + 알림"]
    NOTI["📢 알림기능 (미들웨어)<br/>· 일감 생성/변경 알림<br/>· Redmine 통계 (주간/월간)<br/>· 업무 일정 알림<br/>· 신규 개발로 확장 가능<br/> (다양한 알림 추가)"]
    USER["👤 사용자<br/>(직원)"]

    RM --- MM
    MM --- NOTI
    RM --- USER
    MM --- USER
  • Redmine ↔ Mattermost: 두 서버가 업무 알림으로 연동 (중앙 미들웨어가 중계)
  • 알림기능(미들웨어): 일감 생성/변경 알림에 더해 Redmine 통계·업무 일정 알림 등을 제공하며, 신규 개발을 통해 다양한 알림 기능을 계속 추가할 수 있음
  • 사용자: Mattermost로 메시지·슬래시명령(일감 등록)·알림 수신, Redmine으로 일감 조회·처리

위 구성도는 서버 간 연동 흐름에 집중한 것입니다. 사용자는 Redmine(웹 접속)과 Mattermost(메신저 앱)를 각각 직접 사용하며, 그 상호작용은 3장 데이터 흐름에서 설명합니다.


3. 데이터 흐름

3-1. 업무 통보 (Redmine 에서 Mattermost 로)

flowchart TD
    A["일감 생성 또는 변경"] --> B["미들웨어 폴링<br/>(주기적 변경 감지)"]
    B --> C{"담당자/관람자<br/>있는가?"}
    B --> D["프로젝트 채널 webhook<br/>으로 간략 메시지 전송"]
    C -- "있음" --> E["담당자·관람자에게<br/>상세 DM 전송"]
    C -- "없음" --> F["DM 생략<br/>(채널 알림만)"]
    D --> G["업무알림 채널 게시"]
    E --> H["개인에게 직접 통보"]

3-2. 일감 등록 (Mattermost 에서 Redmine 으로)

sequenceDiagram
    participant U as 사용자
    participant M as 미들웨어
    participant R as Redmine

    U->>M: /issue 입력
    M->>R: 지원사이트·담당자 목록 조회
    R-->>M: 목록 반환
    M-->>U: 입력창 표시 (제목·사이트·담당자·내용)
    U->>M: 작성 후 제출
    M->>R: 일감 생성 요청
    R-->>M: 생성 완료
    Note over M,R: 이후 폴링이 감지하여 담당자에게 DM 통보

3-3. 알림 경로 — 채널 vs DM

flowchart LR
    E["일감 변경"] --> CH["채널 알림"]
    E --> DM["개인 DM"]
    CH --> CHN["팀 전체 모니터링<br/>(누구나 흐름 파악)"]
    DM --> DMN["담당자·관람자 본인<br/>(내 일감 직접 통보)"]

4. 채널 구성

사내 메신저(대화)와 업무 알림을 분리하여 운영합니다.

flowchart TD
    subgraph T["전사 공통"]
        T1["town-square (공지)"]
        T2["자유게시판"]
        T3["회사-공지"]
    end
    subgraph TEAM["팀 채널 — 부서 소통"]
        D1["경영지원"]
        D2["기술지원"]
        D3["영업"]
        D4["생산"]
        D5["연구소"]
    end
    subgraph RMG["업무 알림 — 봇 게시"]
        R1["rm-알림 (전체 일감)"]
        R2["rm-통계 (주간/월간, 예정)"]
    end
    subgraph PRJ["프로젝트 협업 — 필요시"]
        P1["proj-OOO (다팀 협업만)"]
    end

4-1. 채널 운영 원칙

  • 알림과 대화 분리: rm- 채널엔 자동 알림만, 사람 대화는 팀 채널에서. 팀 채널엔 알림을 넣지 않음.
  • 채널 = 팀 모니터링 / DM = 개인 알림: 채널은 팀 흐름 파악용, 내 일감 변경은 봇 DM으로 직접.
  • 구독 자율: 알림 채널은 공개로 두되 강제 가입 없음. 관심자가 직접 참여.
  • 이름 접두어로 그룹화: 채널 순서는 개인별 설정이라 강제 불가 → 이름 접두어(rm-, 숫자 등)로 정렬 유도 (기본 정렬은 알파벳순).
  • 알림 과다 시: rm-알림 채널은 개인 음소거(mute) 권장. 중요한 내 일감은 DM으로 별도 수신.

5. 사용 방법 (전 직원용)

5-1. 채널에서 일감 등록 — /issue

flowchart LR
    A["입력창에 /issue"] --> B["등록 창 표시"]
    B --> C["제목 입력"]
    C --> D["지원사이트 선택"]
    D --> E["담당자 선택<br/>(선택사항)"]
    E --> F["내용 입력"]
    F --> G["등록 클릭"]
    G --> H["Redmine 일감 생성"]
    H --> I["담당자에게 DM 통보"]
  1. 아무 채널 입력창에 /issue 입력 후 실행
  2. 등록 창에서 제목·지원사이트·담당자·내용 작성 (지원사이트·담당자 목록은 Redmine에서 자동으로 불러옴)
  3. 등록 클릭 → Redmine에 일감 생성
  4. 담당자 지정 시 잠시 후 담당자에게 자동 DM

5-2. 업무 알림 받기

  • 채널 알림: 참여 중인 rm-알림(또는 프로젝트 채널)에 일감 생성/변경이 간략 게시
  • 예: [신규] #1568 슬래쉬 테스트 (신규) - 김수언 + 링크
  • 개인 DM: 내가 담당자/관람자인 일감이 바뀌면 issue-bot이 상세 DM
  • 항목: 제목·프로젝트·상태·우선순위·담당자·등록자·지원사이트·링크
  • 알림 링크 클릭 → 해당 Redmine 일감으로 이동

5-3. 일감 확인/처리

  • Redmine에 직접 접속하여 조회·수정·코멘트·상태 변경
  • 변경 시 다시 채널/DM으로 통보
  • 내 일감을 챙기려면 Redmine에서 본인을 담당자 또는 관람자로 지정

5-4. 신규 입사자/중간 합류

  • 공개·비공개 채널은 나중에 합류해도 이전 기록 전부 조회 가능 (인수인계 유리)
  • 단, 그룹 메시지(GM, 3~7인 임시 대화)는 추가 시 이전 기록 안 보임 → 인원이 늘 수 있는 대화는 채널 사용 권장

6. 운영 관리 (운영 담당자용)

6-1. 프로젝트별 알림 채널 연결 (코드 수정 불필요)

flowchart LR
    A["Mattermost 채널<br/>Webhook 생성"] --> B["URL 확보"]
    B --> C["Redmine 프로젝트 설정<br/>Mattermost Webhook 필드에 입력"]
    C --> D["해당 프로젝트 일감 변경 시<br/>그 채널로 알림"]
    E["필드를 비움"] --> F["그 프로젝트는<br/>채널 알림 미발송"]
  • 프로젝트→채널 매핑은 Redmine 커스텀필드("Mattermost Webhook") 에서 관리
  • 새 프로젝트: 채널 생성 → Webhook 생성 → Redmine 필드에 URL 입력. 끝.

6-2. 일감 등록 항목 관리

  • 지원 사이트 목록: Redmine "지원 사이트" 커스텀필드 선택값 수정 → /issue 창에 자동 반영
  • 담당자 목록: Redmine 활성 사용자 자동 조회

6-3. 메시지 문구 변경

  • 미들웨어 설정(CONFIG)의 MSG_CHANNEL(채널·간략) / MSG_DM(DM·상세) 수정 → 재시작
  • 플레이스홀더: 일감번호·제목·상태·우선순위·담당자·등록자·링크·지원사이트·프로젝트·신규/변경

6-4. 채널 정리 (아카이빙)

  • 종료된 프로젝트 알림 채널은 아카이브(보관) → 사이드바 정리, 기록 보존
  • 아카이브 시 해당 프로젝트의 "Mattermost Webhook" 필드도 비울 것 (죽은 채널 전송 방지)
  • 완전 삭제보다 아카이브 권장 (복구 가능)

6-5. 사용자 매칭 / 시간

  • DM은 Redmine 이메일 = Mattermost 이메일 매칭으로 전송 → 신규 직원은 양쪽 동일 이메일로 생성
  • 메시지 시각은 Mattermost 서버 시계 기준 → 서버 NTP 시간 동기화 유지

7. FAQ

Q. 채널을 트리(폴더)처럼 계층 구조로? A. Mattermost는 하위 채널 미지원(평면 구조). 이름 접두어 + 개인별 카테고리(접기)로 정리.

Q. 채널 순서를 관리자가 모두에게 동일하게? A. 불가. 순서·카테고리는 개인별 설정. 이름 접두어/숫자로 정렬 유도(기본 알파벳순).

Q. 나중에 들어온 사람이 이전 대화를? A. 공개·비공개 채널은 이전 기록 전부 조회 가능. 단 그룹 메시지(GM)는 안 됨 → 채널 사용.

Q. 내 일감 알림이 안 와요. A. ① 본인이 담당자/관람자인지, ② 양쪽 이메일 동일한지, ③ 봇 차단/뮤트 여부 확인.

Q. 채널 알림과 DM 둘 다 오는데 중복? A. 역할이 다름. 채널=팀 모니터링, DM=개인 직접 알림.


8. 요약

flowchart TB
    RM["Redmine<br/>업무/일감 관리"]
    MM["Mattermost<br/>사내 메신저 + 알림"]
    MID["미들웨어<br/>알림·일감생성·통계"]

    RM <-- "REST API" --> MID
    MID <-- "알림 / 슬래시" --> MM

    MID -. "업무통보: 채널+DM" .-> MM
    MM -. "일감등록: /issue" .-> RM
    MID -. "통계(예정)" .-> MM
구분 내용
업무 통보 일감 변경 → 채널(팀 모니터링) + DM(개인 알림)
일감 등록 /issue → 입력창 → Redmine 생성
채널 운영 대화(팀 채널)와 알림(rm-) 분리, 구독 자율
매핑 관리 프로젝트→채널은 Redmine 커스텀필드에서 (코드 수정 불필요)