글쓰는 개발자

[협업]개발 학생의 협업 도전기 #1.체계적인 프로젝트 관리 및 문서화 본문

Development/Software Engineering

[협업]개발 학생의 협업 도전기 #1.체계적인 프로젝트 관리 및 문서화

개발하자 2020. 3. 3. 19:35

해당 주제로 포스팅을 하려고 보니 문득, 처음으로 학교에서 C언어 기반의 팀 프로젝트를 했던 시절이 기억난다.

각자 역할을 나누어 개발을 하고 다시 그 코드를 병합했을 때, 우리의 코드는 톱니바퀴처럼 맞물려 하나의 코드가 되고,

우리의 논리들은 하나의 논리가 되어 처음부터 끝까지 도미노처럼 멋지게 완성될 거란 희망을 품고 병합을 했을 때에,

우리는 우주 대폭발을 방불케 하는 코드 대폭발을 경험하였고, 코드의 엔트로피는 한없이 증가하여 손댈수록 돌아올 수 없는 강을 건너기만 할 뿐이었다.

그 덕분에 학점란에 고스란히 새겨진 C+라는 학점은 아직까지도 성적표에 남아 작성자를 괴롭히고 있다.

 

상상 - 코드 대통합
현실 - 코드 대폭발

그때부터가 아니었을까? 코드를 나누기 전에, 어떻게 나눠야 다시 병합할 때 최소한의 에러와 논리 오류만 가져갈 수 있을지 고민했던 것이.

그 이후로도 많은 팀 프로젝트를 경험하게 되었고, 그때마다 어떻게 더 잘 협업할 수 있을까?라는 질문을 항상 던져왔고,

지금도 더 잘 협업하기 위한 방법론, 프로세스 등에 관심이 많다.

결국 협업이 잘 되기 위해서는 팀간의 의사소통이 중요한데, 의사소통을 명확히 하기 위해서는 정형화된 약속들을 통해 빠르고 정확하게 각자의 생각을 하나로 동기화해야한다고 생각한다.

이런 부분을 도와줄 수 있는 여러가지 도구들이 존재하고, 그래서 나같은 사람은 그러한 툴들에 관심이 많다.

이번 학기에 학교에서 지원하는 학점 인정 제도로 안드로이드 프로젝트를 진행 중인데, 이 프로젝트를 진행하면서 이전에 관심을 갖고 있었던 협업/생산성 툴들을 몇 가지 도입하여

좀 더 프로젝트를 효율적으로 관리하고 문서화하려는 시도를 하였고, 슬슬 협업 프로세스도 안정화되어가는 것 같아 어떤 방식으로 프로젝트를 진행하고 있는지 히스토리를 남길 겸, 사용법과 함께 포스팅한다.

 

INDEX

  1. Slack
  2. Github Organization / webhook
  3. Notion 
  4. Slack Browse Apps

1. Slack

이번 프로젝트에서 제일 괜찮다 느꼈고, 카톡으로 대화하며 협업하던 나에게는 신세계와도 같은 것이 Slack이었다.

처음 써봤을 때는 인터페이스도 익숙하지 않았고, 로그인 방식도 기존의 메시징 어플리케이션과는 다른 부분이 있어 불편했다.

그러나 점점 활용할수록 Slack의 가치에 대해 실감하고 있는 사람으로써, Slack의 장점에 대해 소개해보려 한다.

Slack의 장점을 떠올려보면

  1. 워크스페이스를 명확히 분리할 수 있다.
  2. 협업에 필요한 생산성 툴들을 연동하여 프로젝트 관리 환경을 입맛에 맞게 구축할 수 있다.

정도가 될 것 같다.

다른 여러가지 장점들도 많을텐데, 대부분 위의 두 항목에 포함되는 경우로 생각된다.

 

Slack은 어떠한 방식으로 워크스페이스를 분리할 수 있을까?

