트러블슈팅
“안녕하세요”가 “안, 안녕, 안녕하…”로 저장되던 문제
WhyLog 회의 기록에 문장 하나가 글자가 늘어나는 조각 여러 줄로 저장됐습니다. 서버는 중간 인식 결과를 is_final 값으로 거르려 했지만 클라이언트는 그 값을 보내지 않았고, 확정 결과는 아예 저장 대상에서 빠져 있었습니다.
백엔드 개발을 공부하며 배운 것, 해결한 문제, 프로젝트와 활동 이야기를 기록합니다
WhyLog 회의 기록에 문장 하나가 글자가 늘어나는 조각 여러 줄로 저장됐습니다. 서버는 중간 인식 결과를 is_final 값으로 거르려 했지만 클라이언트는 그 값을 보내지 않았고, 확정 결과는 아예 저장 대상에서 빠져 있었습니다.
WhyLog 실시간 회의에서 자막을 웹소켓으로 참가자 모두에게 보내던 구조가 동기 방식이라 참가자가 늘수록 지연이 커졌습니다. 원인을 짚고 전송 스레드 분리와 ConcurrentWebSocketSessionDecorator로 개선한 과정을 정리했습니다.
WhyLog 실시간 음성 회의에서 처음엔 Spring 서버가 웹소켓으로 음성을 중계했습니다. 서버 중계·P2P·MCU·SFU를 비교해 SFU를 고르고, 백엔드는 접속 토큰만 발급하도록 역할을 나눈 과정을 정리했습니다.