Product Manager/Tools

협업툴 슬랙(Slack) 기본 사용법 및 트렐로(Trello) 연동법

지표덕후 2022. 5. 1. 17:41

워터폴과 애자일, 업무 커뮤니케이션에서의 이메일과 메신저의 역할, 넘쳐나는 생산성 도구들... 제가 사회생활을 하면서 지금처럼 일 하는 방법론에 대한 고민이 많았던 때가 없었습니다. 이 주제에 관심이 생기면서 시중 협업툴에 대해서도 찾아보게 되었는데요. 요새 스타트업 쪽에서 협업툴로서 각광 받는 어플리케이션 중 '슬랙(Slack)'이라는 툴이 있더군요. 

 

슬랙은 기존의 업무 의사소통 수단들이 제공해 주지 못 했던 '일과 여가의 분리'를 제공한다는 점에서 사랑 받고 있는 듯합니다. 슬랙 체제 하에서 메일계정은 단지 슬랙 로그인을 위한 키값 정도의 역할만 하더군요. 업무 커뮤니케이션의 장이 메일에서 슬랙으로 옮겨지면 메일계정으로 쏟아져 들어오는 중요도를 알 수 없는 메일 더미에서 벗어날 수 있습니다. 슬랙은 메신저 UI를 차용하고 있긴 하지만 기존 사내 메시지보다 훨씬 과업 중심적인 어포던스를 제공하고 있기 때문에, 개인의 삶이 침범 당할 염려도 적습니다. 

 

또 하나 슬랙이 사랑 받는 이유는 무척 개방적인 플랫폼이라는 것입니다. 슬랙은 트위터나 페이스북처럼 API를 제공하고 있기 때문에 사용자가 필요한 새로운 어플리케이션을 만들어 연동할 수 있습니다. 이뿐 아니라 기존의 외부 생산성 도구들이 쉽게 슬랙 워크플로우에 녹아들 수 있도록 유도하는 확장된 생태계를 지니고 있습니다. 

 

슬랙에 대한 이런 평가를 접하다 보니, IT업계 종사자로서 지적 호기심도 생기고, 언젠가 내가 사용하게 될 수도 있겠다 싶어 조금 알아본 내용을 정리하였습니다.  

 

 

 

기본 개념


슬랙이란?

메신저 기능을 기반으로 한 팀 커뮤니케이션 툴입니다. 구글 드라이브, 트렐로, 깃허브 등 기존의 외부 생상선 도구들과도 연동이 가능하고 API을 제공하고 있기 때문에 필요한 어플리케이션 직접 개발해서 연동할 수도 있습니다.

 

팀(Workspace)?

슬랙은 기본적으로 '협업' 커뮤니케이션 도구를 지향하고 있기 때문에 사용자 중심이 아닌 팀(Team) 중심의 체계를 가지고 있습니다. 슬랙을 사용하기 위해서는 슬랙에 로그인 하는 것이 아니라 팀에 로그인 해야 합니다. 그리고 그 전에 내 이메일계정으로 특정 팀에 가입해야 합니다. 복수의 팀에 가입할 수 있고 그 팀마다 다른 이메일계정을 사용할 수 있습니다.

 

채널(Channel)?

쉽게 말하면 카카오톡의 단톡방입니다. 단 슬랙의 채널은 카톡의 단체채팅방보다 훨씬 더 업무 지향적, 목적 지향적입니다. 그래서 많은 조직에서는 이 채널 생성과 관련된 정해진 규약을 두는 경우가 많습니다. 이를테면 채널의 목적과 다룰 주제에 대한 명확한 정의를 내린 후 채널을 생성하고, 이 정보를 모두가 확인할 수 있도록 기재한다든가, 정해진 규칙에 따라 채널명을 생성한다는 것 등입니다. 

 

다이렉트 메시지(Direct Message)

카카오톡의 1:1 대화(갠톡)라고 생각하시면 됩니다. 

 

 

타임라인

메시지, 파일 등이 업데이트 되는 대화창이라고 보시면 됩니다. 슬랙에서의 커뮤니케이션과 피드백이 주로 일어나는 공간입니다.

 

슬랙의 사용자 Level

소유자(Owner), 관리자(Admin), 일반사용자(User), 게스트(Guest)

 

