그날 오후 나는 자리에서 몰래 딴짓을 하고 있었는데, 갑자기 단체 채팅방이 폭발했다——GitHub에 접속할 수 없게 된 것이다. 처음에는 회사 네트워크 문제인 줄 알았는데, 트위터를 보니 전 세계 개발자들이 통곡하고 있었다. 누군가는 이것이 인류 역사상 생산성이 가장 크게 떨어진 날일 수도 있다고 농담했다. 나도 처음에는 같이 웃고 있었는데, 내 프로젝트가 바로 그날 배포 예정이라는 걸 깨닫기 전까지는.
상황은 이랬다. 내가 맡고 있던 작은 프로젝트가 있었는데, 프런트엔드 리소스를 번들링하면 JS 코드가 약 3MB 정도였다. 평소 배포는 CI를 통해 했는데, GitHub이 다운되니 CI가 돌아가지 않아서 로컬에서 빌드한 파일을 수동으로 서버에 전송할 수밖에 없었다. 전송할 때 이상하다고 느꼈다. 왜 이번에는 업로드가 이렇게 느리지, 진행 표시줄이 달팽이처럼 기어가는 것 같았다. 거의 10분을 기다려서야 전송이 끝났는데, 페이지를 열어보니 흰 화면이었다.
서버 문제인 줄 알고 한참 로그를 뒤졌는데, 결국 파일 전송 과정에서 문제가 생겨 코드에 이상한 문자가 섞여 들어간 것을 발견했다. 그 순간 나는 멍해졌다. 배포까지 30분밖에 남지 않았고, 다시 빌드하기에는 시간이 부족했고, 롤백할 백업도 없었다. 그때서야 나는 평소에 코드 압축을 하는 습관이 있었다면 파일 크기가 절반으로 줄어들고, 전송 오류 확률도 훨씬 낮아져서 어쩌면 제때 배포할 수 있었을지도 모른다는 걸 진정으로 깨달았다.
그럼 나중에 어떻게 해결했을까? 예전에 아무 생각 없이 저장해둔 온라인 도구 하나를 찾아냈다. 이름은 JS 포맷 압축이었다. 평소에는 전혀 쓰지 않았고, 코드가 돌아가기만 하면 된다고 생각해서 압축 여부는 상관없다고 여겼다. 하지만 그날은 죽은 말을 살린다는 심정으로 로컬에 있던 3MB 소스를 넣고 압축 버튼을 눌렀더니, 몇 초 만에 1.2MB 파일이 나왔다. 급히 업로드해서 망가진 파일을 교체하고 페이지를 새로고침하니 잘 됐다.
그 순간 나는 화면을 바라보며 마음이 복잡했다. 코드 압축이라는 게 평소에는 별것 아닌 것처럼 보이고, 심지어 좀 불필요해 보이기도 한다——요즘은 인터넷 속도도 빠르고 대역폭도 저렴한데, 누가 그 정도 용량을 신경 쓰겠는가? 하지만 GitHub이 다운되거나, CI가 멈추거나, 네트워크가 흔들리는 같은 돌발 상황을 만나면, 작은 용량이야말로 확실한 진리라는 걸 알게 된다. 그것은 트래픽을 아낄 뿐만 아니라 전송 시간을 줄이고 오류 확률을 낮추며, 결정적인 순간에 너를 구해줄 수도 있다.
그리고 솔직히 말하면, 코드 압축의 장점은 이것만이 아니다. 압축된 코드는 다른 사람이 로직을 훔쳐보려 해도 힘들다. 암호화라고 할 수는 없지만, 적어도 바로 오른쪽 클릭해서 소스를 보는 사람들은 어느 정도 막을 수 있다. 또한 압축된 파일은 로딩이 더 빨라서 사용자 경험도 좋아진다. 특히 모바일에서는 몇백 KB 차이로 흰 화면이 1초 줄어들 수도 있다. 예전에는 이런 것들이 사소하다고 생각했지만, 그 일을 겪은 뒤로는 완전히 바뀌었다.
지금 내 습관은 빌드가 끝날 때마다 JS 포맷 압축으로 한 번 돌린 뒤 배포하는 것이다. 별로 드는 품이 없지만 마음이 놓인다. 내일과 사고 중 무엇이 먼저 올지 너는 결코 모른다. GitHub은 다운될 수 있고, CI는 멈출 수 있고, 네트워크는 흔들릴 수 있지만, 잘 압축된 작은 파일은 언제나 가장 든든한 백업 방안이다.
그러니 사고가 터진 뒤에 후회하지 마라. 평소에 좀 더 압축해두면 결정적인 순간에 목숨을 구할 수 있다. 이것은 고차원적인 기술이 아니라 단순한 습관일 뿐이지만, 종종 이런 작은 습관이 네가 허둥대는지 침착하게 대응하는지를 결정한다.