실리콘 밸리 기업 견학 (4)

1초에 2~300개씩 커밋(commit)이 올라오는 단일 저장소(repository)가 있다면 믿으시겠습니까?

일단 그런 저장소가 있다고 칩시다. 그 저장소를 관리하는 버전 관리 시스템 (Version Control System; 예를 들어 Git을 생각하시면 됩니다) 은 얼마나 그 성능을 충분히 감당해낼 수 있을까요?

대체 얼마나 큰 프로젝트이기에, 그리고 얼마나 많은 인원이 달라붙기에 이런 일이 가능한 걸까요?

이 일을 가능하게 하는 그룹이 있습니다. 네, 그곳은 바로 “Facebook”, 그 프로젝트는 바로 “Facebook 서비스” 입니다.

재미있는 사실: 저 간판은 한때 IT를 주름잡던 Sun microsystems사의 간판에 시트만 씌운겁니다. 심지어 Sun 로고가 뒤쪽에서 보입니다. 마크 저커버그가 이전에 Sun사가 있던 회사 부지를 구입할 때, “Sun처럼 혁신이 없으면 우리도 망할지도 모른다"는 사실을 리마인드하게 하려고 내린 결정입니다.

Day 4: Facebook

(주의: 오늘 글은 기술적인 이야기가 가득합니다)

저와 같은 개발자들은 이 글을 보면서 궁금증이 미처 풀리지 않을 거라고 생각됩니다. 그래서 조금만 더 개발 썰을 좀 풀어볼까 합니다.

위와 같은 상황을 조금만 생각해보면, 시스템은 물론이거니와 관리 자체에 엄청나게 복잡한 문제가 산재해 있을 것입니다. 수백만 줄의 코드 병합은 어떻게 할 것이며, 충돌은 어떻게 관리하는 걸까요? 게다가 운영 측면에도 서로 맡은 영역을 겹치게 하지 않기 위해 유능한 매니저(혹은 시스템)가 있어야 할 것입니다. 페이스북은 이런 문제를 해결하기 위해 독특한 방법을 제시합니다.

일단 우리 생각에는 규모가 커지면 “적절히 분산하면 되지”, “프로젝트를 쪼개면 되지”라고 생각할 겁니다. 하지만 페이스북은 다릅니다. 아니, 그런 방법을 고려하지 않는 것이 아닙니다. 25억 명의 MAU(Monthly Activity User)를 서비스하기 위한 방법은 우리의 일반적인 생각을 넘어섭니다.

간단한 예를 들어 이야기해보겠습니다. 웹 개발자라면 쉽게 접근할 수 있을법한 Python, Django 프레임워크로 작성된 인스타그램 서버가 있습니다. 이 서버의 성능을 향상시키기 위해 페이스북은 아예 Django와 nginx를 뜯어고칩니다. 좀 더 많은 사용자를 감당할 수 있는 프로그래밍 언어를 쓰면 되지 않을까 생각하실 수도 있습니다. 하지만, 억 단위의 사용자가 늘 사용하는 서비스의 성능과 안정성을 동시에 확보하려면 이런 방법을 써야만 합니다. 이런 예가 또 있습니다. Mercurial (hg) 버전 관리 시스템을 사용하는 페이스북은 수천 명의 엔지니어가 동시에 이용해도 문제가 없도록 아예 Mercurial을 뜯어고칩니다.

그래서인지 페이스북으로부터 나온 다양한 오픈소스들이 왜 등장하게 되었는지, 아니, 왜 등장할 수밖에 없었는지 그 배경이 어렴풋이나마 납득이 됩니다.

(생각보다) 페이스북이 오픈소스 생태계에 기여한 분야는 참으로 다양합니다

우리가 만난 엔지니어분은 오랫동안 운영해오시던 블로그를 통해 연락된 시스템 엔지니어분이었습니다. 천여 명의 석박사들로 이루어진 연구진들이 C++ 등의 저수준 언어를 이용해 페이스북 앱의 성능을 향상시키고 있습니다. 개인적으로는 오랜만에 해커 감성 가득한 이야기를 나누니 흥분을 가라앉히기가 어려웠는데요, 이러한 고연봉의 시스템 엔지니어를 데려다가, 앱의 로딩 속도를 불과 몇 millisecond 빠르게 하기 위해 비싼 월급을 주는 페이스북의 의도는 무엇일까요?

페이스북의 미션은 “to give people the power to build community and bring the world closer together”, 즉, 사람을 연결하는 일에서는 세계 최강이 되려는 목표를 가지고 있습니다. 그래서 2012년 그저 주목받는 앱 중 하나였던 인스타그램을 10억 달러에 사들였습니다. 서비스의 가치를 너무 고평가하는 것이 아니냐며, 우려 섞인 시선으로 진행됐던 인스타그램 인수는 신의 한 수가 되어 ‘정말 망할수도 있었던’ 페이스북을 현재까지도 건재하도록 도왔습니다. 이후에 무려 160억 달러에 인수한 WhatsApp 역시 놀라운 충격을 던져주었죠. 그렇게 페이스북은 중국을 제외한 전 세계의 소셜 미디어의 점유율을 독차지하게 되었습니다.