이것을 할 수 있는 이유는 Slack의 '채널 중심적인 운영'에 있는듯하다. 카카오톡을 비교 대상으로 삼아보자.

카카오톡에서 협업할 때를 떠올려보면, 단톡방 하나를 파서 이것저것 대화도 하고 파일도 올리고 해본다.

그러다 대화가 길어지고, 사진도 올라오고 하다보면 방이 너무 복잡해져 어떤 얘기를 했는지 한눈에 정리되지 않는다.

게다가 플러스 친구나 사적인 대화 내용이 포함된 다른 채팅방이 올라오는 것은 덤이다. 그러다보면 우리의 단톡방은 점점 기억에서 잊혀지게 된다.

 

카카오톡

카카오톡에서 이러한 문제들이 발생하는 이유는, 카카오톡과 같은 채팅 앱은 '유저 중심 운영'을 하기 때문이다.

무슨 말일까? 카카오톡을 사용할 때의 일반적인 흐름을 생각해보자. 먼저 계정정보를 입력하여 로그인한다.(또는 자동 로그인)

경우에 따라 프로필을 설정하고, 원하는 친구와 채팅방을 열어 잡담을 나눈다. 심심하니 다른 친구와도 대화하고, 단톡방에도 들어가본다.

그렇게 시간이 지나다보면, '나'라는 '유저'가 생성하거나 입장되어있는 모든 채팅방에서의 대화들이 모두 '나'에게 흘러 들어온다.

설령 내가 협업을 하기 위한 방을 만들어둔다고 할지라도, 사적인 내용의 대화가 나에게 도착하지 않게 만들 방법은 없다. 애초에 그런 용도로 만든 앱이 아니다. 채팅 앱이니까.

 

반면에 위에서 언급했듯, Slack은 '채널 중심적인 운영'을 한다. 이해가 쉽게 그림으로 살펴보자.

Slack sign in 화면

위는 Slack의 첫 로그인 화면이다. 그런데 자세히 살펴보면 유저의 id나 pw를 입력받는 것이 아니라, workspace의 url을 먼저 요구한다.

Slack sign in 화면

유효한 채널 이름을 입력하고 나야지, Slack은 유저가 채널에 접근 권한이 있는 사람인지 확인하기 위한 절차를 거친다.

접근 권한 확인이 완료되면 마침내 채널에 접속하여 활동할 수 있다.

Slack 진입 화면

 

카카오톡과 Slack이 각자 유저 정보를 확인하는 순서를 그림으로 도식화해보자.

 

카카오톡 로그인
Slack 로그인

Slack의 진입 순서도를 살펴보면, 마치 회사의 구조도와 비슷하다는 느낌을 받는다.

이렇듯, 카카오톡은 유저가 대화방을 소유하는 듯한 반면 Slack은 채널에 유저가 포함되어 있는 형식이다.

그렇기에 굳이 여러개의 채널을 켜놓는 것이 아닌 이상, 메시지가 섞여 들어올 이유가 없다. 그래서 워크스페이스 분리가 가능하다.

 

채널 내부를 살펴보자. 포스팅을 위해 Test 채널을 생성하였다.

Slack 채널 첫 화면

왼쪽 네비게이션바의 Channels에 #general 채널이 생성되어 있다. 채널 추가를 위해 +버튼을 클릭하면 채널 생성 화면이 나타난다.

채널 생성 화면

항목을 살펴보면, 채널의 이름 / 채널에 대한 설명 / 공개여부를 설정할 수 있다.

위에서 얘기한 Slack 진입 프로세스와 더불어, 채널 생성을 자유롭게 할 수 있다는 점이 워크스페이스를 명확히 분리할 수 있게 한다. 

작성자는 다음과 같은 업무메모 채널을 생성하였다.

업무메모 채널 생성

채널을 Private하게 생성하고, 적당한 이름을 붙여주었으므로 이제 해당 채널은 업무와 관련한 메모들을 남겨둘 수 있는 공간이 되었다.

