minstudio

버퍼(Buffer)와 스트림(Stream)

유튜브 같은 넷플릭스 영상이나 몇 기가바이트짜리 압축 파일을 다룰 때 서버 메모리가 터지지 않게 보호하는 핵심 최적화 기술입니다.

  • 버퍼(Buffer): 0과 1로 이루어진 날것의 컴퓨터 메모리 조각 덩어리입니다.
  • 스트림(Stream): 10GB짜리 물통을 한 번에 붓지 않고, 파이프를 꽂아 1MB씩 졸졸졸 흘려보내는 연속적인 데이터 흐름입니다.
const fs = require("fs");

// 1. 일반적인 읽기 (기가바이트 영상을 통째로 메모리에 올려서 서버 터짐)
// const data = fs.readFileSync("movie.mp4"); 

// 2. 스트림 방식 (빨대로 물을 마시듯, 아주 작은 덩어리로 쪼개서 전송)
const readStream = fs.createReadStream("movie.mp4");
const writeStream = fs.createWriteStream("copy-movie.mp4");

// 파이프(pipe)를 꽂아주면 물(데이터)이 알아서 흘러갑니다!
readStream.pipe(writeStream);

readStream.on("end", () => {
    console.log("대용량 파일 안전하게 복사 완료!");
});
실행 결과
버퍼(Buffer)와 스트림(Stream) | Minstudio