강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

TAESUN님의 프로필 이미지
TAESUN

작성한 질문수

제대로 배우는 Express.js: Part1 기초부터 심화까지 [기초편]

EJS 기본 문법 정복하기 - if, for, include

EJS 관련 질문드려요

해결된 질문

작성

·

33

0

혹시 Nginx나 Apache를 사용하는 경우 ejs로 SSR을 구현하는 것이 강좌에서 한 방법과는 달라질까요?

답변 2

0

nhcodingstudio님의 프로필 이미지
nhcodingstudio
지식공유자

안녕하세요, TAESUN 님! 답변이 조금 늦었습니다. 기다려 주셔서 감사합니다.

질문하신 내용은 실무에서 백엔드 아키텍처를 설계할 때 반드시 마주하게 되는 핵심적인 부분입니다. 결론부터 말씀드리면, Express에서 EJS로 HTML을 만드는 코드(로직)는 전혀 달라지지 않습니다. 다만, 그 서버를 감싸는 '외벽'의 구성이 달라진다고 이해하시면 됩니다.

이해를 돕기 위해 '유명한 맛집(식당)'에 비유해 볼게요.

ex) 주방장(Express)과 지배인(Nginx)

강의에서 우리가 배운 방식은 주방장이 입구에서 주문도 받고, 요리도 하고, 서빙까지 직접 하는 1인 식당과 같습니다. 반면, Nginx나 Apache를 앞단에 두는 것은 전문 지배인을 고용하는 것과 같습니다.

  • Express (주방장): 손님의 요청에 맞춰 신선한 재료를 볶고 지져서 HTML이라는 '요리'를 만들어냅니다. (이게 바로 SSR이죠.)

  • Nginx (지배인): 식당 입구에서 손님을 맞이합니다. 주방장이 요리에만 집중할 수 있게 잡무(보안, 서빙, 주차 관리 등)를 대신 처리해 줍니다.

Nginx/Apache를 사용할 때 실무에서 반드시 적용하는 세 가지 표준 방식입니다.

  1. 정적 자원(Static Files)의 외주화

    • 강의에서는 express.static을 썼지만, 실무에서는 이미지, CSS, JS 파일을 Nginx가 직접 클라이언트에게 던져줍니다.

    • 이유: "콜라(이미지)"는 냉장고에서 꺼내기만 하면 되는데, 굳이 "주방장(Express)"을 불러서 시킬 필요가 없기 때문입니다. 주방장은 오직 요리(EJS 렌더링)에만 에너지를 써야 성능이 올라갑니다.

  2. 보안 강화 (SSL Termination)

    • HTTPS 보안 설정을 Express 코드 안에서 구현하지 않습니다. Nginx라는 입구에서 '보안 검사'를 다 끝내고, 내부 주방(Express)에는 편안하게 요청을 전달합니다. 코드 관리가 훨씬 깔끔해지죠.

  3. 무중단 서비스와 로드 밸런싱

    • 주방장이 너무 힘들지 않게 주방을 여러 개(Express 서버 여러 대) 만들고, Nginx가 손님을 비어 있는 주방으로 적절히 배정해 줍니다. 혹시 한쪽 주방에 문제가 생겨도 손님은 식사를 계속할 수 있게 만드는 실무의 핵심 기술입니다.

요약하자면 TAESUN 님이 강의에서 배운 EJS 렌더링 방식은 실무에서도 그대로 쓰입니다. 다만 실무에서는 그 앞에 Nginx라는 '전문 매니저'를 세워 성능과 보안을 업그레이드할 뿐입니다.

개발 단계에서는 지금처럼 Express 하나로 구현하시고, 나중에 배포 단계에서 Nginx 설정법을 한 스푼만 더하면 완벽한 실무형 서비스가 됩니다.

궁금한 점이 더 생기면 언제든 질문 주세요. TAESUN 님의 성장을 응원합니다!

TAESUN님의 프로필 이미지
TAESUN
질문자

답변 감사합니다! 넵 배포 단계에서 설정을 해주는게 궁금한데 memo 프로젝트 만들고 혼자 배포해볼때 nginx 설정해봐도 좋을 것 같습니다!

0

안녕하세요, 인프런 AI 인턴입니다. TAESUN님.

EJS를 사용한 Server Side Rendering(SSR)을 구현하는 방법에 대해 질문해 주셨군요. EJS는 Node.js 환경에서 가장 자연스럽게 사용할 수 있는 템플릿 엔진으로, 가벼운 서버 환경에서 흔히 사용됩니다. 강좌에서 Express.js와 EJS를 조합하여 SSR을 구현하는 경우를 주로 다루었다고 생각됩니다.

EJS와 Nginx/Apache의 조합

Nginx나 Apache와 같은 서버는 주로 정적 파일을 효율적으로 제공하기 위해 사용됩니다. EJS로 SSR을 구현할 때 Nginx나 Apache를 앞단에 두고, Node.js 서버가 EJS를 사용하여 템플릿을 렌더링하는 형태로 배치할 수 있습니다. 구체적으로 설명하자면:

  1. Nginx/Apache의 역할:

    • 일반적으로 Nginx는 클라이언트의 요청을 받아 Reverse Proxy로 설정되어 Node.js 서버로 전달합니다.
    • 그 외에도 정적 파일을 캐싱하여 빠르게 제공하는 역할을 합니다.
  2. Node.js와 EJS의 역할:

    • Node.js는 비즈니스 로직을 처리하고, EJS를 사용하여 동적으로 콘텐츠를 생성하여 클라이언트에게 전달합니다.
    • 이 경우, Nginx는 Node.js 서버로의 트래픽을 관리함으로써 사용자 요청을 분산 처리하는 데 도움을 줍니다.
  3. SSR 구현 시 주의사항:

    • Nginx 또는 Apache는 주로 정적 파일의 서빙과 로드 밸런싱을 강화하기 위해 사용되므로, SSR 자체보다는 전송과정에서의 부하를 줄이거나 효율성을 높이는 역할을 합니다.

관련 강의내용에서 다룬 방식에 비해, Nginx/Apache를 사용하면 서버 설정이 약간 더 복잡해질 수 있습니다. 그러나 이런 방식은 규모가 큰 서비스에서 특히 성능을 최적화하는 데 유리합니다.

관련된 내용을 더 깊이 이해하고 싶으시다면, Nginx를 사용한 Reverse Proxy 설정과 SSR에 대한 기존 질문과 답변을 참고하시면 도움이 될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

TAESUN님의 프로필 이미지
TAESUN

작성한 질문수

질문하기