Skip to content

5️⃣ 5주차 버그 기록

Summer Min edited this page Dec 5, 2024 · 7 revisions

스크린샷 2024-12-03 오후 8 09 51 1 (2)

개요

  • 5주차 발표를 배포한 Octodocs로 진행하던 중 배포한 사이트로 사용자의 트래픽이 몰리면서 예상하지 못했던 버그가 터지고, 서버가 다운되었다.
  • 해당 에러 메세지는 다음과 같다.
backend-1          | /[app/apps/backend/dist/page/page.service.js:70](http://app/apps/backend/dist/page/page.service.js:70)
backend-1          |             throw new page_exception_1.PageNotFoundException();
backend-1          |                   ^
backend-1          |
backend-1          | PageNotFoundException: 페이지를 찾지 못했습니다.
backend-1          |     at PageService.findPageById (/[app/apps/backend/dist/page/page.service.js:70:19](http://app/apps/backend/dist/page/page.service.js:70:19))
backend-1          |     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
backend-1          |     at async /[app/apps/backend/dist/yjs/yjs.service.js:53:34](http://app/apps/backend/dist/yjs/yjs.service.js:53:34) {
backend-1          |   response: { message: '페이지를 찾지 못했습니다.', error: 'Not Found', statusCode: 404 },
backend-1          |   status: 404,
backend-1          |   options: {}
backend-1          | }
  • 해당 버그의 원인을 추려내고 해결하는 과정을 정리해보겠다.

버그 원인 후보

FE

  • onSync 시 initial Data, page 관련 쿼리 삭제, Y.Doc에만 넣어주기
    • 필요없는 쿼리가 쌓여 그 중 하나가 만들어내는 버그일 수 있다.
  • 워크스페이스 룸 및 ydoc 분리
    • 워크스페이스 별로 ydoc과 룸을 분리하는 로직을 5주차에 추가했는데, 이 과정에서 발생하는 버그일 수 있다. 제대로 각각 워크스페이스별로 생성이 되는지 확인해야 한다.
  • 링크로 입장, 권한 없을 시 /로 redirect
    • 현재는 클라이언트를 워크스페이스로 권한이 없다는 에러를 서버에서 받으면 누구나 접근할 수 있는 홈 화면, 공용 워크스페이스으로 리디렉션이 되도록 하고 있다. 이 과정에서 엉뚱한 경우에도 리디렉션이 진행되었을 수도?

BE

  • redis와 postgres 사이 데이터 동기화
    • 현재 프로그램은 redis에 먼저 데이터가 가고, 데이터베이스인 postgres에 주기적으로 업데이트가 되는 구조이다. 그 둘 사이의 데이터 동기화가 제대로 이루어지지 않아 사용자가 찾는 페이지가 둘 중 하나에 누락되어 있어 발생하는 버그일 수 있다.
  • 삭제, 추가 event 발생 시 서비스 호출로 변경
    • 현재 클라이언트에서는 페이지가 변경될 시에는 감지 후 서비스를 이용하여 서버에 해당 사항을 반영하지만, 페이지가 삭제되거나 추가될 때는 서버의 api를 호출하는 별개의 방식을 사용한다. 데이터 변경 방식이 두 가지가 혼종되어 있어 발생하는 버그일 수 있다.
  • 변경 사항 update 할 때 page not found 예외 발생
    • 변경 사항을 서버의 yjs 서비스에서 업데이트하는 로직에 결함이 있어 발생하는 버그일 수 있다.
  • document-loaded 시, Y.Doc 클린업
    • 공용워크스페이스에 클라이언트가 들어와 document - loaded 처리가 될 때, 클라이언트의 브라우저에 있던 Y.Doc의 데이터가 서버의 데이터와 달라 발생하는 버그일 수 있다.

버그 해결 과정

그러나 버그의 원인은.... 확인해보기

개발 문서

⚓️ 사용자 피드백과 버그 기록
👷🏻 기술적 도전
📖 위키와 학습정리
🚧 트러블슈팅

팀 문화

🧸 팀원 소개
⛺️ 그라운드 룰
🍞 커밋 컨벤션
🧈 이슈, PR 컨벤션
🥞 브랜치 전략

그룹 기록

📢 발표 자료
🌤️ 데일리 스크럼
📑 회의록
🏖️ 그룹 회고
🚸 멘토링 일지
Clone this wiki locally