에러 분석 채널

 

또 채널 하나를 만들어 private으로 설정하고, proj-error라는 명칭을 붙여 에러 발생시에 이야기를 나눌 수 있는 공간으로 정했다.

 

채널 우측 상단의 Invite Teammates를 클릭하면, 채널에 접근 권한이 있는 유저들을 채널에 초대할 수 있다.

현재는 채널에 아무도 존재하지 않아 초대할 수 없지만, 실제 업무시에는 필요한 사람들을 먼저 Slack 채널에 초대한 후,

생성된 내부 채널에 초대하는 방식으로 진행된다. 보기에는 카카오톡이랑 무슨 차이가 있나 싶을수 있겠지만,

실제 업무시에 사용해보면 워크스페이스가 정말 깔끔하게 나눠지는구나 하는 느낌을 받을 것이다.

여기까지만 하더라도 카카오톡을 통한 협업과는 비교할 수 없게 효율적인 구조이지만, 2019년 기업가치 200억 달러의 서비스까지는 아닌 것 같다는 생각이 들기는 한다. 당연히 이게 다가 아니다.

대표적인 협업 메시징 앱으로써 Slack이 급부상했던 이유는, 위에서 생성한 채널들을 유저의 입맛에 맞게 커스터마이징 할 수 있기 때문이다.

여기서의 커스터마이징이란, github이나 notion, trello와 같은 프로젝트 관리 툴과의 연동이 가능하다는 것을 의미한다.

이것에 대해서는 아래의 Github Organization / webhook과 Notion 파트에서 설명한다.

2. Github Organization / webhook

요즘은 누구나 다 쓴다는 Github. 팀 프로젝트시에 종종 쓰곤 했지만 항상 단일 repository를 사용했는데,

이번엔 프론트엔드, 백엔드가 둘다 필요한 프로젝트였기 때문에 organization을 구성하여 운영하고 있다.

organization의 장점은, 내부에 여러개의 repository를 하위로 둘 수 있고, 그것들을 organization 차원에서 관리할 수도 있고 개별 repository를 관리할 수도 있다는 점이다.

repository의 상위 디렉토리 같은 느낌..? 다만 repository를 public으로 두어야 무료로 사용할 수 있다는 점은 고려해야 되겠다.

Github Orgagnization 메인화면

이렇게 organization을 구성하고, 팀원들을 organization에 초대한 후 적당한 권한을 부여하면,

위와 같이 자유로이 repo를 구성하여 하나의 프로젝트를 위한 작업 공간을 생성할 수 있다.

문제는 각자 다른 repository를 사용하기 때문에, 직접 github에 들어가지 않는 이상 어떠한 변화 사항이 생겼는지 알 방법이 없다.

이러한 문제를 해결해 줄 수 있는 녀석이 바로 Slack이다. Slack을 github과 연동하면 commit이 올라올 때마다 Slack을 통해 알림을 받을 수 있다.

세팅을 위해 먼저 github 알림을 받을 채널을 생성한다.

 

github notification 채널 생성

채널 생성을 완료했으면 Slack에 github을 추가하자. Slack 왼쪽 네비게이션바의 Add more apps를 클릭하면 아래와 같은 화면이 나타나는데,

검색창에 github을 입력하고 install -> Add to Slack -> Continue 

Slack Add more apps

위의 과정을 모두 마치면 아래와 같이 github을 설치할 채널을 선택하는 화면이 나타난다.

specific channels -> github-notification(원하는 채널)을 지정한후 install 클릭.

다시 Slack의 github-notification 채널로 돌아가서, 다음과 같은 명령어를 입력해준다.

github repository subscribe

알림을 받고싶은 채널로 들어가 /github subscribe [repository] 의 형식으로 입력해주면 github 메시지가 하나 출력된다.

Connect Github account를 클릭하고, 본인이 연동하려하는 repository를 선택하여 repository에 slack을 설치한다.