슬랙에서의 파일(File)

우리가 흔히 생각하는, 엑셀, 파워포인트, hwp 등의 문서나 이미지 '파일'뿐만 아니라 슬랙에서 제공하는 기본 기능을 사용해 작성한 포스트(Post)와 코드 공유에 최적화된 스니펫(Snippet), 구글 스프레드 & 구글 독스를 통해 작성된 문서 역시 슬랙에서는 '파일'입니다. 즉, 메시지 타임라인에서 주고받는 텍스트 기반의 메시지가 아닌 모든 객체가 파일인 것입니다. 슬랙 내에서 'File'이라고 지칭된 것은 이렇게 확장된 의미를 지닙니다.

 

 

 

설정 메뉴


Settings의 세 가지 탭

 

Settings 탭

설정 항목 내용
Team Signup Mode 팀원 초대 방법에 대한 옵션
Default Channels #general 채널 이외에 모든 사용자들이 기본적으로 속하게 되는 채널 설정
Username Guideline 사용자 이름 선태에 관한 가이드라인
Name Display 슬랙 내에서 사용자 이름을 보여주는 방법에 대한 설정
Require @ for mentions 사용자를 언급할 때 @를 필요로 하는지 선택
Email Display 팀원 프로필에 있는 이메일 주소 노출 여부
Do Not Disturb 팀원 전체에 기본 적용되는 알림 금지 시간 설정
Hide your team URL from
external sites' logs
공유된 외부링크 접근시 접근 경로를 보이지 않게 하는 옵션
Calls 음성, 영상 통화 기능을 제공할 애플리케이션 설정
Message Retention 메시지 보관 주기 서정
File Retention 파일 보관 주기 설정
Team Icon 팀의 대표 아이콘을 변경하는 기능
Team Name & URL 슬랙 팀 주소(URL)를 변경하거나 이름을 변경하는 설정
Delete Team 공유된 메시지와 파일을 파기하고 팀을 삭제하는 기능

 

Permissions 탭

설정 항목 내용
Messaging 단체 멘션을 할 수 있는 @everyone, @channel에 대한 사용 권한 설정
Invitations 관리자가 아닌 팀원들이 초대 권한 조정
Channel Management 채널 생성과 삭제, 아카이빙 할 수 있는 권한과 채널 사용자 관리 권한
User Groups 사용자 정의 그룹을 만들 수 있는 권한
Message Editing & Deletion 타임라인 메시지 삭제와 수정 허용 여부
Profile customization 사용자 프로필을 커스터마이징 할 수 있는 기능
Stats 팀 통계 페이지 액세스 권한 설정
Custom Emoji & Loading Message 사용자 정의 이모지(Emoji) 사용 권한 및 슬랙 팀 로딩 메시지 관리 권한
Slackbot Response 슬랙 봇의 자동 응답 메시지 설정 권한
Public File Sharing 팀 내에 공유되는 파일에 대하여 외부 접근용 URL 생성 여부 설정
Gageways 외부 메시징 시스템 연동을 위한 XMPP, IRC 프로토콜 허용 여부
Apps & Custom Integrations 앱 디렉토리(App Directory)와 커스텀 인테그레이션에 대한 권한 관리

 

데스크탑 사이드바(아래 스크린샷 우상단)

1. 검색창: 검색하고자 하는 단어를 검색하면 됩니다. 슬랙 검색 기능의 차별점은 파일명만이 아니라 '파일의 내용'까지 인덱싱해 검색결과로 제공한다는 점인데요(아마 유료 버전에만 제공하는 기능일 겁니다). 이와 더불어 몇 가지 유용한 문법이 있습니다. 가령 "from: jacob has: link during: July"(7월에 jacob이 작성한 링크 모두 검색) 이런 식으로 입력하시면 됩니다.

  • From: 메시지 작성자 필터링 조건
  • Has: "star" 혹은 "link"로, 내가 "즐겨찾기한" 콘텐츠 혹은 "링크 형태"의 메시지라는 필터링 조건
  • During: 기간 조건

