Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

샌프란시스코 오피스 투어 2015 #2

이 글은 샌프란시스코 오피스 투어 2015 #1에서 이어진 글이다.



HashiCorp

HashiCorp샌프란시스코 중심가 부근에 있었는데 우리가 방문한 바로 전 주에 HashiConf 컨퍼런스를 진행한 관계로 사무실에는 2명밖에 없고 좀 어수선한 분위기였다.

직접 HashiCorp의 제품을 쓰고 있지는 않지만, 평소 HashiCorp의 제품이 아주 잘 만들었다는 생각을 하던 터라 내가 궁금했던 것은 HashiCorp는 어떻게 제품을 만드는가? 하는 것이었다. 내가 느끼기에는 큰 회사에서 서비스를 만들면서 여러 시행착오를 통해서 프로덕션에 사용하는 기능을 제품으로 만드는 수준에 가까운데 HashiCorp는 서비스가 없는데 어떻게 개발에 필요한 제품을 이렇게 잘 만들 수 있는지가 궁금했다.

hashicorp에서 기념 사진
HashiCorp에는 로고 등이 붙어있는 곳이 없어서 그냥 기념사진을. ㅎ


Jon은 HashiCorp 제품의 과정을 죽 설명해주었다. 처음 만든 것은 Vagrant였는데 개발자가 개발환경을 만들기가 어려우므로 이를 해결하기 위해 Vagrant를 만들었고 상당한 인기를 끌었다. 하지만 Vagrant는 개발용이었으므로 프로덕션에는 적합하지 않았고 이어서 Packer를 만들어서 AMI 이미지든 디지털오션 이미지든 만들어서 배포하도록 했다. 이렇게 배포한 서비스를 모니터링 하기 위해 Serf를 만들고 분산환경에서 서비스 디스커버리를 하기 위해 Consul을 만들었다. 그리고 Terraform으로 인프라를 구축하도록 하고 Vault로 킷값을 암호화할 수 있게 하였다. Vault를 사용하면 소스를 공개하는데도 유용하고 서버가 침입 받았을 때도 안전하게 보안을 유지할 수 있다. otto로 환경을 구축할 수 있도록 하였고 이 모든 제품을 합쳐서 Atlas로 서비스하게 되었다. 처음 만들 때부터 어느 정도의 로드맵이 있었고 그 로드맵을 향해서 하나씩 차근차근 만들고 있는 것으로 보였다.

Go를 사용하는데 새로운 언어를 사용하면 작은 회사에서 개발자를 구하기 어렵지 않은가에 대해서 묻자 사람을 구할 때 어떻게 학습하고 얼마나 잘 배우는 가를 중점적으로 본다고 했다. 하나를 잘하는 사람은 다른 것도 잘 배우는 편이라고 생각하고 사람을 뽑기는 하지만 go로 전문가 영역의 사람을 구하기가 쉽지는 않다고 했다. 주력 제품을 모두 오픈 소스로 운영하는 부분에 대해서 묻자 오픈 소스이기 때문에 사람들이 돈을 내진 않지만 HashiCorp의 제품에 참여하고 같이 만들어 주고 있다. 이는 대단한 일이고 이를 통해 문화를 만들 수 있는데 이 부분이 중요하다고 생각한다.

개인적으로는 이번 오피스 투어에서 내용 면에서는 가장 좋았던 회사 중 하나였다. 우리를 초대해 준 Jon은 잘 안되는 우리의 영어에도 불구하고 열심히 설명을 해주었고 제품에 방향이나 회사의 의도를 친절하게 설명해 주어서 너무 인상이 깊었다. 이전에 읽어보기도 했지만 이날 너무 인상이 깊어서 다른 사람들도 좀 알았으면 해서 그 자리에서 바로 허락을 받고 돌아와서 HashiCorp의 도를 번역해서 올렸다. 다음에 인프라를 구축할 때 HashiCorp 스택을 상당히 긍정적으로 고려할 것 같다.

Docker

Docker 입구
Docker 고래 레고
입구에 있던 Docker 마스코트의 레고 모형

재작년에도 Docker 사무실에 갔었지만, 같이 간 anarcher님이 Docker를 좋아해서 이번에도 방문했다. 작년에 갔을 때와 사무실이 또 달라져서 AT&T 공원 근처에 새 사무실이 있었다. 재작년의 사무실에 비해서 3~4배는 커진 곳이었는데 이곳도 이미 다 꽉 차서 조만간 더 큰 곳으로 옮길 예정이라고 해서 Docker가 얼마나 빨리 성장하고 있는지를 느낄 수 있었다.

Dokcer 사무 공간
Dokcer 사무 공간

재작년과 같이 이번에도 커뮤니티 담당인 Ekaterina Kalacher가 우리를 맞이해 주었는데 미처 생각 못 해서 개발자와 만나게 시간을 잡아달라고까지는 미리 얘기를 못해서(사무실 방문을 받아주느냐 마느냐도 걱정되는 상황이었으므로...) 이번에는 Ekaterina하고만 얘기를 나누다 보니까 별로 할 얘기가 없었다. 안되는 영어라도 기술적인 거 물어보면 잘 모르겠다는 게 대부분의 답변이었고 Ekaterina의 발음은 특히 잘 못 알아 들어서 오래 있지 않고 나왔다. ㅠ

