본문 바로가기

Design

디자인 버전 관리 툴, Abstract로 협업하며 느낀 점

앱스트랙트(Abstract)로 협업하기

앱스트랙트를 사용한 지는 수년 되었지만 다른 디자이너들과 협업할 일이 없었다. 최근에야 본격적으로 여러 디자이너들과 사용하게 되면서 겪었던 시행착오를 남겨보려 한다. 원래라면 보통 작업을 피쳐 별로 진행하겠지만 요새 디자인시스템을 잡고 있다 보니 손대야 할 것들이 많아서 더 시행착오를 겪은 것 같다.

 

 

 

브랜치 따고 의식의 흐름으로 작업하기?

주로 많이 했던 실수는 브랜치를 계획적으로 관리하지 않았던 것이다. 특정 개선 목적으로 브랜치를 따놓고 다른 부가적인 작업도 의식의 흐름으로 진행했다. (물론 팀에는 공유하고) '작은 수정이니까 하는 김에' 라는 마음으로 진행했지만 팀원들이 브랜치를 따면서 문제가 생기기 시작했다.

 

대충 브랜치 따면 이렇게 돼요

야금야금 수정을 하다 보니, 하나의 브랜치에서 변경사항의 볼륨이 점점 커졌다. 그 안에는 팀원들이 작업할 때 반영돼있어야 하는 사항들도 있었다. 내 브랜치에서 수정한 사항을 팀원이 사용해야 하고, 수정하는/해야할 스크린들이 겹치면서 버전 관리는커녕 혼돈의 도가니탕이 열렸다. 

브랜치 관리에 계속 이슈가 생기다보니 팀원들도 피로함을 느끼기 시작하고, 나도 당황하기 시작했다. 작년에는 앱스트랙트를 사용하더라도 작업하는 파일이 다르거나, 브랜치를 따는 시기가 겹치지 않았는데 최근엔 한 파일을 여러 명이 동시에 만지면서 혼란에 빠지게 된 것이다. (나만 빠진 것 같지만 기분 탓이겠지)

 

어떡하지? 일단 머지해!

팀원이 당장 사용해야하는 사항이라 작업해야 할 것들이 더 남아있음에도 일단 마스터에 머지했다. 팀원은 이미 만들어놓았던 브랜치를 삭제한 뒤 다시 따야 했고(업데이트를 해도 되지만 귀찮으니), 나도 작업하던 브랜치를 동일한 이름으로 다시 따서 작업을 이어했다. 마스터라인과 Overview에 불필요한 히스토리가 남아서 맘에 들지 않았지만 급한 불을 껐으니 더 이상 생각하지 않았다.

그 이후에도 역시나 똑같은 상황들이 생겼다. 자잘하게 수정할 거리들이 눈에 보이니 당장 해결하고 치워버리고 싶은 마음이 앞섰던 것 같다.

 

그럼 내가 Update하고 Conflict를 해결해주자!

팀원에게 폐를 끼치기 싫어 꼼수를 하나 생각했다. 팀원의 브랜치를 내가 업데이트해놓자! 내가 작업한 내용이니 Conflict가 크게 나도 해결하기 수월하겠지! 라고 생각했지만.. 역시 나는 햄보칼 수 없지

당차게 팀원의 브랜치를 업데이트하였지만, 그 브랜치가 팀원의 컴퓨터에서 오류가 나기 시작했다(...)
Update from Master를 하면 그 히스토리가 Commit했을 때처럼 서버에 찍히리라 생각했는데, 로컬에만 적용된 거다. 업데이트한 내역은 내 컴퓨터 로컬에 저장되고 정작 팀원의 로컬에는 업데이트된 내용이 없으니 앱스트랙트에서 오류가 났다. 결국 팀원은 해당 브랜치에 diverged branch를 추가로 따서 작업해야 했다...

 

팀원님, 내가 잘못했어요!!

앞으로 다시 잘해보자

팀원을 본의 아니게 괴롭히다 보니, 브랜치는 자잘하게 개수가 많아지더라도 정확한 목적으로 따고 작업하기로 했다. 작은 변경이 누적되어 큰 볼륨이 되고 그 작업 내용이 나에게만 적용되어있으니 협업에 안 좋은 영향을 줬다. 아직도 나도 모르게 다른 부분도 야금야금 만지게 되지만, 정신을 차리고 새로운 브랜치를 따서 작업하고 있다. 수정사항을 빠르게 마스터에 반영할 수 있으니 훨씬 좋다. 