2. @ : 나를 멘션하거나 내가 속한 채널을 멘션했던 메시지를 모아둔 Activity 사이드바 출력
3. ☆ : 내가 즐겨찾기한 메시지와 타임라인 업데이트를 모아둔 Starred Items 사이드바 출력
4. ... : 아래의 6가지 추가 메뉴

  • Your Files
  • All Files
  • Team Directory : 슬랙 팀에 참여하고 있는 사용자 조회
  • Help
  • What's New
  • Downloads 

 

 

 

슬랙 봇 설정


슬랙의 재미있는 기능 중 하나가 슬랙 봇입니다. 팀이 생성되면 슬랙 봇이 자동으로 팀원에 추가되어 있는 것을 알 수 있습니다. 기본적으로 세팅된 역할에서 보다 확장된 역할을 수행할 수 있도록 슬랙 봇이 미리 세팅된 조건에 특정 답변을 제시할 수 있도록 커스터마이징할 수 있습니다. 아래 메뉴를 통해 진입하면 됩니다 : Workspace 메뉴 > Slack bot > Add New Response

 

응답 설정 창에서 When someone says 필드에는 슬랙 봇을 작동시킬 트리거 단어를 입력하면 됩니다. 가령 메시지에 "프로젝트"라는 단어가 포함되어 있을 때 슬랙 봇이 특정 답변을 주도록 하고 싶다면, 필드에 "프로젝트"라고 입력하면 됩니다. 이 때 주의할 사항은, 공백으로 구분된 하나의 어절이 완벽하게 일치할 때만 트리거가 작동한다는 것입니다. 가령 "프로젝트"의 경우 "내가 몸담은 프로젝트"에는 슬랙 봇이 작동하지만 "내가 몸담은 프로젝트에"에는 작동하지 않습니다. 때문에 "프로젝트, 프로젝트에, 프로젝트를, 프로젝트가" 등등 타겟팅한 단어에 붙을 수 있는 조사를 미리 고려하여 등록해두어야 합니다.

 

Slackbot responds에는 슬랙 봇이 어떤 메시지로 반응할지 적어두면 됩니다. 재미있는 것은 아래 스크린샷과 같이 들여쓰기(=줄바꿈)로 구분된 여러 가지 답변을 입력해두면 슬랙 봇은 그 중 하나의 문장을 무작위로 추출해 답변을 출력한다는 것입니다.

 

 

 

 

메시지


슬랙에서 '메시지'라고 하면 텍스트로 작성된 말풍선 같은 것이 아니라. 그보다 확장된 개념입니다.  텍스트로 작성된 문자열뿐만 아니라, 코드 스니펫, 장문의 포스트, 파일 등 슬랙 타임라인(=메시지방) 내에 업데이트 되는 모든 객체가 메시지라고 생각하시면 되겠습니다. 슬랙은 기본적으로 타임라인에 업데이트 된 메시지를 서버에서 관리합니다. 또한 메시지별로 고유 주소가 부여되기 때문에 메시지 하나하나를 타겟팅한 어떤 액션을 취할 수 있습니다. 참고로 메시지 고유 주소 생성 규칙은 팀 도메인+채널명+밀리세컨드가 조합된 문자열입니다.

 

메시지에 주로 행하게 될 액션

1. 핀(Pin) : 특정 메시지를 채널에 속한 모든 사용자와 공유. 즉, 카카오톡으로 치면 '공지'와 유사한 기능입니다. 
2. 즐겨찾기(Star) : 나중에 쉽게 찾을 수 있도록 따로 아카이빙 하는 기능입니다.

3. 메시지에 대한 검색 : 슬랙은 문자열 메시지뿐만 아니라 파일의 내용까지 인덱싱해 검색 결과로 제공합니다.

4. 메시지 내에서 #+채널명 : 특정 채널에 대한 링크 삽입

5. 메시지 내에서 @+사용자명 : 해당 사용자를 멘션. 그 외에도,

  • @everyone : 팀 전체를 멘션
  • @channel : 채널 내 있는 사용자 멘션
  • @here : 채널 내 활성 사용자 멘션

6. Thread 기능 : 특정 메시지를 계속 물고 늘어지는 방식의 커뮤니케이션입니다. 가령 우리 이메일 커뮤니케이션을 생각해보면, 하나의 메일에 대하여 전달(FWD:)하고, 답장(RE:)하는 등 핑퐁을 하면서 최초의 메시지에서 그에 대한 피드백, 액션이 중첩되는 상황이 자주 발생하는데요("아래 메일 쓰레드 확인 부탁드립니다"). 그걸 구현한 게 이 기능이라고 보시면 됩니다. 

 