페이스북의 주 수입은 광고이지만, 눈에 보이는 광고 수익보다 더 큰 잠재력을 가진 것은 바로 미디어로서의 가치입니다. 광고회사로서의 가치를 평가절하하는 것이 아닙니다. “페이스북 수익이 점차 낮아진다”, “스냅챗, 틱톡에 밀려서 망할 거다” 라는 언론의 저주(?)에도 불구하고 페이스북은 약 700억 달러의 연 매출을 기록하고 있고, 영업이익이 무려 40%를 훌쩍 뛰어넘습니다. 한편, 미디어로서의 영향력이 엄청나다 보니 페이스북은 미국 내 주요 신문사를 비롯한 언론의 주적이 되었습니다. 저뿐만 해도, 소셜 미디어가 다른 어떤 것보다 빠른 뉴스 채널이기 때문이지요. 한편 언론들은 페이스북이 “알고리즘이라는 가면 뒤에서, 노출되는 뉴스를 통해 자신들이 하고 싶은 말을 한다”고 주장하기도 합니다. 한국의 ‘타다 논란’에서도 보듯, 본질적으로 결국 기득권이 새로운 플랫폼에 대해서 가장 적대적인 것은 틀림없습니다. 물론 페이스북 역시 독점이라는 지적을 늘상 받는 기득권이지만요. (그나저나 페이스북이 과연 가짜 뉴스 문제를 해결할 수 있을까요?)

어쨌든, 미션을 이루기 위해 끊임없이 달려가는 페이스북에도 걱정거리가 있습니다. 바로 플랫폼의 부재입니다. 다시 기술적인 이야기로 좀 돌아와서, 페이스북 앱의 운명은 결국, 모바일 기기의 양대 산맥을 이루고 있는 iOS와 Android 어느 쪽이든 종속될 수밖에 없습니다. 그래서 페이스북의 주된 일은 플랫폼과의 싸움이라고 해도 과언이 아니지요. 실제로 만나 뵌 엔지니어분께서도, ‘별짓을 다 한다’라는 표현을 쓸 만큼 플랫폼을 뜯어서 성능을 끌어낸다고 합니다. 특히 폐쇄적인 iOS와는 칼과 방패의 싸움이라 할 정도로, 성능을 끌어낼 만한 기능을 뚫고 나면, 곧 애플이 업데이트로 막고, 또 페이스북은 뚫고… 이런 일들이 비일비재하다고 합니다. (저는 더이상 페이스북 앱이 느리다고 불평하지 않으려고 합니다) 이렇게 해커의 피가 흐르는 페이스북이 결국에 가고 싶어하는 길은 플랫폼을 지배하는 일입니다. 그래서 오큘러스도 인수하고, AR과 VR에 열심히 달려드는 것이죠. 물론 그 중심에는 connectivity라는 키워드가 존재합니다.

페이스북은 스스로의 정체성을 “해커들의 회사"로 정의하는 기업입니다

한편, 이러한 이야기에 가슴이 뛰는 사람들이 페이스북으로 많이 달려드는 모양입니다. 페이스북은 신입 개발자를 많이 채용하는 회사 중 하나입니다. 매년 여름방학 때 수백 명의 인턴들이 와서 일을 배우고 취업합니다. 온보딩을 위한 자체 부트캠프도 존재하죠. 그리고 코드스테이츠에 관심이 있는 분들이 기뻐할 만한 소식 중 하나는, 페이스북은 코드스테이츠와 같은 코딩 부트캠프 졸업자들을 많이 채용한다는 사실입니다. 시스템 엔지니어분도 본인은 스페셜리스트이지만, 회사가 돌아가려면 결국 제너럴리스트가 많이 필요하다고 이야기합니다. 그리고 부트캠프 졸업자들을 긍정적인 시각으로 바라보고 있었고, 실제로 컴퓨터 분야의 대졸자에 버금가는 대우를 받고 있다고 합니다. 특별히 이번 여정에서 페이스북 본사를 두 번이나 방문했었는데요, 한국인들이 정말 많이 있습니다. 당연히 코딩 부트캠프 졸업자도 있습니다. 이 글을 빌어 초대해주신 분들에게 감사를 전합니다 :)

이토록 많은 이야깃거리가 담긴 회사 페이스북은, 사실 개인적으로는 그렇게 좋아하는 회사는 아니었습니다. 하지만 막상 그 내부의 사람들을 만나보고 나니 더욱 매력적인 회사로 바뀌었습니다. 그로스 해킹의 성공 사례로 늘 꼽히기도 할 만큼, 성장을 위해서 해커의 마인드로 실험과 도전, 과감한 선택을 두려워하지 않는 회사라는 인식이 더욱 강해졌습니다.

페이스북은 그 어느 때보다 언론과 정부, 그리고 다양한 경쟁사들의 위협을 받고 있는 회사이지만, 명실공히 실리콘밸리에서 가장 흥미롭고, hacky한 회사임이 틀림없습니다.

--

--

Hoyong Lee
코드스테이츠 Code States — Unlock Human Potential

현재는 강의하는 일이 많지만, 개발자로 불리고 싶어함 / Front-End Developer / interest with: Data Visualization, Data Analysis, something new…