개발자

Nextjs를 정적 웹 호스팅(dothome)으로 배포하게 될 때 문제점

2024년 02월 13일조회 1,137

안녕하세요. 이번에 맡게된 프로젝트에서 SEO가 중요하다고 판단되어 Nextjs를 사용하여 개발하였습니다. 그런데 저희 팀이 사용하고 있는 웹 호스팅 서버가 dothome입니다. dothome은 정적 웹 사이트 호스팅 서버라고 알고 있는데, 이 서버로 호스팅하게 되면 몇 가지 문제점이 있다고 판단되어 질문을 남기게 되었습니다. 1. dothome에 배포하기 위해 정적 빌드를 하게 되면, 서버 사이드 렌더링(SSR) 기능을 사용할 수 없게 되는데, 이는 NextJS를 사용해서 얻을 수 있는 SEO 측면의 이점을 얻을 수 없게되는 건가요? 그렇게 된다면 SEO를 개선하는 방법이 있을까요? 2. Nextjs에서 제공하는<Image> 태그가 서버 측에서 이미지 최적화기능을 제공하는 것으로 알고 있는데, 정적빌드를 사용하게 되면 일반적인 img 태그와 다를 바가 없어지는 걸까요? 3. 마지막으로 Nextjs를 사용하기 위해서 웹 호스팅을 변경하는 것이 좋을지, 변경해야한다면 어떤 것을 추천하지는 시 여쭤봅니다.

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 3

인기 답변

백승훈님의 프로필 사진

일반적으로 SSO와 SSR을 면접 공부등을 통해 CSR은 SSO가 아주 안좋으며 SSR이 이러한 SEO의 해결책이라 생각 하는 경우가 많지만 최근 리액트를 포함해 해당 정보는 조금 과장된 면이 있습니다. 이러한 SSR이 SEO에 유리하다는 것은 초창기 리액트 등이 아직 미흡할 때의 이야기로 현재는 이러한 기술에 대한 해결이 충분히 이뤄진 상태입니다. SEO의 최적화는 단순하게 SSR을 사용하는게 아닌 Meta 데이터를 검색엔진에 얼마나 잘 전달하는지, 작성한 웹사이트가 얼마나 Healthy한지 등의 유무가 더 중요합니다. https://developers.google.com/search/docs/fundamentals/seo-starter-guide?hl=ko 자세한 SEO의 반영 방식은 위의 문서를 참고하시면 됩니다. 계속해서 말씀드리면 dothome이 어떤 사이트인지는 모르나 단순히 도메인을 구입, 연결하는 곳이며 해당 설정이 가능하다면 SSR을 사용하지 못할 이유는 없습니다. 배포를 어떤 방식으로 하여 DNS를 통해 도메인을 어떻게 연결할 지에 대한 차이는 있으나 해당 웹 호스팅 서버랑은 관계가 없을 듯 합니다. 하지만 Next.js의 경우 자체 커스텀이 매우 많이 들어가서 Vercel 이외에 배포하기 힘든 환경에 있는 건 사실입니다. 만약 Vercel이 아닌 다른 배포체계 (예를들어 AWS를 기반으로 한 배포방식) 등을 고려중이시면 다음 글을 참고하시면 좋을 것 같습니다. https://careerly.co.kr/comments/96513?utm_campaign=user-share 결론적으로 1. next를 사용하지 않더라도 SEO는 충분히 유의미적 개선이 가능합니다. 또한 방식에 따라 SSR을 사용할 수 있습니다. 웹 도메인 사이트와 크게 관계는 없을 듯 합니다. 2. Images의 경우 SSR등과 관계없이 크기 용량 등의 최적화와 레이지 로딩등의 기능도 들어가 있는걸로 알고있습니다. 크게 관계 없을 듯 합니다. 3. 회사의 규모가 크지않다면 Vercel을 추천드립니다. 과금정책이 있지만 가장 Next 친화적이며 배포 유지 보수 CI/CD와 더불어 모니터링까지 간편합니다. 하지만 작성자분의 SEO개선을 위한 Next도입은 조금 하이스펙을 도입하는 것 같습니다. 먼저 리액트기반이라면 해당 프로젝트의 SEO를 개선해보는 것을 먼저 고려해보시는 것도 좋을 것 같습니다 😏

