파일시스템에 의존하지 않는 문서작성환경
트위터 타임라인에서 프로그래밍 환경이 파일시스템으로부터 분리되면 좋지 않겠느냐는 글을 보았습니다. 저는 직접 코드를 작성하는 일을 하는 사람은 아니지만 문득 매일 작성하는 문서 거의 대부분이 파일시스템에 저장되지 않는다는 사실을 생각했습니다. 전통적인 개발환경은 파일시스템에 뿌리를 두고 있고 현대에도 이 환경 자체는 크게 변하지 않은 것 같습니다. 그런데 문서 작성은 그 기반이 상당히 많이 바뀐 것 같습니다.
오래 전에 개발하며 남긴 자료를 보니 문서 파일이 많습니다. 작업을 시작하기 전에 주요 요구사항을 기입한 텍스트 파일부터 시작해서 기획서 워드 파일, 기획서에 포함된 드로잉을 만드는데 사용한 파워포인트나 비지오 파일, 기능을 개발하면서 데이터를 주고 받는데 사용한 엑셀 파일 등. 작업을 수행하는데 여러 ‘파일’이 필요했고 이들을 한 번에 찾을 수 있도록 관리해야 했는데 파일을 생성하는 프로그램에 따라 서로 다른 경로 규칙을 사용해 파일을 관리하기 어려운 상황이 생기기도 했습니다. 가령 어떤 앱은 ‘내 문서’ 디렉토리에 파일을 저장하려고 하고 다른 누군가는 ‘내 문서’ 하위에 그 프로그램 혼자 사용하는 경로에 저장 하려고도 했습니다. 또 다른 누군가는 아예 드라이브 루트에 디렉토리를 만들려고 하기도 했구요.
같은 작업에 사용하는 여러 파일을 같은 경로에 모아 놓고 이들의 버전 관리와 주요 체크포인트를 관리할 수 있는 도구가 있으면 좋겠다는 생각을 했지만 그런 도구는 없었습니다. 초기에 처음 많은 문서 파일을 관리해야 할 때는 로컬에 SVN 서버를 만들어 놓고 파일을 수정할 때마다 커밋하며 버전을 남겼습니다. 상당히 귀찮았지만 아무 안전장치 없는 파일시스템 기반 환경보다는 큰 안정감을 느낄 수 있었고 몇 번인가 위기로부터 빠져나올 수도 있었습니다.
시간이 흐르며 어떤 개발팀에서는 기획서와 여기에 관련된 모든 파일을 퍼포스에 서브밋 하기도 했습니다. 기획서 하위 경로에 카테고리 별로 디렉토리를 만들어 놓고 새로 작성한 기획서를 적당한 카테고리 하위에 서브밋 한 다음 수정할 때마다 새로 서브밋 하는 식입니다. 이런 카테고리 구분은 항상 명확한 분류를 어렵게 만들곤 했지만 이전에 비해 파일이 더 안전하게 보관될 뿐 아니라 최신 버전을 편안하게 받고 또 수정사항을 파일 바깥에 기록하고 또 중요 버전에 표시할 수도 있게 됐습니다. 하지만 한 문서에서 다른 파일을 연결하거나 경로를 언급해야 할 때는 자잘한 문제가 생기곤 했습니다. 이건 팀 규칙으로 퍼포스 로컬 리파지토리를 생성할 경로를 통일하는 식으로 해결했습니다.
여기서 더 시간이 흐르며 서서히 문서를 ‘파일’에 작성하지 않게 되었습니다. 현대에 회사 밖에 공유할 문서가 아닌 이상 파일을 사용하지 않습니다. 문서는 주로 웹 기반의 서비스에 있습니다. 파일이 아니므로 ‘저장’ 개념도 희박해졌고 항상 거의 실시간으로 최신 버전이 모두에게 공유되므로 문서에 버전을 표시하거나 이전 버전을 보관하거나 문서에 표시할 필요도 없어졌습니다. 특히 문서에 첨부할 이미지를 만드는데 사용하는 도구 역시 웹 기반으로 옮겨 가면서 문서를 끝까지 작성하는 동안 로컬에 파일을 만들지 않게 되었습니다. 문서는 노션이나 컨플루언스에, 드로잉은 피그마나 발사믹에, 마인드맵은 다른 웹 기반 도구에 있는 식입니다. 최근에는 외부 조직에 문서를 공유할 때도 웹 기반 서비스에 문서 권한을 조정해 URI를 직접 공유하개 되었습니다. 외부 조직 역시 문서의 최신 버전을 실시간으로 공유 받게 되었습니다.
프로그래밍 환경에서는 파일시스템에 의존하고 있고 복잡도가 올라감에 따라 이를 관리하고 규칙을 유지하는데 어려움이 있을 것 같아 보입니다. 그런데 주로 문서를 작성하는 일을 하는 입장에서는 별로 의식하지 못한 사이에 ‘파일시스템’에 거의 의존하지 않게 되었습니다.