강의

멘토링

커뮤니티

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

코딩님의 프로필 이미지
코딩

작성한 질문수

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

정적 파일 직접 구현하기 - ExpressJS Static 기능 직접 구현하기

readFileSync

해결된 질문

작성

·

17

0




readFileSync 메서드는 동기적인 메서드라 이벤트 루프에서 막혀서 파일을 읽어오는동안 스레드를 멈춰서 실무에선 잘 사용 안 하지 않나요?
단순히 서버의 흐름 이해를 돕기위한 코드 정도로 이해해도 될까요?
혹시 이 강의는 express와 서버의 개념만 이해하고 넘어가는 정도의 강의일까요?
실무적인 관점의 강의는 파트 2라고 보면 될까요

아님 파트1 파트2 모두 실무적인 관점의 코드는 작성하지 않고 넘어가나요?

답변 1

0

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

안녕하세요 코딩님!

학습에 대한 열정이 느껴지는 질문을 주셔서 정말 감사합니다. 질문하신 내용은 Node.js의 핵심 철학인 비동기 처리를 아주 정확하게 관통하고 있으며, 강의의 구성 의도에 대한 분석 또한 매우 타당합니다.

질문하신 내용을 면밀히 살펴보면 readFileSync 메서드에 대한 우려는 기술적으로 매우 정확한 지적입니다. 이 메서드는 이름 그대로 파일을 읽어오는 작업을 수행하는 동안 다음 코드로 넘어가지 않고 전체 실행 흐름을 멈춰 세우는 동기 방식으로 동작합니다. Node.js는 기본적으로 한 번에 하나의 작업만 처리할 수 있는 싱글 스레드 기반의 이벤트 루프 모델을 사용하기 때문에, 이 루프가 멈춘다는 것은 다른 사용자의 접속이나 데이터 요청을 전혀 처리할 수 없는 상태가 됨을 의미합니다. 이는 마치 좁은 단선 도로에서 앞차가 통과하기 전까지 뒤에 있는 수많은 차가 하염없이 기다려야 하는 상황과 같아서, 실제 서비스 환경의 비즈니스 로직에서는 매우 치명적인 코드가 될 수 있습니다.

이러한 맥락에서 파트 1 과정은 말씀하신 대로 실무 전체를 대변하기보다는 Express 프레임워크와 서버의 기본적인 구조를 잡는 단계로 이해하시면 좋습니다. 이 단계에서 readFileSync를 활용하는 이유는 비동기 처리라는 다소 복잡한 개념을 배우기 전에 서버가 어떻게 요청을 받고 응답을 보내는지 그 직관적인 흐름을 먼저 익히기 위해서입니다. 이것은 마치 운전을 처음 배울 때 엔진의 내부 복잡한 작동 원리보다는 핸들을 조작하고 브레이크를 밟는 법부터 익히는 것과 비슷합니다. 따라서 학습자가 서버의 전체적인 골격을 파악하는 데 방해가 되지 않도록 의도적으로 단순화된 코드를 사용하는 과정이라 볼 수 있습니다.

본격적인 실무 관점의 최적화와 깊이 있는 내용은 파트 2에서 중점적으로 다뤄지게 됩니다. 파트 2에서는 단순히 기능을 구현하는 것을 넘어 Express의 내부 엔진이 실제로 어떻게 미들웨어를 실행하고 요청을 처리하는지 그 내부를 깊숙이 들여다봅니다. 특히 대규모 트래픽을 견디기 위한 성능 최적화 기법을 배우면서, 왜 실무에서는 비동기 방식인 readFile이나 async/await를 활용해 이벤트 루프를 방해하지 않아야 하는지를 실무적인 코드로 확인하게 됩니다. 결과적으로 파트 2까지 모두 경험하셔야 비로소 실제 서비스에 적용 가능한 수준의 깊이 있는 개발 역량을 갖추실 수 있습니다.

그렇다면 실무에서는 이 동기 메서드를 아예 배제하는 것일까요? 사실 실무에서도 이 방식이 정답이 되는 순간이 있는데, 바로 서버가 가동되기 직전의 초기 설정 단계입니다. 예를 들어 서버 운영에 반드시 필요한 보안 인증서나 환경 설정 파일을 불러오는 작업은 서버가 손님의 요청을 받기 시작하기 전에 딱 한 번만 수행됩니다. 이는 식당이 문을 열기 전 주방을 세팅하는 시간에는 잠시 작업이 멈춰도 손님에게 지장을 주지 않는 것과 같습니다. 오히려 이런 초기화 단계에서는 실행 순서를 확실히 보장하면서도 코드가 간결한 동기 방식이 더 안전하고 효율적일 수 있습니다.

결론적으로 파트 1은 서버의 기초 체력을 기르는 과정이며, 파트 2는 그 체력을 바탕으로 실제 서비스에서 최적의 성능을 끌어내는 법을 배우는 과정입니다. 지금처럼 코드 한 줄이 실무에서 어떤 영향을 미칠지 고민하며 학습하신다면 파트 2에서 다룰 심화 개념들도 아주 빠르게 본인의 것으로 만드실 수 있을 것입니다.

참고해주세요!

코딩님의 프로필 이미지
코딩

작성한 질문수

질문하기