InfluxDB

InfluxDB는 타임시리즈 데이터베이스를 제공하는 회사이다. 난 솔직히 거의 모르는 데이터베이스였지만 anarcher님이 관심있는 기술이라서 곁다리로 따라갔다가 왔다. 갔을 때는 꽤 환영해 주는 분위기였고 파운더가 나와서 인사를 하고 팀별로 인사도 시켜주었다. 고객지원팀에 한 5명 있고 개발팀에 한 4명 있고 마케팅에 2명 정도 있어서 전체적으로는 15~16명 정도 되어 보였다. 이전에는 모니터링용(아마도?) 제품을 만들다가 올인원 앱을 만드는 게 무리라고 판단해서 데이터베이스에만 집중하기로 했고 현재 열심히 만들 수 있다고 했다. 기본적으로 일반적인 로그는 적합하지 않고 타임시리즈 데이터를 담는 게 좋다고 얘기해 주었다. 지금 UI는 Grafana를 쓰고 있는데 내부적으로 새로운 UI를 개발하고 있어서 조만간 새 UI를 공개할 예정이라고 했다. 아는 게 없어서 난 옆에서 조용히 있기는 했는데 훈훈하게 맞아주어서 좋았고 사무실에서 보이는 경치가 엄청나게 좋았다.

Airbnb

이번 여행에서 HashiCorp도 좋았지만 가장 인상적이었던 회사가 Airbnb였다. 사실 몇 년 전부터 해외에 나갈 때는 거의 Airbnb로 숙소를 잡아서 이동하고 있었지만, 서비스가 맘에 들어서 썼을 뿐이지 Airbnb가 기술적으로 대단하다거나 회사가 궁금하다거나 하는 생각은 별로 해 본 적은 없었다. Airbnb에 꼭 가보고 싶다 하는 건 아니었고 워낙 관심을 많이 받는 회사이다 보니 그 유명세 정도의 궁금한 정도만 있었다. 오피스 투어를 할 회사를 물색하는 가운데 작년 초에 트위터에서 Jordan Harband라는 사람이 내가 만든 Popular Convention을 개선할 생각이 있는지 물어와서 대화를 나누었었는데 그때 Aitbnb이었던 기억이 나서 연락을 취했더니 흔쾌하게 오라고 해서 일정을 잡았다. 당시 대화할 때는 몰랐는데 사무실 놀러 가려고 찾아보니까 Jordan Harband는 JavaScript 표준은 정하는 TC39의 멤버인 사람이어서 깜짝 놀랐다.

airbnb 안내 데스크
이 안내데스크에서 찾아온 직원 이름을 말하고 기다니까 Jordan이 금방 내려왔다.
airbnb 건물입구

작년에 새로운 사무실로 이사를 했다고 했는데 큰 블록에 있는 건물하나를 전부 다 쓰고 있었다. 들어가서 안내데스크에서 Jordan 보러 왔다고 하고 기다리는데 내부 인테리어가 매우 좋아서 깜짝 놀랄 정도였다. 점심시간이라서 사내 식당에서 점심을 먹으면서 얘기를 나누었는데 친절하게 잘 설명을 해주었다.(경험상 커뮤니티나 대외활동이 많은 개발자가 사람들이 나이스한 듯...)

airbnb에서 먹은 점심
미국은 대부분 여러 음식이 있고 한 그릇에 퍼먹는 방식인데 음식은 내 취향은 좀 아닌...


Jordan은 Airbnb에서 내부 프레임워크와 JavaScript 표준을 만들고 있다. 이전에는 Backbone을 쓰는 것 같았는데 지금은 모두 React로 갈아탄 것으로 보인다. Ruby on Rails를 쓰는데(Java도 쓴다고...) 백엔드 서버 앞에 Node.js 레이어를 하나 더 두어서 Isomorphic JavaScript로 운영하고 있다고 했다. 적용한 지는 한 몇달되었는데 아직은 꽤 만족스럽다고 해서 Airbnb 개발 블로그에 해당 부분에 대해서 공유할 계획이 있느냐고 물었는데 할 것 같기는 한데 언제 할지는 모르겠다고 했다. Airbnb에 가기 전주에 GitHub Universe 콘퍼런스가 있었는데 이때 Airbnb의 배포 시스템에 대한 발표가 있었다. 같이 간 anarcher님이 이 발표가 아주 좋았다고 해서(난 다른 세션을 들었는데 망했;) 이날 좀 더 자세히 물어봤는데 Jordan도 Airbnb의 배포 시스템을 극찬했다. Twitter에 다닐 때도 배포시스템이 있긴 했는데 Airbnb의 배포 시스템이 아주 좋아서 확인하고 버튼만 클릭하면 알아서 다 배포가 된다고 했다. 최근에도 수정사항을 배포해도 되는지 전화가 와서 사무실 밖에 있었지만, 차에서 폰으로 내용만 확인하고 버튼 눌러서 배포를 끝냈다고 했다.

