Skip to content

Latest commit

 

History

History
64 lines (42 loc) · 4.16 KB

File metadata and controls

64 lines (42 loc) · 4.16 KB

Batch Processing in Browser / Node.js

👉 GitHub Project

계기

오랜만에 패캠 강의 리스트를 보다가, Spring 쪽에서 대규모 트래픽 서비스를 위한 Spring Batch 관련 강의가 은근 있는 걸 보게 됨

Java는 Multi-thread 언어니까 batch 처리가 어렵지 않게 될 거 같은데,

Single-thread 언어인 JavaScript에서도 그런 대용량 처리가 가능할지(뻗지 않을지..) 급 궁금해짐..🧐


nodejs batch 정도로 구글링해보니, 대부분 node-scheduler, node-cron 를 활용하라는 글들임

생각해보니 이미 실무에서 위 두 라이브러리를 직접 활용했었고,

사내 라이브러리 업데이트 이후에는 Nest.js@nestjs/schedule를 활용하는데, 이거 역시 위 node-cronNest.js에서 wrapping 한 거임


암튼 브라우저와 Node.js 각각의 환경에서 batch를 어떻게 구현할 수 있는지 시도해보고,

굉장히 무쓸모일 거 같지만.. JavaScript로 빅데이터를 한번 돌려보도록 하자 (분석 아님, 걍 돌려보는거임 🤪🤪🤪)

Resources; 준비물

  • Kaggle 빅데이터: Air Pollution in Seoul
    • 이중에서 Measurement_info.csv 파일이 124.38MB
    • 지하철 역별 시간당 6개 오염물질/지표(SO2, NO2, CO, O3, PM10, PM2.5) 측정 결과인 듯

Implements in Node.js

  • 위에서 언급한 node-schedule, node-cron은 말 그대로 linux의 cron을 Node.js 환경에서도 할 수 있도록 만들어 준 거
  • 그러니까 특정 작업 하나하나를 특정 시점마다 작동할 수 있게 반복 설정을 해주는거지, 이게 batch process의 원래 의미와 맞나는 조금 의문이..?
    • node-schedule은 단순히 timer++ 정도로 하는 거 같고.. ???
    • node-cron 코드를 보니 Node.js 코어의 EventEmitter를 사용하는 듯..
  • 좀더 찾아보니 batch, p-limit 등 좀더 batch 스러운 라이브러리들이 있긴 함
    • 근데 last update가 몇년전인 것도 많고, ES5 문법도 많고, TS 지원 안되는 것들도 은근 있어서 아쉬움..
    • 그냥 직접 만들어보고, 괜찮으면 배포해보자..! 🚀🚀🚀
  • Stream + Worker threads를 이용해보면 되지 않을까?

Implements in Browser


References; 참고한거 + 그냥 같이 볼만한 거