리오님의 프로필 사진

리오

작성자

SW 개발자2024년 02월 15일

많은 걸 배워갑니다. 이번 계기로 SEO 개선과 정적 웹사이트 빌드에 대해서 다시 한번 공부해봐야겠네요. 답변 감사합니다👍

김유현님의 프로필 사진

김유현

프론트엔드 개발자2024년 02월 16일

좋은 답변 잘 봤습니다! 가운데쯤 Nest.js => Next.js 로 정정해주시면 읽는 분들이 오해 없을 것 같네요 문맥상 이해는 가지만요 ㅎㅎ 좋은 하루 보내세요!

백승훈님의 프로필 사진

백승훈

프론트 엔드 개발자 (FE)2024년 02월 18일

앗.. 제가 요즘 Nest에 빠져서 착각을.. 감사합니다 😁

인기 답변

김하림님의 프로필 사진

2번에 대해서 답변 드리면, 정적 내보내기를 사용할 때도 이미지 최적화 기능 사용 가능합니다. Next.js 공식 문서를 보면, 기본 동작은 Next.js 웹 서버가 이미지 최적화 작업을 해주지만, CDN 또는 전용 이미지 서버를 사용하는 커스텀 로더 설정을 통해 이미지 최적화가 가능합니다. `next start`로 Next.js 서버를 띄우지 않더라도 이미지 최적화가 가능하다는 이야기입니다. 관련 내용은 Next.js 공식 문서(https://nextjs.org/docs/pages/building-your-application/optimizing/images#loaders)에서 확인하실 수 있습니다. > The default loader for Next.js applications uses the built-in Image Optimization API, which optimizes images from anywhere on the web, and then serves them directly from the Next.js web server. If you would like to serve your images directly from a CDN or image server, you can write your own loader function with a few lines of JavaScript. 1, 3번은 이미 좋은 답변이 많아서 다른 답변을 참고하시면 좋을 것 같습니다!

김태우님의 프로필 사진

dothome에 대해 잘 몰라 질문에 답변을 드릴 순 없지만 Next.js를 이용한 프로젝트라면 Vercel을 사용하시는 것을 추천드립니다!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2024년 02월 13일

안녕하세요, Nextjs와 관련된 질문을 주셔서 감사합니다. 1. SSR의 주요 장점 중 하나는 처음 페이지를 불러올 때 서버에서 전에 HTML을 생성함으로써 SEO를 개선하는 것입니다. 따라서 dothome과 같은 정적 웹 호스팅에서 서버 렌더링 없이 정적 빌드를 실행하게 되면 이런 이점을 얻기가 어렵습니다. 그러나, 다행히도 구글 같은 대부분의 검색 엔진은 자바스크립트 웹 사이트를 크롤링할 수 있으므로 최소한의 SEO 효과는 낼 수 있을 것입니다. 추가적으로 prerendering 기능을 사용하여 SSR과 유사한 효과를 내는 것이 가능합니다. 2. Next.js의 `<Image>` 컴포넌트는 최적화된 이미지 로딩을 위해 서버 측에 의존하기 때문에, 한 번 빌드하고 모든 요청에 대해 동일한 HTML응답을 제공하는 정적 웹 사이트에서는 제대로 작동하지 않을 수 있습니다. 따라서 예상하신 대로 정적웹 사이트에서는 `<img>` 태그와 크게 다르지 않게 됩니다. 3. 만약 SSR, pre-rendering 등 Next.js 의 모든 기능을 활용하고 싶다면, Node.js를 지원하는 서버로 이전을 고려해 볼 수 있습니다. Vercel이나 Netlify와 같은 클라우드 플랫폼을 추천드립니다. 이들 플랫폼은 static site generation(SSG), SSR 등 Next.js의 다양한 렌더링 전략을 지원하며, 간편한 CI/CD 환경을 제공합니다. 모든 하드웨어와 소프트웨어 구성이 서로 다르기 때문에, 안타깝게도 일반적인 답변만 줄 수 있습니다. 이 경우에는 웹 호스팅 업체나 프로젝트의 요구사항에 따라서 최선의 선택이 달라질 수 있습니다. 더 질문하실 내용이 있다면 언제든지 알려주시기 바랍니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!