Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.

Git 계정 여러 개 동시 사용하기

코드 저장소로 GitHub을 주로 사용해 왔는데 요즘은 회사에서도 GitHub을 쓰는 경우가 많아져서 계정 관리가 신경 쓰이는 편이다. 물론 사내에 이상한(?) 코드 저장소가 있는 것보다는 GitHub을 쓰는 걸 훨씬 선호하지만, GitHub Enterprise를 쓰면 상관없지만 GitHub.com을 쓰면 개인 계정과 회사 계정을 섞어서 써야 한다.

예전에는 GitHub Enterprise를 사용했었는데 커밋할 때 결국은 회사 이메일과 개인 이메일을 구분해서 하기가 어려워서 엔터프라이즈에도 개인 이메일을 등록해서 사용했다. 이때는 서비스 자체가 완전히 분리되어 있어서 큰 상관이 없었는데 지난 회사에서 GitHub.com의 같은 계정으로 회사 일까지 하다 보니까 꽤 불편함이 느껴졌다.

GitHub 컨트리뷰션 그래프

일단 컨트리뷰션 그래프에서 개인 사이드 프로젝트나 오픈소스 활동이 회사 코드 작업과 섞이는 게 별로였다. 이건 컨트리뷰션을 꽉 채우고 싶다거나 그런 것보다 나로서 둘은 완전히 타입이라서 이 둘이 섞여 있는 게 불편하게 느껴졌다. 나중에 시간이 지나서 "이때는 개인 코딩은 못 했구나", "이때는 정말 열심히 했구나" 혹은 "이때는 회사 일을 열심히 했구나" 같은 걸 돌아보고 싶은데 그런 게 되지 않는다. GitHub에서 이런 필터링이 지원된다면 해결될 일이긴 하지만... 어차피 회사 저장소는 Private라서 시간 지나면 컨트리뷰션 그래프에 표시만 되지 내용을 볼 수 있는 게 아니기도 하고...

가장 불편한 것은 "알림"이 섞이는 것이었다. 오픈소스 쪽에 워치를 걸어두어서 받는 알림이 많다 보니 의외로 회사 GitHub 알림을 놓치기도 하고 회사 일을 할 때랑 개인 코딩을 할 때랑 시간대가 완전히 다른데 주말에 코딩하다가 불필요한 회사 GitHub 알림을 보게 되거나 하는 건 내가 원하는 게 아니었다. 그냥 딱 분리되어서 내가 의식적으로 두 영역을 왔다 갔다 하기를 바랐다.

GitHub 계정 분리하기

그래서 이번에는 GitHub 계정을 분리해서 사용하기로 했다. 주변에서 마찬가지로 불편하다는 얘기도 들었지만, 같이 썼을 때의 불편함은 느껴봤으니 이번엔 따로 써보자는 생각이었다.

회사 이메일로 GitHub 계정을 새로 만들기는 쉽고 요즘 브라우저에서는 프로필 기능 등으로 GitHub의 계정을 따로 사용하는 건 어렵지 않지만, 메일이 중복 등록은 당연히 안되므로 Git 커밋을 할 때 계정에 맞게 잘 해주어야 한다. 회사 업무에 개인 이메일을 쓰거나 반대로 하면 커밋이 다른 계정에 연결되게 된다.

그래서 중요한 부분은 저장소에 맞게 (실수 없이) 원하는 이메일 주소로 커밋할 수 있어야 하고, git clone이나 git push를 할 때 올바른 SSH 키를 사용할 수 있어야 한다.

SSH 키 분리

회사 계정에서 사용할 SSH 키를 생성한다. 기존에 쓰던 SSH 키는 개인 계정에 등록되어 있으므로 회사 계정용 SSH 키를 따로 만들어야 한다.(중복 등록을 할 수 없다.)

SSH 키는 ~/.ssh/config 파일에서 호스트별로 관리할 수 있다.

# work account
Host work-github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/github-outsider-work