누군가에겐 당연한 방식이겠지만 여러 명이 한 파일을 만지는 게 처음이다 보니 우당탕쿵탕하며 깨달았다.
!브랜치는 명확하게 따고, 브랜치 목적에 맞는 작업 하자!

 

 

 

 

오프라인 모드의 늪

두 번째 시련길은 오프라인 모드의 늪에 빠진 것이다. (꽃길은 언제 걸어..?)
나는 무려 6개월 동안 오프라인 모드로 작업을 하고 있었는데 왜 그런 일이 일어났는지 아직도 이해되지 않는다. 추측해보면 어느 날 인터넷이 좋지 않은 곳에서 작업을 하면서 오프라인 모드에 빠졌는데, 그 것을 눈치채지 못하고 반 년간 작업을 진행한 것 같다.

 

눈치채지 못한 이유를 추측해보면 이렇다.
· 마스터가 진짜 마스터/오프라인 마스터로 분리되어 운영됐다.
· 6개월동안 머지하면서 오류나 경고가 뜨지 않았다. (오프라인 마스터에서 혼자 작업했으니 충돌날 리가)
· 좌측 상단에 무채색 오프라인 표시 외에 내가 오프라인 모드인 것을 알 방법이 없다. 이 마저도 동기화 상태 표시와 겹치는 겹치는 위치라서 계속 떠있지 않았던 것 같다.
· 모바일 작업을 담당하면서 모바일 파일을 만지는 사람이 나뿐이라 알려줄 이가 없었다.


내가 눈치를 챈 시점은 팀원의 작업물을 리뷰하면서였는데, 진짜 마스터에 구버전 디자인이 싱크 돼있는 걸 보고 얼마나 깜놀했는지.. 부랴부랴 백업용 파일을 추출하고 내 파일과 마스터의 싱크를 맞추기 시작했다.

 

이제부터 지옥이 시작되는데...

마스터와 싱크를 맞추면서 내 브런치는 diverged로 분기되었다. 그걸 마스터와 머지해야 했는데 거의 약 1천 개 이상의 conflict를 있었다. 다행히도 6개월 전과는 비주얼적으로 큰 차이가 있어서 conflict를 해결하는 데는 크게 어렵지 않았다.

그러고 일주일 뒤, 나는 마스터 파일이 다시 6개월 전의 구버전으로 싱크 된 것을 발견했는데 정확한 이유를 모르겠다. 내가 어느 순간 update from master을 누른 것 같은 기억이 있는데.. Sync가 완벽히 되지 않은 상태에서 update from master가 떴었고(버그려나?) 그걸 눌러 다시 내 브런치가 구 버전으로 업데이트되고, 그게 머지되지 않았나 싶다.

어쨌든, 약간 빡침상태로 아예 아트보드를 다 지우고 백업용 파일에서 복사하여 다시 세팅했다. 라이브러리와 심볼 연결을 다시 해야 했는데 차라리 그게 더 쉬웠다.ㅠㅠ 무식한 방법으로 해결해버렸는데 같은 증상은 다시 나타나지 않았다. 그 이후로 오프라인 모드와 싱크 상태를 주기적으로 확인하는 습관이 생겼다. (해피엔딩인가)

 

자잘하게 불편한 점들

실시간 동기화 지연
앱스트랙트는 동기화가 실시간으로 되는 척하지만 잘 되지 않는 편이라, 팀원이 머지를 하면 앱을 한 번씩 껐다켜줘야 빠르게 동기화된다. 이미 머지된 브랜치가 그대로 살아있는 경우도 많고 리뷰어가 동기화되지 않는 경우도 많다.

업데이트 후 좌표 겹칩
팀원이 아트보드를 추가/이동해서 머지를 하고 그 업데이트를 받았을 때 그 좌표에 내가 아트보드를 두었다면 아트보드가 겹치는 이슈도 있다. 팀원이 작업한 내용을 업데이트받으면 그 부분을 꼭 확인하는 습관을 들이자.

 

앱스트랙트에 개선되길 바라는 기능

리뷰 리마인더
개인적으로 '리뷰 리마인더'기능에 대한 니즈가 크다. 물리적/시차적으로 팀원이 분리된 곳에서 서로 다른 일을 하다 보니 팀원이 진행한 업무의 리뷰를 잊게 되는 경우가 생기는 것 같다.
사람이 수동으로 리마인더를 하는 것은 주고받는 모두 스트레스를 받으니 이 부분이 자동화되면 일하기 훨씬 수월할 것 같다. Github이 슬랙에서 노티를 주는 것처럼 슬랙과 연결해도 좋을 듯. 제발 업데이트해주세요!!