2023. 8. 29
언제나처럼 새벽 4시가 지나 잠에 들었다. 편도염 증상이 있어 목이 불편했다. 편도염에 감기 증상이 있어서 그런 걸까 오전 11시가 되어야 잠에서 깰 수 있었다. 12시까지 예비군 훈련장에 가야 했다. 아침에 병원을 갔다가 갈 생각이었지만 1시간이 지나도록 몸을 움직이는 게 쉽지 않았다. 예비군 훈련장은 포기하고, 1시쯤 되어 집 앞 이비인후과로 향했다.
친절한 간호사분과 친절한 의사 선생님이 계신 곳이었다. 지도에 나온 평점이 허구가 아님을 알만큼 훌륭한 곳이었다. 진단을 다 받고 약을 받아왔다. 가볍게 점심을 먹고 돌아오니 벌써 오후 3시를 향하고 있었다. 집에 와 약을 먹고 나니 깊은 잠이 왔다. 지금 와서 생각해 보니 수면제가 많이 섞인 약이 '저녁'이라고 표기되어있었던 게 아닐까 싶다. 일을 해야 했지만 쏟아지는 잠을 참지 못하고 잠에 들었다.
그리고 꿈을 꿨다. 나는 백화점 운동 용품 코너에서 물건을 둘러보다 한 배가 심하게 나온 50대 남성과 논쟁을 하게 됐다. 꿈에서도 논쟁이라니 끔찍한 일이지만 꿈속에서 나는 경제적으로 상당한 위치에 있었던 것 같다. 내 옆에는 계속해서 비서가 따라다니고 있었고, 그것이 그에게는 내 사회적 지위를 보여주는 장치로 보인 것 같았다. 그는 논쟁을 하다 도망쳤고, 나는 잠에서 깼다.
잠은 2시간 만에 깰 수 있었다. 거담제도 먹고, 약도 먹으니 몸이 한결 가벼워졌다. 비염 증상도 덜하고, 목이 붓는 것도 덜하니 힘이 났다. 잠에서 깨자마자 친구의 전화가 왔다. 그는 나에게 며칠 전 인생에 대한 고민을 이야기했었다. 그때는 늦은 밤에 술도 취한 상태라 제대로 된 대화를 하지 않고 넘겼기에 오늘은 내가 그에게 몇 가지 사업을 알려주었다.
그는 오랫동안 요식업에 속해있었기에 다른 여러 사업 모델에 대해서는 깊게 알지 못하는 편이다. 그래서 그전에 블록체인 시장의 디파이 모델이 어떻게 세상을 기만하는지 설명해 주었고, 오늘은 중국에서 제품을 한국으로 가져와 유통 마진을 남기는 방법을 설명해 주었다. 그리고 소소하게 돈을 벌 수 있는 아이디어도 공유해 주었다. 그는 꽤 인상적이었던 것인진 잘 모르지만 내가 시킨 숙제를 몇 시간 해본 것 같다. 그리고 밤늦게 다시 연락을 주었다.
그와의 전화는 1시간쯤 했을까. 이어서 다른 친구와 전화를 하게 됐다. 최근 내 목 건강에 대해 이야기도 하고, 자주 연락하는 형제와 같은 친구다. 그와는 여러 주제로 이야기하는데 최근엔 요리 레시피를 많이 이야기하는 편이다. 그는 나와 마찬가지로 20대 초반부터 자취를 했기에 어지간한 음식은 알아서 챙겨 먹고, 서울에서만 7년 가까이 살았기에 생활력도 강하다.
나는 그와 중국 유통 사업건에 대한 모델을 설명해주기도 하고, 그에게 여러 정보를 얻기도 했다. 나는 그를 생각할 때면 내 인생에서 최고의 친구가 그가 아닐까?라는 생각을 한다.
그러고 보니 오늘은 전화를 많이 했는데, 잠에서 깨자마자 참 많이도 전화했다. 우리 회사로 돈을 보내지 않고 약 6개월째 밀리고 있는 회사 대표님과 통화했다. 보통 사람들이라면 6개월이나 돈이 밀렸다면 나쁜 사람이라 생각하지만 나는 그의 상황을 충분히 이해하기도 했고, 그의 회사가 보내지 못한 돈이 5천만 원보다 낮기 때문에 이 정도는 내가 먼저 감당해보고자 했다. 나는 큰 사람이 되고 싶었고, 5천만 원 정도는 기회와 열심을 다하면 2~3 달이면 벌 수 있는 돈이기 때문이다. 전후사정을 모르는 이들에게는 황당한 이야기겠지만, 나는 그의 회사와 곧 시작될 민사 소송에 대해 이야기를 나누고 아이러니하게도 좋은 마음으로 전화를 마쳤다.
때로는 모든 일이 필연을 향해 나아간다는 확신이 든다. 그렇게 되지 않도록 모두가 노력하지만 최종장에 결말이 정해진 것이다. 인간의 노력으로 바꿀 수 없는 결말이 정해져 있다는 느낌이 들기도 한다. 하지만 나는 결말과는 무관하게 더 강한 사람이 되고 싶다. 충분히 강하면 결말이 어떻던 상관없을 수 있기 때문이다.
모든 연락이 끝나고 두 번째 식사를 마치니 오후 9시를 지나고 있었다. 할 일은 많았지만 감사하게도 이번엔 약을 먹어도 졸리지 않았다. 그리고 새벽 3시 30분까지 열심히 일했다.
대부분의 과제는 크게 어렵지 않게 이뤄져 갔지만, 성능 향상과 관련된 부분이 고민이 됐다. 나는 초대형 서비스를 만들고 있었고, 성능 향상과 비용이 사용자 경험과 직결된다는 것을 알고 있다. 이미 월스트리트 블록딜 개발 때 그걸 경험했었고, 그전에 피마치 시절에도 경험했었다. 이번엔 달라야 하기에 나는 인메모리에 자주 사용되는 정보를 캐싱해 두고, 참조 데이터를 파싱 해주는 전략을 세웠다.
다만 인메모리를 활용한 전략은 속도는 빠르지만 휘발성이 존재한다. 이를 살짝만 방어해서 새로고침을 하거나 하루 정도를 주기로 자주 들어올 때 반복되는 데이터는 캐싱할 수 있는 구조를 잡았다. 이 과정에서 레거시 코드의 스타일 충돌을 모두 해결하고, 단위 컴포넌트로 분리하였다. 그러고 나서 파일 input 컴포넌트를 만들어봤는데, ref 값은 컴포넌트 상속이 기본적으로 안된다는 사실을 처음 알게 됐다.
조금 찾아보니 ref는 forwardRef 메서드를 사용해 사용이 가능하다는 것을 알게 됐고, 이를 적용해 문제를 해결했다. 커밋을 기능단위로 분리해 작업을 하지만, 전역 리팩터링과 신규 기능 개발과 캐싱 데이터 등을 모조리 적용하는 등의 대규모 공사가 실시간으로 이뤄지니 커밋에 영향을 받는 파일은 기본적으로 20~40개 정도였다.
현재까지는 치명적 에러는 없지만 사용성이나 구성의 완성도가 미흡하다는 생각이 들었다. 이번만큼은 제대로 된 걸작을 만들고 싶었다. 마치 수백 개의 도자기를 깨버리는 도공의 마음이 이것일까. 특별하지 않아 보일지 모르는 세밀한 스타일링 작업을 한다.
글을 쓰는 시간은 어제와 같은 새벽 4시. 약을 먹으니 눈이 감긴다. 2시간만 자고 일어나게 될까. 아니면 깊은 잠에 빠질까. 그러고 보니 어제 점심에 전달받은 일본 R사의 유통 입찰 자료를 검토해봐야 하는데 잊고 있었다. 오늘은 무척이나 바쁠 것 같다. 그러나 모든 일을 잘 해내고 나면 무척 기쁠 것이다. 나는 해낼 수 있다.