위 설정은 호스트가 work-github.com로 되어 있으면 실제 호스트는 github.com를 사용하고 SSH 키 파일도 ~/.ssh/github-outsider-work를 사용하라는 의미이다.

즉, mocha같은 경우 클론할 때 git@github.com:mochajs/mocha.git 주소를 사용하는데 git@work-github.com:mochajs/mocha.git를 사용해야 한다. 여기서 github.comwork-github.com으로 변경했다. 이는 클론하거나 리모트 저장소를 등록할 때 수동으로 변경해줘야 하지만 원격 저장소는 처음 세팅할 때만 신경 쓰면 이후로는 주소를 매번 입력하는 것은 아니라서 나한테는 받아들일 만한 불편함이다.(정 귀찮아지면 간단한 크롬 익스텐션을 만들어서 써도 될 것 같다.)

이메일 주소 분리

커밋할 때 사용하는 이메일 주소는 ~/.gitconfig 파일에 전역으로 설정해 놓고 사용하는 것이 보통이다. 저장소별 로컬 config마다 설정하면 되긴 하지만 작업을 해보면 자연스럽게 Git 저장소를 클론하고 작업을 하므로 매번 실수하기 마련이다.

encyphered님인 pre-commit 얘기를 해주셔서 처음에는 pre-commit 훅을 이용하려고 했다. Git의 템플릿 기능을 사용해서 미리 pre-commit 훅을 넣어두면 새 저장소를 초기화할 때마다 훅이 기본 설정되므로 잘못된 저장소에 잘못된 이메일로 커밋하는 것을 차단할 수 있다. 대신 컴퓨터에 개인 프로젝트와 회사 프로젝트가 섞여 있으므로 사용할 때 신경을 좀 써야 한다.

그러다가 Obliviscence님이 Includes 설정에 대해서 알려주셔서 좀 찾아보니 이 기능이 내가 딱 원하던 기능이었다.

.gitconfig에 설정하는 includeincludeIf 섹션을 원하는 설정 파일을 추가로 불러오게 할 수 있다.

예를 들어 다음과 같이 ~/.gitconfig 전역 설정 파일을 만들어 보자.

[user]
  email = outsideris@gmail.com
  name = Outsider
  signingkey = 131EA9B1
[includeIf "gitdir:~/my-company-project/"]
  path = .gitconfig-work

여기서는 includeIf 섹션을 사용했는데 이 설정은 Git 디렉터리가 ~/my-company-project/ 디렉터리 아래 있다면 ~/.gitconfig-work 파일을 추가로 불러오도록 한 것이다.

~/.gitconfig-work 파일은 다음과 같다.

[user]
  email = outsider@my-company.com
  name = Outsider
[github]
  user = outsider-biz

테스트해본 결과 원래의 ~/.gitconfig 설정에 ~/.gitconfig-work를 추가로 사용하기 때문에 aliasmerge처럼 공통으로 사용하는 설정은 추가로 적어줄 필요 없고 덮어쓸 설정만 지정하면 된다.

나 같은 경우 개인 프로젝트와 회사 프로젝트가 상위 폴더부터 분리해서 사용하는 편이고 이를 섞는 일은 없으므로 includeIf가 딱 내가 원하던 설정이다. 2주 정도 사용해 보고 있는데 별도로 신경 쓰지 않아도 되면서 편하게 잘 쓰고 있다. 별일 없으면 앞으로도 업무용 GitHub을 분리해서 사용할 계정이고 회사를 이직하더라고(이직한 지 얼마 되지도 않아놓고!!) 같은 업무용 계정을 쓰면 회사별로 얼마나 커밋 양이 달라지는지도 한눈에 볼 수 있을 것 같다.

2019/06/08 16:33 2019/06/08 16:33

[Book] 배드 블러드 - 테라노스의 비밀과 거짓말

