개발 프로젝트 (27) 썸네일형 리스트형 영상 ffmpeg 인코딩 후 HLS 송출시 Latency 문제 개선 현상 : 실시간 관제를 위한 서비스에서 관제 영상이 HLS로 송출될때 1분이상 지연된 영상이 송출됨원인 : ffmpeg에서 인코딩할 시에 영상segment가 25초짜리 3개의 ts 파일로 인코딩 되어 있어 75초 이전의 영상이 송출됨심층원인 : 인코딩 전의 영상소스가 rtsp로 25초당 1번꼴로 keyframe이 삽입되어 파일 인코딩을 25초 단위로 할 수 밖에 없었음해결책 : 실시간 관제 서비스이기때문에 연결의 안정성보다는 실시간성이 중요하기때문에 끊김을 감수하더라도 ts파일을 2초, 2개로 설정심층원인 해결책 : ffmpeg를 사용해서 keyframe을 1초당 30번으로 강제변환하여as is ffmpeg -i rtsp://127.0.0.1:7682/Test-01 \-c:v copy -c:a copy.. 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는 생성되면 거짓 알람이 되는.. Flowchart 작성하기 https://app.diagrams.net/ Flowchart Maker & Online Diagram SoftwareFlowchart Maker and Online Diagram Software draw.io is free online diagram software. You can use it as a flowchart maker, network diagram software, to create UML online, as an ER diagram tool, to design database schema, to build BPMN online, as a circuit dapp.diagrams.net 개발자로서 Flowchart 작성 방법과 대표적인 기호Flowchart(흐름도)는 개발자가 시스템의 로직.. 제로베이스 팀프로젝트 진행록4 - 리팩토링 & 멘토 피드백 Transactional 사용에 대한 멘토 피드백과 리팩터링 Transaction 사용에 대해서 대용량 환경에서는 deadlock이나 트래픽 수용성이 떨어지기 때문에 최대한 사용을 피하는 것이 좋다고 하셨다. Trasnaction을 사용할때 방지하고자하는 위험한 케이스가 1. 실제로 일어나는 일인가? 2. 막아야하는 일인가? 3. 다른 방법은 없는가 세가지 질문을 먼저 던져보라고 조언해주셨다. (1) Fail-fast를 통한 rollback 상황 최소화 실제로 내 코드에서 Trasnaction을 사용했던 케이스들을 보면 Trasnaction 없이 코드의 구조만 조금 변경하면 데이터 무결성을 보장할 수 있는 구조였다. 기존에는 Entity상태를 변경하고 저장한후에, API 통신이 실패하면 Paymen.. 제로베이스 팀프로젝트 진행록3 - 협업하여 개발하기 팀프로젝트로 배운 협업코딩여태까지는 혼자서 개발을 해왔기 때문에 문서를 특별히 작성할 필요도 없었고, 다른 사람의 코드를 볼 필요도 없었고, 보여줄 필요도 없었다. 그렇기에 내게 Git은 단지 저장수단이었으며 PR과 Branch는 왜 사용하는지 몰랐고 제대로 테스트코드도 작성하지 않았다. 이 모든 것이 Code Review와 Merge라는 팀 협업행위가 도입되는 순간 큰 혼란을 야기하였고 이 기회를 통해서 협업의 툴과 방법론에 대해 제대로 숙지하고자 아래와 같이 깨달은점을 정리한다. 협업을 위한 개발원칙1. 태도 : 남들을 보여주기위한 코드와 문서, 협업툴 사용하기2. Git 사용법 아주 상세하게 숙지하기3. Continuous Integration 시행하기3.1 PR은 의미있는 기능, 최소 단위로 자.. 제로베이스 팀프로젝트 진행록2 - 기능구현 1주차에 기획문서, erd, api명세서를 확정하고나서 백엔드 내부에서 GitRepo, codeconvention, package구조, pull reqeust md를 공통적으로 합의하고서 개발에 들어가기로 했다. API 명세서 : https://www.notion.so/API-12ab4d82e56880e5b249fc4f538a326a기획문서 : https://www.notion.so/125b4d82e568804797c6c13a1a933c9aERD : https://www.erdcloud.com/d/CaMg2mhPBTcPW7js9 나는 우선 커뮤니티 > 참여기능(redis lock) > 결재기능(redis lock) 순서대로 구현하기로 하였다. 커뮤니티 기능- 크게 어려움이 없었고 작성과 조회시.. 이전 1 2 3 4 다음