12월 15일 수료식을 끝으로 네이버 부스트캠프 과정이 모두 끝났다. 수료식에서 여러 멘토분들과 이야기도 나누고 커피챗도 하면서 앞으로 어떻게 공부를 해나가야 할 지 조언을 들을 수 있었다.
https://blog.naver.com/boostcamp_official/223303774904
GBS
https://github.com/boostcampwm2023/web07-GBS
우리 팀은 실시간 방송 스트리밍 서비스를 만들었고, 나는 팀장과 백엔드를 담당했다.
- 담당 기능
- 방송 서비스 전반적인 기획 및 구현 - - CI/CD 및 서버 세팅
- - 스트리밍 수신 서버 구현, 인코딩 서버 구현
- - 유저/인증 API 구현
- - 방송 썸네일 생성 및 API 구현
네이버 부스트캠프에서 nCloud 크레딧을 줘서 모든 인프라는 nCloud 것을 사용했다. 우리 팀 모두 실시간 방송 스트리밍을 처음 구현하는 것이다 보니 어려운 점이 많았다. 하지만 서로 공부한 것을 문서화해서 같이 공유하고 설명하는 시간을 가져 빠르게 학습할 수 있었다. 그리고 nCloud가 AWS 보다는 사용사례가 적다보니 오류 해결하기가 비교적 어려웠지만 공식문서도 꼼꼼히 보고, 직접 nCloud에 이메일을 보내서 해결 방법을 알아내면서 차근차근 해결해 나갔다. Redis 서버가 나의 컴퓨터에서 접속이 안되서 문제가 있는 줄 알았는데, nCloud에 이메일을 보내 답변을 받아보니 nCloud내 서버에서만 접속이 가능하다는 답변을 받았다
로그인 기능을 처음 구현하다 보니 어려운 점이 많았다. 우리는 세션 방식으로 로그인(OAuth)을 구현하는데, 유저 정보를 따로 받아오지 않았다. 그리고 Access Token, Refresh Token을 저장을 할 필요가 없었는데, 무지성으로 블로그 글만 보고 따라하느라 깊이 생각 하지 않고 저장을 했다. 그래서 피어세션 때 어떤 분이 지적을 해주셔서 그때서야 우리 프로젝트에서 토큰이 필요한가라는 생각을 했다. 그래서 로그인, 인증에 대해 더 깊게 공부하면서 내가 이해가 부족했구나라는 것을 느꼈다. 앞으로는 왜? 라는 질문을 계속 던지면서 공부를 하고, 구현을 해야겠다.
실시간 방송 스트리밍 서비스를 만들면서 스트리밍 관련 지식들에 대해 공부해보는 계기가 되었고, 앞으로 공부하면서 이 프로젝트의 성능을 향상시키고 기능을 추가해보고 싶다.
서버
서버를 한대 정도 사용해서 배포한 경험은 몇번 있었지만 RTMP 1대, Encoding 서버 1대, NestJS 서버 1대, 프론트 - React 서버, DB MySql 서버, Redis 서버, 총 6대의 여러개의 서버를 사용한 경험은 처음이었다. 그래서 서버비용이 얼마나 나올지 예상이 되지 않았다.
Compact-g1 Server
- 개발 테스트 용도나 서버 성능 이슈가 적은 개인 커뮤니티 또는 소규모 웹사이트 운영에 이용 시 가격 대비 성능이 좋은 서버입니다.
- 운영체제 설치를 위한 기본 디스크가 제공되며, 추가 디스크는 디스크 당 최대 2,000GB 크기로 OS가 지원하는 개수만큼 직접 생성할 수 있습니다.
- 월 또는 시간 단위로 서버를 사용할 수 있습니다. 월 단위 요금으로 서버를 1개월 미만으로 사용하면 이용 요금은 일할 계산돼 청구됩니다.
- vCPU가 2개 미만인 사양의 서버는 Linux 계열 운영체제만 사용할 수 있습니다.
- 아래 요금은 서버가 운영중인 상태의 요금이며, 서버 정지 시에는 운영체제 설치를 위한 기본 디스크 요금만 청구됩니다.
- Windows 서버에 한해 기본 디스크로 100GB 서비스를 활용할 수 있습니다.
11월은 총 115,340원, 12월은 244,350원이 나왔다. 12월에는 프로젝트 구현이 어느정도 완성되어서 약 10명정도 방송을 했고 시청자는 평균 10~20명 정도였다. 가장 낮은 사양의 서버를 사용하고, 사용자도 얼마 없다고 생각했는데 서버비용이 꽤 나와서 놀랐다.
사용모듈
RTMP 서버, Encoding 서버 둘 다 https://github.com/arut/nginx-rtmp-module 를 기반으로 한다. 원래는 RTMP 서버에 node 기반 라이브러리 https://github.com/illuspas/Node-Media-Server 를 사용했었다. 근데 오디오만 송출되는 문제가 생겨서 로컬에서 해결하고 배포했는데(해결 과정: https://chestnutfarmland.tistory.com/158), 배포 후에는 또 안되서, RTMP 서버, Encoding 서버의 기반 모듈이 같은 것으로 바꿨다.
RTMP 서버 : https://github.com/winshining/nginx-http-flv-module
Encoding 서버 : https://github.com/efriandika/streaming-server/tree/master
배운점
부스트 캠프를 통해 여러 동료들과 오프라인 만남, 소통을 하며 친해질 수 있었다. 모두 좋은 분들이고 배울 점이 많은 분들인 것 같다.
특히, 그룹 프로젝트를 하면서 팀원들로부터 많이 배웠다. 나는 이전에는 "일단 돌아가기만 하면 되지" 라는 생각을 가지고 있었는데, 백엔드 팀원을 통해 더 좋은 코드, 깔끔한 코드의 중요성을 배웠다. 코드 리뷰를 엄청 꼼꼼히 해주셔서 배울 수 있었다.
하지만 나는 백엔드 팀원분께 코드리뷰를 엄청 상세히 해드리지 못해서 아쉬웠다.
또 다른 배운 점은 끈기이다. 나는 잘 안되면 "아 이따 쉬고 해볼까" 라는 생각으로 늘어지곤 했는데, 백엔드 팀원분은 그 자리에서 바로 해결하려는 모습을 보여주셨고, 금방 해결하시는 모습을 보고 나도 앞으로 저렇게 해야겠다는 다짐을 했다.
프론트 팀원들로부터는 꼼꼼함을 배웠다. 발표준비를 하면서 ppt에 키워드 중심으로 슬라이드를 만들었는데 크게 혼났다... "어떤 상황이 있었고, 그래서 어떻게 해결했는지, 결과는 무엇인지" 맞춰 슬라이드를 만들라고 해서 그렇게 했다... 프론트 팀원들이 없었으면 우리 팀 발표는 험난했을 것 같다. 발표는 항상 어렵다..
프론트 팀원 중에 nGrinder 사용법 글을 써서 네이버에서 잘썼다고 선물을 받은 분이 있는데 너무 멋졌다. 이분은 글도 잘쓰고 항상 부지런하시고 갓생 사시는 모습이 너무 멋지다.
아쉬운 점
백엔드 한분, 프론트엔드 한분 현직 멘토분들로부터 매주 1시간 줌으로 멘토링을 받았다. 항상 뭐라도 더 도와주시려고 했던 점은 매우 감사했다. 하지만, 멘토분들께서 멘토링하기 전 질문할 것을 정리해달라고 부탁해주셨는데 이를 잘 지키지 못했다. 기술적으로 질문할 것이 그렇게 많지 않다고 생각했다. 지금 생각해보면 기술적인거 말고도 다른 것들에 대해 질문해 멘토링 시간을 잘 활용하면 어땠을까 싶다.
동료피드백
프로젝트가 끝나고 같은 팀원들과 피드백을 주고 받는 시간이 있다. 아래는 부스트캠프에서 제공해주는 질문지를 바탕으로 모든 팀원들이 작성한 내용이다. 팀장으로서 팀원들에게 더 잘해줄 걸이라는 생각을 가지고 있었지만, 피드백 일지를 보니 팀장으로서 너무 잘해주었다는 말이 있어서 기분이 너무 좋았다!
'네이버 부스트캠프 웹・모바일 8기' 카테고리의 다른 글
2주차 회고 (0) | 2023.09.10 |
---|---|
2023 네이버 부스트캠프 8기 멤버십 합격 (0) | 2023.08.18 |
네이버 부스트캠프 웹・모바일 8기 챌린지 후기 및 회고 (3) | 2023.08.10 |