심진석

수정일

next.js에 대한 불만

next.js를 사용하여 생계를 이어가고 있지만 기회만 된다면 다른걸 쓰고 싶은 생각이 크다.

시장이 원한다면 계속 사용할 것

제목은 불만이라고 적었지만 사실 간단하게 사용하기는 큰 문제 없고, 구직이나 프리랜서 시장에서도 next.js의 비중이 꽤나 커서 굳이 다른걸 찾을 필요는 없어보인다.

remix를 본격적으로 사용해보려고 epic web을 구매했지만, 사이드 프로젝트도 하고 있지 않고 시장에서도 next.js만을 찾고 있어서 해당 내용을 기재하고 환불했다.

내용에 next.js를 사용한다는 내용으로 환불 신청하고 다음 날 왜 next.js를 사용하지 않는지에 대한 포스팅이 올라왔다

불만

무서운 업데이트

15버전 부터는 괜찮은데 next.js 11, 12,13 때는 app router가 새로 생기고 여러가지 기능이 생겼다. API가 조금씩 바뀌었고, 업데이트를 하면 다른 곳에서 문제가 생겨서 문제가 없는 버전으로 고정해놓고 써야했다.

amplify hosting을 이용해서 문제가 더 생겼던 것 같지만, 계속 문제가 생겨서 곤란했다.

어려운 배포

여러 사람들이 next.js를 vercel의 락인이라고 말할 정도로 배포가 간단하지 않다. 아무래도 서버렌더링이 복잡한 부분이 있다. 그래서 next.js가 떠오르기도 했다.

문제는 여러가지 기능이 있어서 빌드 후 패키지를 포함하면 50MB를 거뜬히 넘어서 lambda에 배포할 수도 없었고, 배포 도구를 이용해야만 했다.

Note

standalone 옵션을 이용하면 용량이 많이 줄어든다.

그렇다고 vercel을 이용하자니 가격 정책이 1인당 20불이 청구되는데, 코드를 작성하지 않는 관리자에게도 프로젝트를 관리하려면 해당 비용이 청구되는데, 조금 이해할 수 없는 요금 체계이긴하다.

이상한 앱라우터

remix가 나오고 페이지 전체가 아니라 일부분만 서버 렌더링할 수 있는 개념이 떠오르고 next.js도 그에 맞게 app router를 개발하기 시작했다. 리액트 코어팀 멤버 등 각 분야의 전문가들을 섭외하여 개발을 진행하고 있다.

사용해본 결과 폴더구조는 만족스러웠다. 다만, 이해가 어려운 부분도 있었고, parallel route의 알 수 없는 문제가 발생하고, 특히 상태관리도 어떻게 해야할지 혼란스러웠다. 서버컴포넌트를 활용하고 싶지만 계속 'use client'; 를 사용할 수 밖에 없는데,

결국엔 클라이언트에서만 로직을 전부 작성한다면 굳이 왜 app router를 사용해야하는가에 대한 의문이 생기게 되었다. 그렇다고 pages router로 회귀하자니 next.js팀은 app router에 몰빵한 것 같아 찝찝한 마음이 든다.

사실 간단하게 배포할 수 있다

보통 AWS를 많이 사용할텐데, amplify hosting이 최근 업데이트 되면서 너무 좋아졌다.

amplify hosting이 기존에는 serverless-next라는 오픈소스가 사용하다가 해당 오픈소스는 중단되면서 다른 방식으로 바뀌었는데, next.js가 잘 될 뿐 아니라 static이나 nuxt같은 서비스도 지원하게 되었다.

나는 서버리스는 무조건 피하는 편인데, 한번만 익숙해지면 EB나 docker를 사용해서 쉽게 배포할 수 있다.