Categories
Tags
8
16
32
![커버: [NESTJS] 많은 데이터를 스트리밍으로 처리해보자 커버 이미지](/assets/images/post/covers/TIL-nest2.png)
최근 프로젝트에서 데이터를 처리하는 과정에서 고민이 생겨 기록하고자 한다. 프론트에서 많은 데이터를 요청하고 처리하는데 사용자가 체감할 수 있을 정도로 느려지는 경험을 했다. 데이터는 로그 데이터로, 한 달을 기준으로 10,000건의 데이터가 쌓이는 것으로 가정하면 1년에 12만 건의 데이터가 쌓이는 셈이다. 1년을 서비스한 이후를 기준삼아 테스트하기 위해 Mock 데이터를 생성하고자 서비스 흐름을 토대로 Mock데이터를 생성한다. 유저 데이터 5천 개, 각 유저의 랜덤한 pk를 사용한 로그 데이터 10만 개를 생성한다. 이때 로그 데이터 10만 개를 가져오는데 너무 많은 딜레이가 생기고, 900ms까지 뛰는 것을 발견하게 됐다. 컴퓨터 사양이 나름 괜찮은 편인데도 불구하고 이 정도면, 노트북에서 어느정도 일지 테스트해보니 1초는 가뿐히 넘게 되었다. 어떻게 하면 한 번의 요청으로 데이터를 빠르게 가져올 수 있는지에 대한 고민을 정리하고 적용한 경험을 기록한다.
2024년 07월 30일![커버: [JAVASCRIPT] 라이브 방송 구현 01 커버 이미지](/assets/images/post/covers/TIL-javascript.png)
Streaming이란? 스트리밍이라 하면 미디어파일을 전송하고 재생하는 방식의 하나로 불립니다. 스트림은 데이터가 입,출력 되는 흐름을 뜻하는데요, 스트리밍이라 하면 지속적으로 흐른다는 의미를 가지게 됩니다. 파일로 예를 들어보면, 대부분 미디어 파일은 다운로드 받고 나서야 실행하여 전체 길이의 미디어를 볼 수 있습니다. 이 파일의 크기가 커지면 커질수록 재생하는데 걸리는 시간은 파일의 크기와 비례하겠지요. 그렇다면 이 파일을들 쪼개어서 먼저 다운로드 받은 파일만을 재생시키면 어떻게 될까요? 스트리밍이라는 말처럼 파일을 잘게 쪼개어 먼저 받아진 미디어 파일들을 재생시켜 출력을 흐르게 한다면 굳이 전체 미디어 파일을 받지 않더라도 기다리지 않고 곧바로 미디어를 볼 수 있겠지요. WebRTC로 회의형 플랫폼을 만드는 기술과는 조금 다른 방향의 기술이 요구됩니다. 물론 WebRTC가 필요합니다. 영상 권한을 요구해야하기 때문이죠.
2023년 04월 13일