의학 분야는 잘 모르지만 Theranos라는 회사에 대해서는 들어본 적이 있고 그 CEO인 엘리자베스 홈즈에 대한 기사도 종종 본적이 있다. 자세히 알지는 못했지만, IT 관련 뉴스를 보면서 회사 이름과 홈즈에 대해서는 본 기억이 있지만 내가 관심있는 서비스가 아니라서 자세히 보진 않았던 느낌이다.

그러다가 작년부터인가 테라노스가 사기로 고소를 당한다는 뉴스를 많이 접하게 되었다. 유니콘이라고 불리면서 엄청나게 주목받던 스타트업이 언론의 탐사보도로 한순간에 바닥에 떨어지는 회사를 보면서 자세한 비즈니스 내용은 몰랐기 때문에 더 궁금했다. 어떤 일이 있었던 것인지.. 그래서 원서도 사서 조금 읽다가 포기하고 팟캐스트나 관련 기사도 좀 보고하다가 번역서가 나와서 읽게 되었다.

엘리자베스의 말에 100% 동의하지 않는다면 회사나 엘리자베스에게서 보복을 당할 수 있다는 사실을 그들도 알 권리가 있으니까요.

엘리자베스는 직원들에게 절대적인 충성을 요구했으며, 누군가가 충성을 바치지 않는다고 느끼면 즉각 그를 공격했다.

다 드러난 사실이라 스포일러도 아니지만, 테라노스는 손가락에서 뽑은 피 몇 방울만으로 혈액검사를 할 수 있다는 아이디어를 가진 스타트업이다. 주삿바늘을 무서워하는 사람들이 걱정 없이 간단하게 손가락을 통해서 검사할 수 있다고 주장했고 거의 10년 정도 회사를 운영하면서 엄청난 금액의 투자를 받으면서 10억 달러 이상의 기업 가치를 인정받은 유니콘 기업이 되지만 월 스트리트의 취재를 통해 모든 것이 거짓임이 밝혀지고 한순간에 무너져서 고소를 당하고 10년간 공기업 임원이나 이사로 일하는 것이 금지되었다. 결과적으로 실리콘밸리 최대의 사기극이 되어버렸다.

이 책은 테라노스의 문제를 파헤쳐서 보도까지 한 월 스트리트의 기자가 취재하면서 알게 된 내용을 정리한 책이다. 그래서 앞 2/3 정도는 엘리자베스 홈스가 테라노스를 어떻게 만들고 운영해왔는지에 관한 얘기들이다. 이 대부분은 부도덕하고 문제들로 가득 차 있는데 사기극을 밝혀낸 취재의 내용이라 그렇다는 느낌도 있지만, 그 내용을 보고 있으면 긍정적인 부분이 있었는지조차 궁금할 지경이다. 뒷부분은 테라노스의 문제를 눈치채면서 취재를 시작하고 테라노스와 법적 싸움을 하면서 기사를 내고 테라노스가 무너지기까지의 과정이 담겨있다.

대학교에서 화학공학 수업을 두 학기밖에 듣지 않고 중퇴한 사람이 이 같은 최첨단의 과학 기술을 개척했다고는 믿기 어려웠다. 물론 마크 저커버그가 열 살 나이에 아버지의 컴퓨터를 사용해 코딩하는 법을 배웠다고는 하지만, 의학은 전혀 다른 세계의 이야기였다.

기자도 얘기하고 있지만, 책을 읽으면서 엘리자베스 홈즈는 어디서부터 거짓이었을까 하는 생각을 많이 하게 되었다. 처음 회사를 차릴 때부터 거대한 사기극을 준비했다고 보기는 어렵지만 그렇다고 진지하게 혁신을 해보겠다고 생각하기도 어렵다. 혹은 본인의 아이디어에 너무 매몰되어 진짜로 혁신을 할 수 있다고 생각하지만, 그 과정은 무시하게 된 건 아닌가 하는 생각도 하게 되었다. 의학 쪽 지식은 거의 없으면서 혈액검사를 혁신하겠다는 아이디어로 회사를 시작했지만, 회사를 운영하는 내내 이 아이디어를 홍보하고 확신하는 모습은 엄청나게 나오지만 실제로 이 아이디어를 구체화하기 위한 노력은 별로 보이지 않는다.

