2024년 2월 회고

2024. 3. 10.


처음에 생각했던 것보다 더 많은 것을 배우고 있는 시간이다. 자세한 것은 3월이 다 지나고 프로젝트가 다 끝난 후 이야기하고 싶으니 이야기할 것들을 좀 남겨둬야겠다. 지금 이야기할 수 있는 것은, 물론 즐겁고 좋은 기회인 건 맞지만 좌충우돌 시행착오가 너무 많아서 정신적으로 힘들다는 것 정도겠다. 회고 쓸 타이밍이 야무지게 밀려버린 것이 그 증거다. 원래는 3월 첫째 주 내에 쓰는 것이 목표였지만, 갑자기 일정이 잡혀버려서… 그래도 우선 급한 불은 껐으니, 지금이라도 후딱 2월달을 돌아보고자 한다.

프로젝트 이야기

서두에서도 이야기했듯, 시행착오가 정말 많았다. 그리고 그 대부분의 일들은 SSR 환경(정확히는 Next.js)이 아니었다면 밟을 기회조차 없었을 것들이라고 생각한다. 크게 두 가지가 있었는데, 쿠키와 캐싱이 그 주인공들이다. 얘네 덕분에 날밤 깐 날들만 생각하면… 으휴.

프로젝트에서 OAuth 인증을 처리하게 위해 기존에 사용하던 NextAuth.js(Auth.js v4)라는 오픈소스 솔루션이 있다. 설정만 해놓으면 OAuth 인증/인가를 해결해주는데, 문제는 우리 프로젝트가 스프링 기반 백엔드 API 서버를 가지고 있었고 해당 서버를 통해 별도의 세션이 관리되어야 했다는 점이었다. 백엔드에 세션이 존재하기 때문에 세션 ID를 쿠키로 전달받아야 했는데, 도대체가 그 놈의 세션 ID가 로그인에 성공해도 쿠키에 기록되지를 않는다던지 기록이 되어도 최초 로그인 이후 새로고침을 해야만 유효하다던가 하는 상황이 계속 발생하였다. 결국 편의를 위해 도입했던 솔루션 덕분에 많은 시간이 오류 원인 탐색에 소모되어었고, 끝내 우리는 해당 솔루션을 제거하고 직접 OAuth 인증/인자를 구현하였다. 아마 Next.js만 사용하는 상황이라면 의미가 없지 않을 것 같은데, 별도 API 서버가 존재하고 세션이 유지되어야 하는 경우에는 도입하지 말아야겠다는 교훈을 아주 많은 시간을 내고 느끼게 되었다. 사실 내가 들어오기 이전에 적용되어있었던 거라 뭐라 말하기도 힘들지만…ㅋㅋ

이전에는 막연하게 홍대병스러운 마인드로 Next.js를 꺼려했었다면, 조금 사용해본 지금에 와서는 싫어하는 이유 한 가지는 명확하게 이야기할 수 있을 것 같다. 캐싱이 기본적으로 적용되어 있어 opt-out해야한다는 점이 매우 마음에 들지 않는다. ‘섣부른 최적화는 만악의 근원이다’라는 말까지 갈 것도 없다. 이거 하나때문에 초심자에게 다가오는 진입 장벽이 심하게 높다고 생각한다. 쓰다가 부하가 많이 걸리는 부분이 있으면 opt-in해가는 형태가 더 올바른 방향성이라고 생각한다. 프로그래머에게 가장 어려운 일 두 가지가 이름 짓기와 캐싱이라고 했던가. 대신 해주는 건 매우 고마운 일이지만 기본값이라는 선택은 좀 문제가 있다고 본다. 사용하며 얻은 경험이 썩 좋지 않아 앞으로 웃는 낯으로 Next.js를 볼 수 있을지 모르겠다.

코드스냅

저번 주에 이야기했던 기술 아티클 번역 뉴스레터 그룹 이름이다. 2월에 번역했던 글이 검수를 거쳐 오늘 올라오게 되었다. 함수형 프로그래밍을 통해 애초부터 단위 테스트를 작성하기 좋은 코드를 작성하려 해보자는 내용이 담긴 글이다. 3월 주제가 테스트에 대해서고, 관심사가 관심사다보니 선택하게 되었다. 이번 달에는 4월에 올라갈 글을 번역하게 된다. 별 무리없이 완료할 수 있기를…

정리

이번 달의 잘한 점

  1. 공식적인 첫 번역을 완료했다. 내가 혼자서 관리하는 영역(블로그 등)이 아닌 곳에 이렇게 장문의 번역이 올라가는 게 이전에 있었나? 내 기억이 맞다면 공식적으로 내 이름이 박혀서 나가는 건 이번이 처음일 것이다.
  2. 프로젝트 중간 발표는 실패했다(고 들었다… 난 그 날 밤새서 뭔가를 잔뜩 고친 후 본가 가는 기차에서 기절해있었다)만, 외부 배포를 위한 검수는 어떻게든 통과한 것 같다. 미비한 부분 계속 발전시켜서 최종 발표 때는 잘 보여드려야지.

이번 달의 못한 점

  1. 이번 달에만 특별히 못한 점은 딱히 없었던 것 같다.

끝으로

게으름때문에 밀린 게 아니라 실제로 일정이 있어 바빴기 때문에 밀렸다는 말은 변명처럼 들리겠지만, 이전 회고들에서 밀린 이유를 보자면 개인적으로 이번에는 충분히 합당한(?) 이유라고 생각한다ㅋㅋ… 프로젝트는 3월에 끝나니까, 3월 회고는 그리 많이 늦지 않을 것이다. 아니, 그래야 해…