고급 메시지 기능

일반적인 텍스트 메시지 외에도 용도에 맞게 메시지를 달리 작성할 수 있는 고급 기능을 제공하고 있습니다:

 

코드/텍스트 스니펫은 코드 공유 시 가독성을 높여주는 편집툴입니다. 특히 슬랙이 제공하는 코드 스니펫은 수많은 언어에 대하여 최적화된 출력물을 보여주기 때문에 만약 코드를 공유하고자 한다면 반드시 사용해야 할 기능입니다.

 

이 텍스트 스니펫은 호흡이 긴 글(가령 한 장짜리 보고서)을 공유할 때 단순 메시지보다 유용하게 활용될 수 있지만, 원작자 외에는 본문 내용을 편집 불가능하다는 단점이 있습니다. 이런 점에서 텍스트 스니펫을 활용할 바에는 Post를 활용할 것을 권합니다. 포스트는 원작자 외에도 본문을 수정할 수 있습니다(Let others edit this post 설정해두어야 함).

 

포스트에서는 Markdown 문법을 사용할 수 있는데, 잘 사용해서 문서의 가독성을 높이는 건 여러분의 몫입니다.

문법 효과
#+공백 Heading 1
##+공백 Heading 1
###+공백 Heading 1
*+공백 불렛기호
1.+공백 넘버링
[]+공백 체크 리스트
*[%문자열%]* 볼드
_[%문자열%]_ 이탤릭
~[%문자열%]~ 취소선
`[%문자열%]` 코드나 키워드 표기를 위하여 작은 네모형태의 박스 안에 문자열 출력
```[%문자열%]``` 박스 내에서 문자열 줄바꿈을 허용
>[%문자열%] 들였긔(Indent)를 이용하여 다른 곳에서 인용한 정보를 표현
---- 구분선

 

 

 

규칙


서두에 슬랙은 기본적으로 일할 때 하고 놀 때 노는 일과 여가의 독립성을 보장해주는 어포던스를 가지고 있다고 말했습니다. 그러나 이것은 툴의 기능만으로는 달성하기 어려운 것이 사실입니다. 슬랙에서의 커뮤니케이션이 목표 지향적으로 유지되기 위해서는 사적 커뮤니케이션에서는 볼 수 없었던 나름의 규율이 적용되어야 합니다. 현재 저희 조직에서는 아래와 같은 규율을 요구하고 있습니다: 

 

1. 채널은 기본적으로 공개 채널로 생성 공개채널은 비공개로 변경할 수 있지만 비공개채널은 공개채널로 변경 불가

2. 채널명 생성과 관련된 규약 :

  • 과제 및 프로덕트와 관련된 채널은 "pj_" 접두어로 시작
  • 조직 내부 소통 채널은 "fr_" 접두어로 시작
  • 협력사 위탁사와의 소통을 위한 채널은 "ext_"

3. 업무 커뮤니케이션이라면 다이렉트 메시지가 아니라 채널 내 커뮤니케이션을 활용. 커뮤니케이션의 투명성,공개성을 확보하기 위함

4. 같은 사안이라면 스레드를 활용해 커뮤니케이션의 연속성 통합을 유지할 것. 같은 사안을 스레드 없이 펼쳐 소통하지 말 것

 

 

 

 

외부 서비스: 트렐로를 중심으로


슬랙의 큰 장점이 API를 통한 응용 어플리케이션 개발 가능하다는 점과 외부 서비스를 폭넓게 연동할 수 있다는 점이라 말씀드렸습니다. 이번 꼭지에서는 외부 서비스 연동, 그 중에서도 애자일 방식의 업무 수행 생산성 도구로 널리 사용되는 트렐로(Trello)와 연동하는 방법에 대해 설명드리겠습니다 : Workspace 메뉴  > Apps & Integration 

 

트렐로를 본격적으로 설명하기에 앞서, IT 프로덕트 개발 프로젝트를 수행하는 팀이 슬랙에서 가장 많이 연동하는 외부 서비스는 이런 것들일 겁니다 : 

  • 구글 드라이브
  • 깃허브
  • Simple Poll

 

