3.6.2 버퍼와 스트림 이해하기
파일을 읽거나 쓰는 방식에는 크게 두 가지 방식, 즉 버퍼를 이용하거나 스트림을 이용하는 방식이 있습니다. 버퍼링과 스트리밍이라는 용어를 들어본 적이 있나요? 아마 인터넷으로 영상을 시청할 때 두 용어를 본 적이 있을 겁니다. 영상을 로딩하고 있을 때는 버퍼링한다고 하고, 영상을 실시간으로 송출할 때는 스트리밍한다고 합니다.
버퍼링은 영상을 재생할 수 있을 때까지 데이터를 모으는 동작이고, 스트리밍은 방송인의 컴퓨터에서 시청자의 컴퓨터로 영상 데이터를 조금씩 전송하는 동작입니다. 스트리밍하는 과정에서 버퍼링을 할 수도 있습니다. 전송이 너무 느리면 화면을 내보내기까지 최소한의 데이터를 모아야 하고, 영상 데이터가 재생 속도보다 빨리 전송되어도 미리 전송받은 데이터를 저장할 공간이 필요하기 때문입니다.
노드의 버퍼와 스트림도 비슷한 개념입니다. 앞에서 readFile 메서드를 사용할 때 읽었던 파일이 버퍼 형식으로 출력되었습니다. 노드는 파일을 읽을 때 메모리에 파일 크기만큼 공간을 마련해두며 파일 데이터를 메모리에 저장한 뒤 사용자가 조작할 수 있도록 합니다. 이때 메모리에 저장된 데이터가 바로 버퍼입니다.
▲ 그림 3-12 버퍼