어제 인생 처음으로 프로덕트 배포라는걸 해봤다. 보통 블로그에 '남겨야지 남겨야지' 미뤄두고, 결국 기억들이 희미하게 사라진 적이 많아 6시간 밖에 안된 지금 바로 회고록을 남긴다.
처음 2시부터 사무실에 도착해서, 최종 QA로 기능 + 디자인이 잘 붙었는지 확인하고 밤 12시, 미국 기준 아침 10시에 배포를 목표로 해서 코딩을 시작했다. 내부적으로 중요한 페이지들이 메인(랜딩), 작품 상세페이지, 결제창, 뷰어, 마이페이지 등이있는데 기능과 웹 뷰, 모바일 뷰 디자인은 이미 어느정도 완성된 상황이었다. 해결해야할 이슈들이 기능적인 부분들보단, 반응형 특히 데스크탑에서 모바일 뷰로 이동하는 동안 작품 사이 간격이 유지가 잘 안된다거나, 글자들이 컴포넌트에서 짤린다는 등이 주된 이슈라서 10개를 해결하더라도 그렇게 품이 들진 않았다.
문제는 내가 담당했던 토큰 + 리프레시 토큰과 유저 상태 참조에서 터졌다. 마이페이지에 갔는데, 디버깅을 위해서 Console.log()를 코드에 붙여놓고 새로고침을 한다거나 하면 메인페이지로 튕기는 것이다. 단편적인 원인을 보면, 마이페이지에서 참조하는 유저 로그인 상태가 계속 새로고침후 렌더링하는 과정에서 로그인 안한상태로 불러와지고 아예 홈으로 리다이렉트를 시키고 있었다.
근본적인 원인은, 이런 유저 상태관리가 Client Side로 이루어지다보니 항상 첫 새로고침시에는 Zustand를 통해서 관리를 하든, 따로 Context로 관리하든 여기서 제공해주는 boolean 변수가 false로 로그가 찍히고 있었다. 이 시점부터 멘탈이 서서히 무너지기 시작했다. 마지막 업무로 여러 코드에 얽히고 섥혀있는, 유저의 토큰/리프레시 토큰 관리와 유저에게 담긴 정보를 Zustand로 갈아타는걸 마무리하고 최종 QA를 할 생각이었다.
문제는 내가 코드를 개떡같이 짜놔서, 중복되는 로직이 너무 많았다. 유저 상태가 필요해서 참조할때는 각 파일마다 어떤놈은 직접 Hook으로 정보 받아오고, 어떤 놈은 userStore(Zustand 전역상태), 어떤 컴포넌트는 AuthProvider에서 받고... 머리로 도저히 계산이 안돼서 태블릿에 하나하나 필기하니까 컴포넌트+훅+컨텍스트가 5개가 엮여있다는걸 깨달은 순간부터 어리바리 해졌는데, ..
결국엔 이걸 다루다가 멘탈이 터져있는걸 확인하신 내 선임이 옆에서 좀 도와주시고, 당장 이슈만 해결하는 스파게티 코드만 짜두고 전역 상태로 묶는건 배포 이후로 포기하고 넘겼다 이때부터 사실 뭘 작업해도 좀 갈피를 못잡고 있다는 기분이 많이 들었고, 개발 실력이 많이 부족하다는걸 느꼇다.
더 초비상인 이슈는, 배포 몇시간이 남은상태에서 최종 QA를 하고 디자인 적인건 제끼고 없으면 사이트 못올리는 핵심적인 기능 버그들만 고치다가 기획을 아예 갈아엎어야하는 상황이 12시에서 한 몇십분 전에 발생했다
프론트만으로 임기응변이 안되고 백엔드도 갈아엎어야하는 그런 이슈도 생기니까, 멘탈이 펑펑 다 터져서 바로바로 API가 생기고, 그걸 구현하고 있는 동안에는 내가 코드를 짜는건지 지피티가 나를 조종하는건지 모르는 기이한 상황이 계속되었다... 어찌저찌해서 완성후 이미 배포된 사이트에 계속 반영하면서 사용자가 결제하는지 DB로 지켜보고.. 구글 애널리틱스에 잘 뜨나 체크하는 등 지켜보다 2시 넘어서 퇴근을 했다.
여러모로 느낀점 중하나는, 진짜 공부 많이 해야겠다는 생각이 들었다. 선임이 '이거 이렇게 이렇게 해주세요' 하는 말을 정확하게 어떤 작업으로 이어지는건지 몰라서 두번 세번 질문할때가 너무 많았고 심지어 그걸 개발할때도 항상 지피티한테 나오는 코드를 사용하며 그걸 제대로 배워두질 않으니까 긴박한 상황에서 유연하게 코드를 짜야할때 바로바로 코드가 안나오더라.
프론트 특성상 상당히 많은 라이브러리를 쓰고, 프레임워크를 이해해야하고, 또 근본이 되는 언어? 가 되는 JS 등등, 여러 고려해야할 거리가 많은데 중심이 되는 내머릿속 이론이 없으면 절대 시간에 쫓기는 상황에서 좋은 코드를 짤수 없다는걸 많이 느꼇다.. 너무 공부할게 많긴하지만, 그래도 나에게 다행인 것은, '그만하고 싶다' 라는 감정보단 '아, 어떻게든 공부더해서 좀더 채워야겠다' 싶은 긍정적인 감정이 드는게 호재다
그리고 소통이 너무너무 중요하다.. 회의때 확실히 기획을 안정해두고 가면, 이런 재앙이 생긴다는걸 뼈저리게 느꼈다.