Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
moozeh authored Dec 4, 2024
1 parent 5160a37 commit 7ef5c53
Showing 1 changed file with 74 additions and 0 deletions.
74 changes: 74 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,80 @@

<br>

## 🥊 기술적 경험

### [BE] Coturn 설치 및 config 파일 수정

coturn은 WebRTC에서 NAT와 방화벽 문제를 해결하기 위해 사용되는 오픈소스 TURN/STUN 서버이다. 설치 후 `/etc/turnserver.conf` 파일에서 `listening-port`, `external-ip`, `min-port`, `verbose` 등을 설정하여 서버 동작을 최적화했다. 인증 방식(`lt-cred-mech`)과 사용자 계정을 설정해 보안을 강화하며, NAT 뒤에서의 통신을 지원하도록 `external-ip`를 공인 IP와 매핑했다.

> 작성자: 송수민
>
> 🔗 [coturn 설치 및 config 파일 수정](https://www.notion.so/coturn-config-299c854b69dd4bd9ac5823830ef3bc8d?pvs=21)
>
### [BE] TypeORM에서 트랜잭션 범위 최소화하기

질문지 생성과 질문 삭제 기능에서 기존 방식은 `@Transactional()`로 메서드 전체를 감싸 불필요하게 트랜잭션 범위가 넓었다. 개선된 방식은 `queryRunner`를 사용해 쓰기 작업에만 트랜잭션을 적용, 범위를 최소화하여 성능 및 관리 효율성을 높였다. 명시적인 트랜잭션 제어(시작, 커밋, 롤백)로 오류 처리와 자원 관리가 강화되었다.

> 작성자: 송수민
>
> 🔗 [TypeORM에서 트랜잭션 범위 최소화하기](https://www.notion.so/TypeORM-queryRunner-6037e88d14c94cf29046114f5de21e81?pvs=21)
>
### [FE] axios interceptor를 사용한 401에러 일관적 처리

액세스 토큰 만료시 401 에러를 `Axios Interceptor`로 일괄 처리하여 자동으로 토큰 재발급 및 요청 재시도 구현했습니다. 토큰 재발급 실패시 세션 만료로 간주하여 로그인 페이지로 리다이렉트하는 일관된 에러 처리 구축해보았습니다. 중앙화된 토큰 관리가 되니, 코드 중복 제거 및 유지보수성이 향상되었고, 개별 컴포넌트의 토큰 관리 부담이 줄었습니다.

> 작성자: 서정우
>
> 🔗 [axios interceptor를 사용한 401에러 일관적 처리](https://www.notion.so/axios-interceptor-401-151696f85d1f80cf9e6fe73452dcecb2?pvs=21)
>
### [FE] 카메라 인디케이터 항상 켜져있던 문제 해결하기

카메라 끄기시 인디케이터 계속 켜지는 UX 문제를 `track.stop()`으로 해결하고, `useRef`+`useState`로 스트림 관리 구조 개선했습니다. 이 과정에서 발생한 다른 참가자 화면 멈춤 문제를 `PeerConnections` 업데이트로 해결했고, 결과적으로 카메라 끄기시 인디케이터도 꺼지고 참가자간 동기화도 잘 되는 안정적인 기능이 되었습니다.

> 작성자: 서정우
>
> 🔗 [카메라 인디케이터 항상 켜져있던 문제 해결하기](https://www.notion.so/151696f85d1f80b78315ef65a8011d48?pvs=21)
>
### [BE] Facade 패턴으로 redis-om 엔티티에 도메인 로직 결합하기

Redis에서 복잡한 객체를 직렬화/역직렬화하는 반복 작업의 문제를 인식하였습니다. 그래서 여러 해결 방안을 시도하고 각각의 장단점을 분석하는 과정을 통해, DDD의 개념을 완전히 도입하기보다, 도메인 로직 분리라는 핵심 아이디어만 채택하여서 문제를 해결했습니다. 그 과정에서 결과적으로 Facade 패턴을 자연스럽게 도출이 되었습니다.

> 작성자: 김찬우
>
> 🔗 [Facade 패턴으로 redis-om 엔티티에 도메인 로직 결합하기](https://www.notion.so/Facade-redis-om-4f02cb197ced4835bbf11824c1323c6f?pvs=21)
>
### [BE] 협업을 위한 더러운 코드

`깔끔한 코드`를 만들기 위해 과도한 리팩토링을 시도했습니다. 협업보다 개인의 코드 품질 추구가 우선시되고 있었고, 멘토링을 통해 `코드의 길이보다 구조와 역할이 더 중요함`을 깨달았습니다. 절대적인 규칙이나 패턴을 맹목적으로 따르지 않고 상황에 맞는 판단의 중요성을 배웠습니다.

> 작성자: 김찬우
>
> 🔗 [협업을 위한 더러운 코드](https://www.notion.so/88d142476081439380ae207edc25c400?pvs=21)
>
### [FE] 상대방의 비디오가 보이지 않던 문제 해결하기

내 비디오는 보이는데 상대방의 비디오가 보이지 않는 문제가 있었습니다. 소켓 연결부터 피어의 상태관리까지 디버깅 코드를 넣어 관찰한 결과 디버깅 코드는 문제가 없었고, 비디오 스트림을 처리하는 코드를 보고 잘못된 방식으로 처리하고 있다는 것을 깨달았습니다. 문제가 생긴 부분을 체크하기 위해 단계별로 어디가 문제인지 찾아가며 문제를 찾는 범위를 좁히는 것의 중요성을 배웠습니다.

> 작성자: 이승윤
>
> 🔗 [상대방의 비디오가 보이지 않던 문제 해결하기](https://www.notion.so/151660556051802d911bf5421f085ffd?pvs=21)
>
### [FE] useSession 테스트 코드 작성하기

핵심 기능인 화상회의에 관한 코드가 모여있는 useSession 훅이 너무 많은 일을 하고 있었습니다. 분리해서 리팩토링을 진행하고 싶었는데 잘못하다가 여태까지 구현했던 것에 문제가 생길거 같았고, 클라이언트 측 동작을 테스트하기 위해 모킹을 이용해 테스트 코드를 작성했습니다. 이후 해당 훅을 분리하는 과정에서 테스트 코드를 통해 오류 없이 리팩토링을 진행할 수 있었고, 테스트 코드의 필요성에 대해 배웠습니다.

> 작성자: 이승윤
>
> 🔗 [useSession 테스트 코드 작성하기](https://www.notion.so/1426605560518007b5e7ed30b2cdb8ee?pvs=21)
>
## 👋 팀원 소개

| [김찬우](https://github.com/blu3piece) | [서정우](https://github.com/ShipFriend0516) | [송수민](https://github.com/twalla26) | [이승윤](https://github.com/yiseungyun) |
Expand Down

0 comments on commit 7ef5c53

Please sign in to comment.