airbnb의 건물 내부
Airbnb 건물 내부에서 1층 로비를 본 모습
airbnb의 건물 내부
건물 가운데가 이렇게 빈 공간으로 되어 있고 인테리어가 잘 꾸며져 있어서 산뜻한 느낌이 든다.
airbnb의 건물 내부

개발자 문화에 대해서 물었는데 Jordan는 바로 2가지를 얘기했다. 첫째로, 질문하는 것을 부끄럽지 않게 생각하지 않는다.라고 했다. Slack을 통해서 물어보면 아무나 아는 사람이 대답을 하고(이 많은 사람이 Slack을 쓴다고? Slack은 돈을 얼마나 버는...) 궁금한 게 있으면 언제든지 질문할 수 있도록 하고 있어서 모르는데 질문하지 않는 것을 더 부끄럽게 여기는 분위기라고 했다. 둘째로 얘기한 것이 Airbnb에서는 비난(blame)하지 않는다고 했다. 기본적으로 모든 직원이 똑똑하고 열정적이며 좋은 의도를 가지고 있다고 전제하기에 버그가 있거나 장애가 생기더라도 이는 시시템의 실패지 사람의 실패라고 생각하지 않는다고 했다. 사람에게 화를 내지 않고 대신 이번 일을 통해서 무엇을 배우고 다음에는 해결하려면 어떻게 해야 하는가에 관해서 얘기를 하고 공유한다고 했다. 물론 이러한 Airbnb의 문화가 전체 문화라기보다는 Jordan이 인상 깊게 느낀 혹은 본인이 생각하는 특징이겠지만 문화에 대해서 물었을 때 저 2가지를 바로 말했다는 부분이 상당히 인상적이었다. 특히 내가 좋아하는 문화라서 더욱 그런 듯...

Airbnb의 사무실 내부
Airbnb의 로고 모형


점심을 먹고 나서는 층별로 돌아가면서 회사 투어를 시켜주었다.

Airbnb의 사무실 내부
Airbnb의 인기 있는 숙소를 모형으로 만들어 놨다.
Airbnb의 사무실 내부
태그에는 해당 숙소가 있는 위치와 가격이 적혀져 있다.
Airbnb의 사무실 내부
일부의 공간을 활용해서 Airbnb의 새로운 로고에 담긴 의미를 설명하고 있다.
Airbnb의 사무실 내부
그 옆에는 로고를 새로 브랜딩하는 과정이 함께 붙어 있다.
Airbnb의 사무실 내부

가장 인상 깊었던 것은 회의실이었다. 회의실의 이름이 도시 이름으로 되어 있었는데 아래 사진들처럼 각 사무실을 해당 도시에서 좋은 숙소의 인테리어를 그대로 만들어 놓았다. 그래서 회의실마다 분위기가 엄청나게 다르고 이게 회의실인가 하는 생각이 들 정도이다. 이런 곳에서 회의하면 어떤 기분이 들까?

Airbnb의 회의실
Airbnb의 회의실
Airbnb의 회의실
Airbnb의 회의실
Airbnb의 회의실
이것도 회의실이다. 입구에는 실제 숙소의 사진과 설명이 적혀있다.
Airbnb의 회의실
이 캠핑카도 회의실이다.
Airbnb의 회의실
캠핑카 안에는 침대도 있다. 회의할 때 여기 누워있어도 괜찮으려나...
Airbnb의 회의실
Airbnb의 사무실 내부
한쪽 벽에는 Airbnb의 창업부터 중요한 사건을 시간별로 정리해 놓았다.
Airbnb의 사무실 내부

Jordan이 회사에 대해서 설명한 것에 대한 인상도 좋았지만, 사무실 내부를 돌아보면서 분위기가 아주 좋아 보였다. 인테리어가 인상적이어서 그렇기도 하지만 곳곳에서 사람들이 일하는 모습을 보아도 분위기가 엄청나게 자유스러운 분위기였고 이런 분위기가 회사가 의도한 것으로 보였다. 페이스북이 좀 차분한 느낌이었다면 Airbnb는 너무 활기찬 분위기라 이게 일하는 건지 놀고 있는 건지 구분이 안 갈 정도였다. 앞에서 얘기한대로 Airbnb는 서비스만 좀 좋아하고 회사 자체에는 큰 관심이 없었는데 사무실을 돌아보고 나서는 완전히 생각이 달라져 버렸다. HashiCorp와 함께 이번 여행에서 가장 인상 깊었던 회사여서 가보길 정말 잘했다는 생각이 들었다.

재작년에 처음 오피스 투어를 갔다 와서 또 갈만한 회사가 있을까 약간 걱정하긴 했는데 또 막상 돌아다니니까 가볼 곳이 많이 있었다. 올해도 또 갈지는 잘 모르겠지만. ㅎㅎ 재작년에 빡빡한 일정에 비해서는 이번에는 좀 여유롭게 돌아다녔는데 이상하게 피곤하긴 더 피곤했던 것 같았다.

2016/01/30 23:56 2016/01/30 23:56