본문 바로가기

Programmer/JAVA

(9)
CCTV RTSP 연동 삽질기, MJPEG 부터 go2rtc 적용 처음 맡아본 CCTV RTSP 연동오늘은 처음으로 CCTV 영상을 웹에서 실시간으로 연동하는 작업을 맡게 됐다.단순히 영상을 화면에 띄우는 것에서 끝나는 게 아니라,연동한 영상에서 일정 시간마다 캡처 이미지를 추출하는 기능까지 필요했다. 최근에는 모바일 소스 수정에 이어 RTSP 연동까지, 익숙하지 않은 영역의 작업을 계속 맡고 있다.새로운 걸 배우는 건 의미 있는 일이지만, 한편으로는 점점 내가 감당해야 할 일이 늘어나는 느낌도 든다. 모바일 쪽은 예전에 아파치 코르도바(Apache Cordova)를 다뤄본 적이 있어서 그나마 덜 낯설었다.하지만 RTSP 연동은 이번이 처음이라, 어디서부터 손대야 할지 막막했다. 회사에서는 클로드와 RTSP만 있으면 금방 데모가 나올 수 있다고 생각하고 있었다.겉으로 ..
업로드된 데이터의 카운트(count) 성능 문제, 왜 구조를 바꾸게 되었을까? 사용자에게 업로드된 사진 수를 표시하기 위해가장 단순하고 직관적인 방식은 필요할 때마다 개수를 직접 세는 것이다. 기존 운영에서는 이 방식이 큰 문제가 되지 않았다.데이터 양도 많지 않았고, 호출 빈도 역시 낮았기 때문이다.문제는 데이터가 쌓이기 시작하면서 발생했다서비스가 운영되면서 다음과 같은 변화가 생겼다.사진 데이터가 지속적으로 누적됨업로드 및 조회 트래픽 증가동일 조건의 count 쿼리가 짧은 시간에 반복 실행됨그 결과, 단순한 count 쿼리 하나가 API 응답 속도에 영향을 주기 시작했다.특히 다음과 같은 상황에서 체감이 컸다.목록 화면 진입 시 여러 종류의 사진 개수 표시업로드 직후 전체 개수 갱신사용자/타입별 개수를 동시에 조회하는 경우기능은 단순하지만, 성능 비용은 점점 커지고 있었다.그..
다시 Selenium SessionNotCreatedException 발생으로 인한 다운로드 경로 정리(ChromeDriver 140 ~ ChromeDriver 147) Selenium으로 크롤링이나 자동화를 돌리다 보면 언젠가 반드시 마주치게 되는 오류가 있다. org.openqa.selenium.SessionNotCreatedException: This version of ChromeDriver only supports Chrome version XXX Current browser version is YYY 작년에 보았던 것을 다시 한번 보게 되었다.원인은 늘Chrome 브라우저 버전 ≠ ChromeDriver 버전내 크롬 버전 확인 방법크롬 주소창에 입력 : chrome://settings/help버전 확인 : 144.0.7559.133 (공식 빌드) Chrome for Testing 공식 페이지에는 145부터 올라가 있었기에나중에 또 다시 옛날 버전이 필요할거 같..
Java 배치 처리에서 구독 서비스 토큰 관리 설계 고민 기존에 없던 AI 기반 서비스를 추가하면서,토큰 관리가 생각보다 훨씬 복잡한 영역이라는 걸 체감하게 됐다. 특히 월간·연간 정기 결제와 일회성 결제가 함께 존재하다 보니“배치(Job) 한 번 돌리면 되겠지”라는 단순한 접근으로는 해결되지 않았다. 여기에 향후 사용자 트래픽까지 고려해야 했지만,소규모 팀에서 중장기적인 계획을 충분히 세우기보다는 빠른 출시가 우선되는 상황이었다. 혼자 설계를 진행하다 보니 미숙한 선택도 있었고,그 과정에서 여러 시행착오를 겪게 됐다. 이 글에서는 실제 서비스 운영 과정에서 겪은 문제 상황을 바탕으로,하루 1회 배치 구조에서 토큰을 어떻게 관리했는지, 그리고 그 과정에서 고민하게 된 더 효율적인 대안까지 정리해 본다.토큰 관리를 추가하며 생긴 문제구독형 서비스에서 발생하는 문..