우리는 기술적 의사결정과 트러블 슈팅에 대한 내용이 전반적으로 부실했다.
이를 정리하면서 이후에도 기술을 추가하거나 문제가 발생하면 아래처럼 기록하려고 한다.
- openvidu 서버 배포
도입 이유 | openvidu 도커 컨테이너를 배포서버에 구동시켜 서비스를 동작시키기 위함 |
---|
문제 상황 | openvidu 서버를 실행시키면 서버에서 nginx가 실행되지 않아 프론트와 백엔드가 ssl 인증서를 받지 못하는 문제 발생 |
해결 방안 모색 | 1) 배포하는 서버를 따로 두는 방법도 있겠으나 일단은 하나의 서버에서 동작 시키기로 함 2) lsof -i :80 명렁어로 80포트를 차지하고 있는 nginx 발견. docker-compose 파일 실행 시 openvidu-proxy라는 이름으로 nginx 이미지가 구동된다는 것을 알게 됨. 3) letsencrypt로 인증을 받기 위해서는 서버의 port 80, port 443을 열어야 할 필요성이 있었음 |
해결방안 | /opt/openvidu 폴더에 있는 .env에서 HTTP_PORT = 8442, HTTPS_PORT = 8443으로 설정했더니 openvidu_proxy가 8443 PORT를 바라보게 되어서 해결되었다. |
- openvidu 선택 이유
도입 이유 | WebRTC는 프론트에서 작업해야할 부분이 많고 팀 전반적으로 webRTC 기술에 대한 이해가 부족했음 |
---|
해결 방안 모색 | 1) 일반 webRTC 2) openvidu |
의사 결정 과정 | 일반 web RTC와 openvidu 두가지 방식으로 우선 진행해 봤음, openvidu 쪽이 진행속도가 빨라 openvidu로 선택하게 되었다. |
해결방안 | openvidu 플랫폼을 활용해 webRTC를 구현하게 되었다. |
- Docker
도입 이유 | 모두가 같은 개발 환경에서 작업할 수 있도록 Docker로 동일한 개발 환경 구성 |
---|
문제 상황 | 개발 중 코드가 수정될 때 마다 docker-compose를 down하고 up해야 함. |
해결 방안 모색 | 자동으로 코드가 수정된 것을 감지하고 재실행해주는 Hot-Reload를 도입. docker-compose파일을 수정하고 volumes로 동기화시켜주었는데 계속 실패하였고, 원인은 windows 운영체재라면 작성해주어야하는 옵션 코드가 존재했음. 그래서 이를 docker-compose파일에 추가하였음. 그런데도 실패해서 문제를 계속 찾다보니 tsconfig.json파일에도 옵션 코드를 작성해주어야 했음. |
해결방안 | windows 운영체재 사용자가 추가해야하는 CHOKIDAR_USEPOLLING=true 코드를 추가하고, watchOptions 옵션으로 코드로 변경을 주기적으로 검사하여 감지하고, 감지가 되면 재시작하도록 tsconfig.json 파일에 추가하여 해결. |
- EFK Stack
도입 이유 | 로그 수집과 저장 및 시각화에 뛰어난 EFK 스택을 적용하기 위해 도입 |
---|
문제 상황 | fluentd를 통해 백엔드 서버의 로그를 전송해야 하는데 서버의 로그가 수집되지 않고 실행만 되는 상황 발생 |
해결 방안 모색 | 서버에서 log를 생성하고 fluentd로 전송되도록 하기 위해 docker-compose에서 로깅 옵션을 추가해보기로 함.그러나 기본적으로 띄워지는 서버 실행 로그와 DB 쿼리 로그만 전송되고 다른 로그가 띄워지지 않음.어떠한 로그를 남거야 할지 고민하고 방법을 찾던 끝에 logger를 사용하여 사용자의 요청 정보에 들어있는 요청 method, api, ip, 등등 서버 모니터링을 하기 위한 정보들을 로그로 남기고 전송하도록 하기 위해 loggermiddleware를 작성. |
해결방안 | docker-compose에 logging 옵션을 추가하고 loggermiddleware를 작성하여 logger를 통해 로그를 남기고 fluentd로 전송하도록 하여 해결 |
- OpenAI
도입 이유 | 시간과 돈이 많이 들어가는 자체 개발 모델보다는, API로 쉽게 도입 가능한 GPT 모델을 쓰는게 더 효율적으로 생각되었습니다. |
---|
문제 상황 | 이미지를 올리고 그 식단에 대한 평가를 해주는 웹 서비스 개발 |
해결 방안 모색 | openAI에서 제공하는 API로 GPT모델들중 필요한 모델들을 골라 사용 |
해결방안 | 이미지 인식에는 해당 기능을 제공하는 GPT4모델, 그 외의 간단한 텍스트 생성에는 GPT3.5를 사용해서 성능과 가격의 밸런스를 잡았다. |