트렐로

트렐로는 워터폴 방식의 대척점에 있는 애자일 방식의 프로젝트 관리 방법론 중 하나인 칸반보드를 웹서비스 형태로 구현한 생산성 도구입니다. 아래 스크린샷처럼 생겼어요.

 

트렐로에서 기본이 되는 개념은 팀, 보드, 카드, 리스트예요. '(화이트)보드'를 중심으로 차근차근 설명 드리겠습니다. 보드는 하나의 프로젝트라고 생각하면 됩니다. 여러 개의 보드(프로젝트)가 모여있으면 이 됩니다. 카드는 할일을 적어 보드에 붙여둔 포스트잇이라 생각하시면 될 것 같아요.  그런데 위의 스크린샷에서 보는 것처럼 보드는 복수의 컬럼으로 나누어져 있습니다. To Do 컬럼, Doing 컬럼, Done 컬럼처럼 한 프로젝트의 진척단계를 구분하는 용도예요. 이 컬럼을 트렐로에서는 리스트라고 부릅니다. 즉, 내가 To Do 리스트에 "사용자 대상 설문조사"라는 카드(포스트잇)을 붙여두는 것이지요.

처음에 트렐로를 슬랙에 연동하면, 슬랙의 특정 채널을 트렐로에 생성해둔 특정 팀, 보드와 연결하는 것입니다(그러니 그 전에 트렐로 내에 팀과 보드 등이 생성되어 있어야 겠지요). 연결되면 슬랙 내에서도 트렐로 보드 내에 카드를 생성하고, 그 카드(업무)의 담당자를 할당하는 등의 액션을 취할 수 있습니다. 이런 액션은 아래의 명령어를 슬랙에 입력함으로써 가능합니다 :

명령어 기능
/invite @trello 트렐로 봇을 채널로 초대
/trello link [트렐로 보드 고유URL] 채널과 트렐로 계정과의 매핑 작업
/trello add @[사용자명] [카드명] 카드를 생성하면서 담당자 지정. 카드가 생성되면 아래 버튼 출력:
1. Join: 카드의 멤버로 참여
2. Subscribe: 멤버로 참여하지는 않더라도 카드 업데이트 상황 구독
3. Due Date: 작업 일정 설정
4. Labels: 작업 성격을 태깅
5. Attach Conversation: 카드가 생성된 시점의 고유URL(타임라인에 업데이트된 모든 내용은)을 카드에 첨부 정보로 추가
/trello comment [댓글내용] 카드에 댓글 남기기
/trello search [검색어] 조건에 맞는 카드 목록이 타임라인에 업데이트 > Show in Channel 버튼 누르면 디폴트 카드로 지정
/trello set-list 채널에 연결된 보드에 생성되어 있는 모든 리스트 목록을 확인하고 디폴트 리스트 변경
/trello info 채널에 연결된 보드의 정보를 확인
/trello setup 슬랙 계정과 트렐로 계정 간의 연결 상태 점검
/trello unlink 틀레로 보드와 채널의 연결관계 끊기
/trello assign @[사용자명] 디폴트 카드를 특정한 사용자에게 할당
/trello set-due 디폴트 카드의 목표 스케쥴을 지정

 

위의 명령어를 보면 특정 카드를 지정하거나 특정 리스트를 지정하는 파라미터가 존재하지 않는다는 것을 알 수 있습니다. 사실 슬랙 내에서는 현재 '활성화'된 리스트, 카드가 지정되어 있고 트렐로 명령어는 해당 보드/리스트/카드를 타겟팅하도록 암묵적으로 세팅되어 있기 때문예요, 만약 활성화된 리스트/카드를 수정하고 싶다면 

/trello set-list

/trello search

위와 같은 명령어를 수행하여 활성화할 리스트/카드를 지정해주어야 합니다.

 

이처럼 트렐로를 연동한 상태에서도, 슬랙은 하나의 과업(카드)을 타겟팅해서 이에 대한 커뮤니케이션을 이어나가는 협업 커뮤니케이션 툴로서 자신의 역할을 한정하고 있기 때문에, 슬랙을 통해 트렐로 보드 전반을 편집하고 업데이트 하는 용도로 사용하기에는 무리가 있습니다.