이 글은 GitHub Universe 2018 참석기 #1에서 이어진 글이다.
행사장
행사장은 꽤 넓은데 저 앞에 보이는 곳이 발표장이다. 발표장 외에는 모두 각 부스와 콘퍼런스 시설들이 배치되어 있다. 이전 글에서 설명한 대로 키노트는 3개의 트랙의 발표장을 다 열어서 진행되고 트랙은 Helicline, Tryplon, Perisphere로 나누어서 진행되었다.
행사장 내에 GitHub Shop이 있어서 티셔츠나 후드 등 GitHub의 SWAG을 구입할 수 있다. 나도 컵이랑 몇 가지를 구매했다.
GitHub Shop 한쪽에는 흰색 Mona 옥토캣을 비치해두고 색칠해 갈 수 있게 해놨다. 워크숍 기념품으로 받은 금색과 같은 모양인데 흰색이다.
이렇게 쌓아두고 그냥 집어다가 색칠해서 가져가면 된다. 나는 흰색이 더 이쁜 것 같아서 색칠하지 않고 그냥 가져왔다. 둘째 날 점심때쯤 물량이 끝난 것으로 보아 꽤 많이 준비해 놓은 것으로 보인다.
행사장은 전체적으로 파티처럼 조명이 되어있어서 더 축제 같은 느낌이 난 것 같다.
지금은 서비스로 오픈한 My Octocat을 터치스크린으로 배치해 두어 직접 자기만의 옥토캣을 만들어서 이메일로 받아볼 수 있었다.
여긴 2층에 올라가면 있는 부스 공간이다. 1층과 2층에 부스가 나누어져 있고 2층에는 GitHub에 물어볼 수 있는 부스도 마련되어 있었다. 느낌으로 한 2~3,000명 정도 규모가 되는 것 같은데 각 부스도 티셔츠나 스티커를 넉넉히 가져와서 나도 충분히 챙겼다.
한쪽에는 Demo Desk가 있어서 각 스폰서 회사들이(아마도) 돌아가면서 시연을 하고 설명을 했는데 나는 앉아서 제대로 듣지는 않았다.
아주 큰 금색 Mona Octocat 동상. 첫날에는 동상만 있었는데 둘째 날에는 GitHubber 네임태그를 걸어두었다. ㅎㅎ
콘퍼런스를 참여하다 보니 위와 같은 가방을 멘 사람이 여럿 보였다.(사진은 몰래 찍느라고...) 이 디자인은 Student Developer Pack의 디자인인데 이 가방을 멘 사람들의 옷에 Campus Expert라고 되어 있는 걸 보니 GitHub에 학교와 연계해서 하는 과정 같은 게 있는 것으로 보인다. 실물이 이쁘진 않았지만, 이미지로만 보던 가방을 실제로 보니 재밌었다.
Day 2
Keynote
둘째 날 키노트는 소프트웨어 업계에 대해 초점을 맞추는 느낌으로 전날 공개한 Octoverse의 내용도 많이 다루고 있었다. 개발자가 43%의 시간을 코드 작성이 아닌 곳에 쓰고 있으며 소프트웨어를 작성하는 일은 여전히 어렵다는 얘기 등을 하면서 GitHub의 사용자 중 80%는 미국 외에 존재한다고 했다. 특히 최근에 미국 외의 사용자가 더 많이 증가하고 있으며 동남아, 홍콩, 이집트 등의 개발자가 최근에 증가하고 있다고 강조했다.(이런 내용은 Octoverse에서 볼 수 있다.)
둘째 날 키노트의 절반은 전날 공개한 GitHub Actions를 더 자세히 설명하는데 할애했다. 사전에 GitHub과 협업해서 Action을 만든 업체들이 나와서 직접 어떻게 Action을 활용할 수 있는지를 보여주었는데 pulumi는 코드를 수정하면 바로 클라우드에 배포하는 것을 보여주었고 twillo는 급한 이슈가 올라오면 이를 개발자에게 문자로 보내주고 개발자가 문자로 답장을 보내면 이를 GitHub 이슈에 댓글로 달리는 것을 보여주었다. HashiCorp에서도 나와서 S3로 정적 웹사이트를 설정한 Terraform 저장소를 기준으로 fmt, validate, plan을 실행하고 그 결과를 바로 Pull Request의 댓글로 달아주어 잘못된 내용을 수정하는 과정을 데모로 보여주었다.
이번에 기념품으로 GitHub 로고가 붙은 Flic 블루투스 버튼을 주었는데 repository_dispatch
이벤트를 이용하면 외부 이벤트로도 GitHub 액션을 실행할 수 있다고 한다.
마지막으로는 Social Impact의 담당자가 나와서 소프트웨어로 사회에 기여하는 분야에 대해 설명을 했다. 2015년에도 이 부분을 강조했는데 이쪽을 담당하는 부서가 있다는 부분에서도 GitHub이 관심을 많이 가지고 있음을 알 수 있다. 관심은 어느 정도 있지만, 자세히 알지는 못하는데 소프트웨어로 사회문제를 해결하는 다양한 사례를 설명하고 세션 중에도 이와 관련된 패널 토의가 있었다.
From side project to profitable business on GitHub Marketplace
재밌는 세션이었는데 나도 Pull Request 알리미를 만들어 보려다가 올여름쯤 나온 Pull Reminders를 알게 되었는데 사이드 프로젝트로 만들어서 돈까지 벌게 된 얘기이다.
발표 시작이 "해고됐다"였는데 해고되고 고민하다가 Pull Reminders를 만들기로 하고 구글에 검색해서 다른 사람들도 이런 제품이 필요하다고 생각했다고 한다. 만들고 런칭한 후 트위터에 올린 뒤 누가 실제로 메일을 보내서 주말에는 알림 안 왔으면 좋겠다는 기능 요청을 했다고 한다. 이런 메일을 주고받는다고 결제해서 쓸 생각도 있냐고 물어보니까 그렇다고 해서 월 $20으로 정했는데 결제 페이지 없는데 어디서 결제하냐고 해서 급히 걸제 페이지를 만들었다고 한다. 그래서 2주 동안 메일을 45개 주고받고 67 커밋만에 $20를 벌게 되었다. 사용자가 많아지면서 기능 요청도 많아지고 이를 관리하기 위해서 GitHub 프로젝트 기능을 사용하다가 더 많은 사람이 이용할 수 있도록 GitHub 마켓플레이스에 앱을 올리게 되었다고 한다.
지금 마켓플레이스를 보면 최저가가 $14인데 장표에 나온 9월 유료 계정이 200개는 넘는 것 같으므로 나쁘지 않은 수익을 벌고 있는 것으로 보인다. 실제로 사이드 프로젝트로 1인 기업으로 돈을 벌게 된 과정이 재밌었다.
Is your engineering team high-performing? How to measure team speed and quality
Circle CI CTO가 팀의 생산성과 질을 측정하는 방법에 관해서 얘기하는 자리였다. Circle CI는 300명 이상의 개발자가 있고 1,200만 번 이상의 빌드가 매달 발생하고 있다. 가치와 연관된 3가지 요소로 "master 브랜치의 안정성", "배포 빈도", "배포에 걸리는 시간"을 꼽고 Net value scope(NVS)라는 공식에 관해서 설명했다. NVS는 (1 - count(red builds) / count(green builds)) / (1 + red mins / green mins)
로 설명했는데 이 공식이 가지는 의미는 내가 제대로 이해하지 못했다.
NVS로 얻은 데이터에 3가지 질문을 해볼 수 있는데 "무엇이 좋은 것인가?", "무엇이 안 좋은 것인가?", "여기서 무엇을 배울 수 있는가?"이다. 관련 설명을 하면서 여러 프로젝트에서 NVS가 다양하게 분포된 그래프를 보여주었는데 영어가 짧아서 다 이해하진 못했다. ㅠ 이 공식이 가지는 의미는 또 따로 생각해 봐야겠지만 저렇게 접근해서 의미 있는 결과를 찾아보려는 것이 재미있었다.
From Monorail to Monorepo: Airbnb's journey into microservices
Airbnb의 메인 Ruby on Rail 코드 베이스를 Monorails라고 부르는데 Airbnb의 프론트를 초기에는 Backbone을 썼고 2015년부터는 React + Redux로 바꾸었고 백엔드는 초기에는 자바 서비스였지만 대부분은 Monorails이고 비동기 Job에는 Resque를 쓰고 있다. Monorails의 코드 베이스가 빠르게 커지기 시작해서 1,254명의 컨트리뷰터가 있고 일간 배포를 220번씩 하고 30,000개의 데이터베이스 칼럼이 있고 155,000개의 PR이 머지되었다. 그래서 Airbnb의 GitHub 컨트리뷰션 그래프를 보는데도 엄청난 시간이 걸렸다.
마이크로서비스로 가지 않고도 도구로 해결할 수 있는 부분이 많으므로 scram이라는 자동 롤백 프로그램을 만들어서 센트리의 에러 로그를 SHA로 비교해서 새로운 오류가 올라오면 자동으로 롤백을 수행하고 Merge Queue를 만들어서 PR 머지를 배치로 처리했는데 처음에는 잘 동작했지만, 오랫동안 쓰지는 못했다. Monorails를 추적하기 위해 릴리스 관리를 도입했는데 이는 Airbnb의 문화를 급격히 바꾸었고 현재까지도 많은 개발자가 만족하고 있다.
장기적으로 더 큰 시스템이 필요하므로 현재 코드를 프리징하고 2019년부터 코드 분리 작업을 할 예정이다. 현재 Airbnb에는 Hyperloop라는 프론트엔드의 Monorepo가 있어서 Hypernova에 기반을 둔 서버사이드 렌더링을 하고 있고 Java Monorepo인 Treehouse가 있는데 자바가 C++와 비슷하게 성능도 나오고 정적타이핑이 가능하므로 선택했다.
에필로그
2015년에 참석했을 때 행사에는 만족하고 세션은 약간 아쉬웠던 기억이 있다. 지난번에는 첫 GitHub 콘퍼런스라서 그런지 기대를 많이 했던 것 같고 뭔가 개발자라면 다들 GitHub을 쓸 거라고 생각했는데 Git 혹은 GitHub을 보급하는 기초 세션이 많았던 탓이 있었는데 이번에는 그런 기대감을 많이 느끼지 않고 참가하기도 했고 세션도 이전처럼 Pull Reqeust가 무엇인지, 머지를 어떻게 하는지 등을 설명하는 세션은 없어서 만족도는 더 높았다. GitHub은 서비스도 잘 만들지만 이런 행사나 굿즈도 참 잘 만든다는 생각이 들었다. 딱히 무엇 때문이라고 말하기는 어렵고 말도 잘 통하지 않았지만 있는 내내 축제에 있는 것 같아서 즐거운 기분이 들었다.
Comments