Skip to content

[25 01 06] 팀빌딩

seongha_h edited this page Jan 22, 2025 · 3 revisions

팀빌딩

팀 목표

  • 각자 어떤 목표를 가지고 CS 리팩토링을 진행하는지 공유합니다.

성하 : 성능개선 경험 및 수치화

종빈 : 정확한 수치화, 다른곳에서 경험 하기 힘든 개발

지은 : 성능 개선, 테스트 툴로 성능 개선 명확하게 보여주기

석호: 렌더링 개선 및 수치화

리팩토링 계획

1주차 , 2주차

  • Git Actions 캐싱으로 배포시 빌드시간 줄이기 media 서버 빌드시 매번 의존성 설치로 인한 빌드 시간이 약 7분 소요 의존성 설치 및 dockerfile 을 Actions cache를 적용하여 약 1분으로 감소

  • 도커 포트 맵핑 cpu 이슈

    • 도커 모드 별 차이점 정리 (브릿지/호스트 모드)
  • 미디어 서버 자료구조, 알고리즘 개선 ( 관심사 분리 등)을 통한 탐색 시간복잡도 줄이기 → 테스트 코드로 시간 측정 (100만번 탐색시 몇 초 → 빅오 표기법으로도 보여주기)

  • 프로젝트 구조 개선

  • 프론트 상태변화 줄이기 → n제곱에서 줄이기 많은 프론트 상태변화로 인해 변경되지 않은 컴포넌트도 렌더링되는 문제 (ex 랜더링 수) 특정 상태만 변경 가능하도록 변경

  • DB 쿼리 최적화 → 인덱스 적용 등

    • DB 쿼리 성능 문제
    • TypeORM 사용 시 성능 최적화 방법
  • 테스트 코드 작성

    • 리팩토링 = 기능이 바뀌면 안된다.

    • 테스트 코드를 통해 리팩토링 이후 기능의 변경 여부를 파악

    • 테스트에 대한 탐구 (기능이 변경되었는지에 대한 테스트는 어떤 방식이 옳은지 등 )

      → 과연 유닛 테스트는 항상 옳은가?

3주차

  • 부하테스트 도구 개발 및 수치화 → 왜? 단순히 확장을 위해서 측정한다. 메인이 아니라 서브인거 같은 느낌?

  • 서버 분리 → 포트수 확보, 디스크? 또는 네트워크 부하 분산? → 측정이 필요…

    • 서버 분리 X로 인한 모든 서비스가 한번에 다 죽는거
    • 티클 분리 → 한 티클의 참여자가 너무 많아질 경우 수용 불가 (Port 매핑, 메모리 문제) → 테스트 도구 반드시 필요
  • 방의 모든 음성저장 기능 구현 (음성 패킷 뜯어서 합치기)

    • 실패한 원인 추측

      • 음성 패킷을 별도의 작업(복호화, 헤더분리)등을 하지않고 그냥 합쳐서 안된것
    • 해결방안

    • 달성하기 위한 과정

      • direct transport와 다른 transport의 동작방식 탐구해보기
        • mediasoup 코드 분석
        • direct transport로 패킷을 받아 패킷이 암호화 되어있는지 확인
        • direct transport 헤더 분리 안하고 녹음했을 때 정상적으로 녹음되는지 확인
      • 문제인 점을 파악하여 개선
        • 복호화 모듈 만들기
        • 헤더분리 모듈 만들기
    • 결과

      • mediasoup 음성 저장 모듈 개발