페이스북의 야심, 타임라인

112025년 08월 26일4

업데이트 지옥의 후유증이 채 가시기도 전, 페이스북 엔지니어링 팀에 거대한 폭풍이 몰아쳤다. 그것은 마크 저커버그의 새로운 비전에서 시작되었다. 그는 페이스북을 단순한 소셜 네트워크를 넘어, 한 개인의 ‘디지털화된 삶의 기록’으로 만들고자 했다.

그 야심의 결정체가 바로 ‘타임라인(Timeline)’ 프로젝트였다.

“상상해 보세요. 당신이 태어난 순간부터 오늘에 이르기까지, 당신의 인생에서 가장 중요했던 모든 순간들이 하나의 페이지에 연대기 순으로 펼쳐지는 겁니다.”

프로젝트 리더가 보여주는 목업(Mock-up) 디자인에 회의실은 술렁였다. 그곳에는 사용자의 모든 게시물, 사진, 친구 관계, 주요 이벤트들이 아름다운 2단 레이아웃 위에 시간 순서대로 정리되어 있었다. 마치 한 사람의 인생을 다룬 박물관의 전시실 같았다.

경영진과 기획자들의 눈은 반짝였지만, 엔지니어들의 얼굴은 하얗게 질려갔다. 그들의 눈에는 아름다운 디자인이 아니라, 구현 불가능에 가까운 기술적 재앙이 보였다.

“이거… 스크롤은 무한으로 내려가는 겁니까?”
맷이 떨리는 목소리로 물었다.

“물론이죠. 사용자가 스크롤을 내리면 과거의 기록들이 계속해서 로드되어야 합니다. 끝없이요.”

회의실에 무거운 침묵이 흘렀다. ‘끝없이’. 그 단어가 개발자들의 머릿속을 헤집었다.

현재의 기술로 이를 구현하는 시나리오를 상상하자 눈앞이 캄캄해졌다.
스크롤을 내릴 때마다 서버에서 데이터를 가져와 새로운 HTML 요소(DOM)들을 페이지에 계속 추가해야 한다. 게시물이 수백 개, 수천 개가 쌓이면, 브라우저는 수천 개의 DOM 요소를 메모리에 올려두고 관리해야 한다. 페이지는 돌이킬 수 없이 느려지고, 결국에는 멈춰버릴 것이다.

게다가 각 게시물 블록은 단순한 텍스트와 이미지가 아니었다. 그 자체로 ‘좋아요’ 버튼, 댓글 입력창, 공유 기능 등을 갖춘 작은 애플리케이션이었다. 만약 백본으로 구현한다면, 수천 개의 게시물은 수천 개의 PostView 인스턴스를 의미했다. 각각의 뷰는 자신만의 모델을 주시하는 수많은 이벤트 리스너를 달고 있을 터였다.

“메모리 누수는 피할 수 없을 겁니다.” 톰이 단호하게 말했다. “수천 개의 뷰와 이벤트 리스너를 사용자가 페이지를 떠날 때 완벽하게 제거하는 건 불가능에 가까워요.”

꼬리에 꼬리를 무는 업데이트 지옥을 겨우 빠져나온 그들에게, 타임라인은 그보다 더 깊은 나락으로 향하는 초대장과도 같았다. 지금의 방식, 즉 데이터를 모델에 담고 뷰가 DOM을 직접 조작하며 이벤트를 관리하는 방식으로는 이 거대한 복잡성을 도저히 감당할 수 없었다.

절망적인 분위기 속에서, 조던 워크는 누구보다 진지한 눈으로 모크업 화면을 응시하고 있었다. 다른 이들이 거대한 재앙을 볼 때, 그는 거대한 기회를 보고 있었다.

그의 눈에는 타임라인이 하나의 거대한 페이지가 아니었다. 그것은 수많은 ‘독립적인 부품’들의 조합으로 보였다.
‘게시물 부품’, ‘사진첩 부품’, ‘인생의 주요 이벤트 부품’.
이 부품들은 서로의 존재를 알 필요가 없다. 그저 위에서 내려주는 데이터(내용, 날짜, 사진 등)에 따라 자신의 모습을 그리기만 하면 된다. 모양이 같은 부품은 얼마든지 재사용할 수 있다.

만약 이 ‘부품’이라는 개념을 코드로 구현할 수만 있다면?
복잡성은 수천 개의 부품을 관리하는 문제가 아니라, 단 몇 종류의 부품 설계도를 잘 만드는 문제로 바뀐다.

톰이 깊은 한숨과 함께 결론을 내렸다.
“이건… 기존의 판을 전부 엎고, 처음부터 완전히 새로운 방식으로 접근해야 할지도 모릅니다.”

모두가 그 말의 무게에 짓눌려 있을 때, 조던 워크는 조용히 고개를 끄덕였다. 그의 머릿속에서는 혼돈을 질서로 바꿀 새로운 설계도가 마침내 윤곽을 드러내고 있었다. 타임라인이라는 거대한 도전이, 그 설계도를 증명할 완벽한 무대가 되어줄 터였다.