-
Notifications
You must be signed in to change notification settings - Fork 0
[25 01 06] 팀빌딩
- 각자 어떤 목표를 가지고 CS 리팩토링을 진행하는지 공유합니다.
성하 : 성능개선 경험 및 수치화
종빈 : 정확한 수치화, 다른곳에서 경험 하기 힘든 개발
지은 : 성능 개선, 테스트 툴로 성능 개선 명확하게 보여주기
석호: 렌더링 개선 및 수치화
-
Git Actions 캐싱으로 배포시 빌드시간 줄이기 media 서버 빌드시 매번 의존성 설치로 인한 빌드 시간이 약 7분 소요 의존성 설치 및 dockerfile 을 Actions cache를 적용하여 약 1분으로 감소
-
도커 포트 맵핑 cpu 이슈
- 도커 모드 별 차이점 정리 (브릿지/호스트 모드)
-
미디어 서버 자료구조, 알고리즘 개선 ( 관심사 분리 등)을 통한 탐색 시간복잡도 줄이기 → 테스트 코드로 시간 측정 (100만번 탐색시 몇 초 → 빅오 표기법으로도 보여주기)
-
프로젝트 구조 개선
-
프론트 상태변화 줄이기 → n제곱에서 줄이기 많은 프론트 상태변화로 인해 변경되지 않은 컴포넌트도 렌더링되는 문제 (ex 랜더링 수) 특정 상태만 변경 가능하도록 변경
-
DB 쿼리 최적화 → 인덱스 적용 등
- DB 쿼리 성능 문제
- TypeORM 사용 시 성능 최적화 방법
-
테스트 코드 작성
-
리팩토링 = 기능이 바뀌면 안된다.
-
테스트 코드를 통해 리팩토링 이후 기능의 변경 여부를 파악
-
테스트에 대한 탐구 (기능이 변경되었는지에 대한 테스트는 어떤 방식이 옳은지 등 )
→ 과연 유닛 테스트는 항상 옳은가?
-
-
부하테스트 도구 개발 및 수치화 → 왜? 단순히 확장을 위해서 측정한다. 메인이 아니라 서브인거 같은 느낌?
-
서버 분리 → 포트수 확보, 디스크? 또는 네트워크 부하 분산? → 측정이 필요…
- 서버 분리 X로 인한 모든 서비스가 한번에 다 죽는거
- 티클 분리 → 한 티클의 참여자가 너무 많아질 경우 수용 불가 (Port 매핑, 메모리 문제) → 테스트 도구 반드시 필요
-
방의 모든 음성저장 기능 구현 (음성 패킷 뜯어서 합치기)
-
실패한 원인 추측
- 음성 패킷을 별도의 작업(복호화, 헤더분리)등을 하지않고 그냥 합쳐서 안된것
-
해결방안
-
패킷의 헤더 부분들을 제외시키고 데이터부분만 합치기
-
암호화된 패킷 복호화 한 후 합치기
-
-
달성하기 위한 과정
- direct transport와 다른 transport의 동작방식 탐구해보기
- mediasoup 코드 분석
- direct transport로 패킷을 받아 패킷이 암호화 되어있는지 확인
- direct transport 헤더 분리 안하고 녹음했을 때 정상적으로 녹음되는지 확인
- 문제인 점을 파악하여 개선
- 복호화 모듈 만들기
- 헤더분리 모듈 만들기
- direct transport와 다른 transport의 동작방식 탐구해보기
-
결과
- mediasoup 음성 저장 모듈 개발
-
- 종빈 :
- 성하
- 지은
- 1주차
- 2주차