개발 프로젝트 (32) 썸네일형 리스트형 Redis ZSet 기반 슬라이딩 윈도우 설계 🔹 Redis ZSet 기반 슬라이딩 윈도우 설계📌 목적인원 수 기반 실시간 혼잡도 판단 시스템에서, 각 구역(subArea)의 최근 1분 간 인원 수 데이터를 기반으로 혼잡도를 판단해야 함.📌 기술적 배경 및 요구사항슬라이딩 윈도우: 최근 60초 데이터만 반영해야 함.데이터 중복 가능: 같은 peopleCount가 여러 번 들어올 수 있음.시간순 정렬 필요: 최신 데이터 순으로 빠르게 접근 가능해야 함.동시성/분산 환경 고려: 시스템은 여러 인스턴스에서 동시에 Redis에 접근하므로, 분산 환경에서 안정성이 필요함.왜 ZSet인가?비교 기준Hash/List/SetZSet정렬 지원없음✅ Score 기반 정렬슬라이딩 윈도우 구현TTL이나 별도 처리 필요✅ rangeByScore(min, max) 사용.. FFMPEG FFmpeg로 RTSP 스트림 PushFFmpeg 명령어는 로컬 영상 파일을 실시간처럼 RTSP 스트림으로 송출하는 명령어-re : real-time처럼 전송 → 파일 재생 속도를 1x로 제한해서 마치 실시간 영상처럼 보냄-stream_loop -1 : 무한 반복(loop) → 영상 끝나면 다시 처음부터 반복해서 송출-i input.mp4 : 입력 파일 지정 → 송출할 영상 소스 (input.mp4는 예시, 실제 경로 입력 필요)-c:v copy : 비디오 코덱 그대로 복사 (인코딩 없이 빠르게 전송)-f rtsp : 출력 포맷을 RTSP로 지정 (RTSP 서버와 호환되도록)rtsp://localhost:8554/mystream : MediaMTX 서버 주소: RTSP로 이 주소에 스트림을 푸시함 (lo.. 통합 관리 플랫폼 구축 1. 프로젝트 개요프로젝트명 : Crowd Management Admin Platform기간 : 2025.03 ~ 현재역할 : 백엔드 전반 개발 (설계, 구현, 테스트)기술스택 :Java 17, Spring Boot 3.2JPA (Hibernate), QueryDSLMariaDB / RedisRabbitMQ / WebSocketSwagger / SpringDoc주요 도메인 : 인파 분석, 카메라 관리, 권한 제어, HLS 스트리밍 2. 담당 기능 및 문제 해결 사례외부 공공 API 기반 배치 처리 시스템 설계 및 최적화1. 목표공공기관(KMA, 환경공단 등) API를 활용하여 카메라의 환경 정보 수집WebClient를 기반으로 하여, 향후 확장이 용이하고 fail-safe한 배치 처리 구조를 설계Redi.. 인파관리 시스템 : 실시간 스트리밍 모듈 개선 주요 Commit 내용 간단정리커밋의 목적1 (63eced32) : keyframe 삽입 및 코덱 설정으로 HLS segment 길이 조정커밋의 목적2 () 프론트에서 player가 안정성이 떨어져서 끊어지는 경우가 있으므로 segment가 더이상 공급이되지않거나 커밋의 목적3 : ffmpeg 헬스 체크를 하는데 ffmpeg가 동작은 하는데 결과물을 내지 않는 좀비프로세스가 되는 경우가 있음커밋의 목적4 : 모델체인지/프로세스 스타트를 할경우에 안정성을 확보하기 위해서 파일을 바라보는 모든 녀석을 제거하도록 커맨드를 변경했음 -> 이건 모델 체인지할때 기존 모델의 ffmpeg가 제대로 삭제되지 않는 경우가 있고 이를 뿌리뽑기위한 것. ffmpeg 옵션튜닝을 통해서 키프레임 삽입하고 단위를 2초 3개.. Github Issue Intelij에서Github Issue와 연동된 Branch 생성하기 : https://shinsunyoung.tistory.com/41Github Issue를 Intelij와 연결하기 : https://shinsunyoung.tistory.com/81 기존 사이트 분석하여 개발하기 1. 기존 사이트의 기능 및 아키텍처 분석✅ 1-1. 핵심 기능 파악 (비즈니스 로직 중심)먼저 새 프로젝트에서 반드시 구현해야 할 기능을 정리해야 합니다.이를 위해 기존 사이트를 사용하면서 주요 기능을 파악합니다.📌 분석할 주요 기능 예시✅ 로그인 및 인증 방식 (JWT, OAuth, 세션 기반인지 확인)✅ 유저 권한 관리 (일반 사용자, 관리자 등)✅ 데이터 저장 방식 (DB 구조 및 데이터 모델)✅ 검색 기능 (어떤 방식으로 데이터를 검색하는지)✅ API 호출 패턴 (REST, GraphQL, WebSocket 사용 여부)✅ 비즈니스 로직 (예: 주문, 결제, 추천 시스템 등)📌 도구 추천직접 사이트를 사용하면서 주요 기능 정리 (노션, Miro 등 사용)주요 페이지에서 발생하는 API 요청 분.. 제로베이스 연습프로젝트 : 매장 테이블 예약 서비스4 - MQ, Websocket 기능확장 도입 필요성 : 비즈니스 시나리오 매장주인이 예약을 거절할 경우에 손님은 즉시, 이 내용에 대해서 알림을 받을 필요성이 있다. 이를 위해서 웹소켓 방식을 도입하여 서버에서 request가 없는 상황에서도 알림을 발송하게끔 하고자 한다.또한, 매장 주인이 예약을 거절할 경우에 DB에 status 변경작업도 일어나야 하기 때문에, 웹소켓 발송 서비스와 DB 저장 서비스를 비동기적으로 실행시켜서 결합도를 느슨하게 하고자한다. 설계검토 : 동기화할 task와 비동기 task 식별동기화할 작업 : DB저장과 MQ Task Produce는 동기화 되어야된다. 왜냐하면, 예약상태 변경과 DB저장은 핵심적인 비즈니스 로직이기 때문에 이 작업이 미완료 되었는데 MQ task Produce는 생성되면 거짓 알람이 되는.. C4 다이어그램 모델 The C4 modelA set of hierarchical abstractions (software systems, containers, components, and code).A set of hierarchical diagrams (system context, containers, components, and code). https://c4model.com/software systems(system context diagram)containers (containers diagram) components (component diagram) code (code diagram)Sequence Diagram https://www.visual-paradigm.com/guide/uml-unified-modeli.. 이전 1 2 3 4 다음