라벨이 data-stream인 게시물 표시

배치 처리와 실시간 처리

배치 처리 배치 처리 프로그램 특징 - 사용자와 상호작용하지 않음 - 대량의 data를 처리하며 - 일련의 작업 묶음으로 이뤄져있다. 배치 프로그램의 주기 - 정기적으로 작업을 수행하거나 - 조건을 만족하는 이벤트가 발생 할 때 실행 - 사용자의 요구 조건에 따라 배치를 수행하는 경우는 on-demand 배치라고한다. on-demand 배치는 일반 배치프로그램처럼 테이블 전체에 대해 수행하거나 하지는 않고 제한적인 범위에 대해 수행한다. 예를 들어, 일반 사용자의 on-demand 배치가  전체 거래량에 대해 정산을 하지는 않는다.  배치 프로그램의 튜닝 대용량 배치 프로그램 튜닝에서 중요한 것은 전체 처리 속도를 낮추는 것이다. 기업에서는 배치 프로그램을 관리하는  "배치 윈도우"라는 설계도, 문서가 있는데 이는 배치 프로그램들의 튜닝과 플랜을 짜는데 도움이 된다. 일반적으로 배치 프로그램은 dbms 상에서 수행되는 일련의 sql 작업들로 구성되며 이 sql문의 튜닝이 전체 처리 속도에 큰 영향을 미친다. 배치 프로그램 구조 이 sql 작업들은 - one sql  = 하나의 sql문으로 전체 프로세스를 짜는 것 - 각 언어 구현체의 데이터베이스 커서를 사용하여 루프를 돌면서 실행한다. - one sql보다 성능적으로 권장되는 방법은 one sql을 여러 sql 집합으로 쪼개서 단계적으로 실행하는 것이다. commit시점이나 횟수가 완전 동일한 로직이라는 가정하에  one sql이 curosr loop보다 더 간편하고 관리하기가 용이하다고 생각한다. 배치 관리 프로그램 - .sh - .py - sql (1단계)                                    - .sh - .py - sql (2단계)    ...

데이터 스트림_2(gstreamer, socketio, rabbitmq, kafka)

이번 글에서는 지난 1년동안 웹기반 실시간 영상 프로젝트에 참여하며 배운점을 공유하면서 프로젝트에서 쓰인  gstreamer라는 스트리밍 플랫폼, socketio, rabbitmq와 rabbitmq와 유사한 kafka와 같은 이벤트 기반 프레임워크와 비교하겠다. 이 비교과정을 통해서 스트리밍, 비동기 프로그래밍, callback 기반 코드, 이벤트 기반 프레임워크 등에 대해   더 깊은 이해를 할 수 있었다. 위 제품들은 아주 큰 범위의 streaming에서만 일맥상통하고 메커니즘, 지향하는 바는 제각각이기 때문에 쓰이는 분야 또한 제각각이다. 지난 1년간, 프로젝트에서 gstreamer는 주로 미디어 처리 역할을 수행하게 되었다. gstreamer gstreamer는 c로 작성된 객체지향형 프레임워크인 gobject를 기반으로 구성된 프레임워크이다. gstreamer 자체는 pipeline, bin, element을 구현하기 위한 코어 모듈들 콜백 시스템 구현을 위한 각종 시그널, 버스, 메시지 등의 모듈들로 구성되었다. 그 외에 각종 plug-in들은  gstreamer 프레임워크를 준수하며 사용 목적에 맞게 개발자들이 제작한 것이다.  나는 그중에서도 실시간 영상 스트리밍을 위해 rtspsrc, hlssink(multifilesink의 상속), avdec, h264parse, x264enc 과 같은 인코딩, 디코딩, 파싱 모듈을 사용했으며 이는 영상처리를 위한 플러그인들이다. 파이프라인에 흘러갈 소스가 동영상이 아닌 경우에는 다른 플러그인을 사용하면 된다. rtsp src는 적절한 연결-수립 통신 이후에는 - rtp packet을 보내게되고 이 rtp-packet에서 변환 과정을 거쳐야 영상처리를 위한 데이터를 뽑을 수 있다. rtsp packet rtp packet -> h264 -> x-raw (이 부분부터 raw 파일을 조작할 수 있다.) 작업했던 프로젝트에서는 gstreamer에서는 rtspsr...

데이터 스트림_1(이론)

이미지
Streaming data Data stream What is streaming data, data stream? 막연하게 이름으로만 해석하면 '데이터가 흐르는' 개념이라고 생각한다. 데이터가 흐르다니, 어떻게 움직이는 것을 '흐르다'라고 표현할까? 인터넷 회선이 연결된 곳, 그리고 무선 네트워크가 닿는 곳이라면 어떻게든 데이터를 송/수신 할 수 있다. 인터넷과 연결되지 않는 폐쇄망 및 로컬 네트워크에서도 데이터는 송/수신 할 수 있으며 CAN 프로토콜 위에서 나르는 데이터도 있다. (사용자 이동통신단말기, 서버, IoT 디바이스 등) 위 형태들도 Data가 오고 가고있으니 stream이 아닐까?

이 블로그의 인기 게시물

실무진 면접 경험으로 정리하는 백엔드 (1) : 에듀 테크 기업 면접

노마드코더 개발자북클럽 Clean code 완주, 독후감

Blogger 커스터마이징 : CSS 수정 (sticky-header)