화학 부서와 에드먼드의 기술 부서 간의 협력 관계에는 사실 큰 문제가 있었다. 두 부서 모두 엘리자베스에게 직접 보고해야 했으며, 부서 간의 의사소통은 권장되지 않았다. 엘리자베스는 사내 정보를 분류시켜 시스템 개발에 대한 전체적인 흐름을 자신만 알 수 있도록 만들었다.

테라노스를 보고 있으면 참 특이한데 도덕적인 문제나 혹은 정당한 이슈 제기를 하는 직원들은 수시로 잘라냈고 보안을 핑계로 각 조직은 서로 의사소통을 하지 못하게 하는 걸 보면 진지하게 기술을 만든다는 생각은 없어 보였다. 한편으로는 아이디어 자체의 가치를 너무 높게 보았기 때문에 이를 실현하지 못하는 직원을 탓하면서 (실체는 아무것도 없는) 테라노스의 기술을 보호하기에 집착했다는 느낌이 강하다. 그래서 각 직원한테 보안 서약서를 엄청나게 요구했고 직원도 다른 팀의 업무 내용을 알기 어려울 정도이고 해고하는 직원한테는 나가서도 테라노스의 얘기를 하지 못하도록 법적 대응은 집착적으로 하는 모습이 계속 나온다. 내가 느끼기에 이 모습은 자신의 아이디어에 너무 매몰되었다는 느낌이 강했다.

"그렇다고 이 사업을 추진 안 할 수도 없어요. 우리가 그만두고 6개월 후에 CVS가 그들과 계약했는데 그때 진짜라고 판명되면 어떻게 책임질 거예요?" 판덴후프가 말했다.

흥미로운 점은 제대로 된 프로토타입도 만들지 못한 테라노스가 유니콘까지 갈정도로 투자를 받았다는 점이다. 계속 허풍의 허풍으로 이어갔지만, 혈액검사를 혁신한다는 아이디어는 꽤 매력적이었는지 많은 사람이 여기에 속아서 투자해댔고 미국의 회사들은 이 혁신 기술을 다른 업체가 가져갔을때의 문제점을 걱정하면서 의혹이 있는 부분도 무시하고 넘어가기가 일쑤였다. 그런 면에서 보면 엘리자베스 홈즈는 아이디어를 구현하는 데는 관심이 없고 능력도 없었지만, 사람들이 매력적으로 느끼게 말은 잘한 것으로 보인다. 이건 월스트리트 저널의 보도로 위기에 몰렸을 때도 나오는데 직접 발표를 들어본 적이 없어서 모르겠지만 10년간 홈즈의 얘기를 듣고 홈즈한테 빠져들어서 지지하는 업계의 권위 있는 사람들이 수없이 나타난다. 이런 건 그 사람들의 실수를 얘기 안 할 수는 없지만, 기본적으로 그런 부분에서 매력적으로 말할 수 있는 홈즈의 능력은 확실히 인정할 수밖에 없다.

이 일은 실리콘밸리를 충격에 빠뜨린 꽤 큰 사건이다. 책을 읽으면서 다른 사건이지만 FYRE 페스티벌이 생각났다. IT라는 사업 자체가 대부분은 아직 해내지 못한 일을 약속하고 투자를 받아서 진행되는 만큼 제대로 된 투자와 허풍 혹은 사기와 실패의 차이는 무엇일까에 대한 생각이 책을 읽으면서 많이 들었다.

자세한 내용이 궁금했는데 책을 읽으면서 씁쓸하면서도 재미있었다. 특히 뒤로 가면서 월스트리트 저널이 보도하면서 테라노스와 싸울 때는 정말 흥미진진하다.

홈즈와 테라노스는 가능하지 않은 것을 미리 약속하고서, 약속을 지킬 수 없게 되자 절차와 원칙을 무시하려 한 것이다.


2019/06/03 04:27 2019/06/03 04:27