repository에 slack 추가

 

마지막으로 github로부터 알림을 받기 위해, slack에 webhook을 설치한다. 같은 방식으로 add more apps에 들어가 원하는 채널에 incoming webhooks를 설치한다.

slack webhook

 

설치가 완료되면 다음과 같은 Webhook URL을 부여받는데, 이것을 github webhooks에 등록해주면 된다.

webhook url

github에 들어가 알림을 보낼 Repository -> Settings -> Webhooks로 이동하여 Add webhook을 클릭한다.

github webhooks 화면

다음과 같은 화면이 나오면, 아까 부여받은 webhook url을 Payload URL에 넣어주고 Add webhook.

 

이후 Github에 commit을 push하면, 아래와 같이 push 알림이 Slack으로 연동되어 메시지를 발행해주는 것을 알 수 있다.

 

3. Notion

팀에서 문서 관리용으로 사용하고 있는, 요즘 핫하다는 Notion이다.

평소에 에버노트를 즐겨 쓰다가 팀에서 쓰는 이유로 한번 써보고 있는데, 굉장히 획기적이라는 느낌이 있다.

동일한 데이터를 대상으로 여러가지 시각화를 원하는 View에 따라 간편하게 설정해서 볼 수 있다는 점,

직관적인 UI를 통해 마치 오프라인에서 소통하는 것과 비슷한 느낌을 준다는 점, 많은 협업 도구들이 지원하는 기능들을 통합한 것 같은 느낌을 준다는 점등이 대표적인 장점이다.

개인적 의견으로는 개인 메모를 위해 사용하기에는 조금 오버 스펙인 것 같은 느낌은 있어서 에버노트와 병행하여 사용중이다.

 

Notion에 workspace를 생성하고, 기본 템플릿을 적용하면 아래의 화면을 볼 수 있다.

 

01
012

사진들을 자세히 보면 같은 데이터들을 View 설정에 따라 다른 시각화로 바라볼 수 있다는 것을 알 수 있다.

또한 페이지 내의 Filter와 Sort를 제공함으로써, 원하는 데이터들만 조건에 따라 걸러내서 볼 수도 있다.

Notion 또한 Github처럼 Slack과 연동하여 사용할 수 있는데, 사용법이 비슷하고 난이도는 훨씬 낫기 때문에 따로 작성하지는 않는다.

우리팀은 이러한 방식으로 Notion을 사용중이다.

 

4. Slack Browse Apps

Slack에는 Github, Notion 이외에도 연동해서 사용할 수 있는 협업툴이 굉장히 많다. 그것들에 대해 짤막하게 둘러보고, 포스팅을 마치려한다.

왼쪽의 Slack App 카테고리만 보더라도 어마어마하게 많은 앱들을 연동할 수 있음을 짐작케한다.

실제로 카테고리 하나를 클릭해 들어가보면 적지 않은 앱들이 각 카테고리 내에 있음을 알 수 있다.

Bots 카테고리. next page가 더 존재함..

 

이토록 수많은 툴들을 한번에 연동하여 즉각적으로 반응할 수 있다는 점은 우리의 협업 프로세스를 기민하게 작동시킬 수 있는 중요한 수단이 된다.

그렇기에 'Slack'은 단연 no.1의 협업 어플리케션으로 자리잡은 것이 아닐까.


이번 포스팅에서는 Slack, Github, Notion을 연동하여 효율적인 협업 구조를 구축하고, 실사용 예시까지도 살펴보았다.

이렇듯 다양하게 지원되는 여러가지 도구들을 잘 활용한다면, 더욱 더 신속하고 정확하게 협업할 수 있는 환경을 만들어 갈 수 있을 수 있다고 생각한다.

다음에 더욱이 발전된 방식으로 협업하는 스스로를 발견하면, 두번째 포스팅도 해보아야겠다.

반응형
Comments