Skip to content

JooYoung2274/voice

Repository files navigation

your One And Only voice OAO입니다

스크린샷 2021-12-09 오후 2 32 42


🤷 프로젝트 소개

세상에 단 하나뿐인 나의 목소리로 자유롭게 커뮤니케이션 하고 재능판매까지 해볼 수 있는 사이트입니다.

내가 필요한 목소리를 리스트에 저장해서 들어보고 샘플을 의뢰할 수 있습니다.

Web Site : https://oao-voice.com

🧾 와이어 프레임

🎥 시연 영상

🧑🏼‍💻 개발기간 및 팀원소개

기간: 2021.12.20 ~ 2022.01.27


Back-end

Front-end


🔨사용한 기술 스택

스크린샷 2021-12-09 오후 2 32 42

Back-end



🖥 Back-End 기술스택

이름 설명
Node.js Javascript Runtime
Express Web Framework
MYSQL Database
Jenkins CI/CD
nGrinder 서버 부하테스트



📒 라이브러리

name Appliance version
aws-sdk S3 접근 2.1049.0
fluent-ffmpeg 녹음파일 컨버팅 2.1.2
cors Request resource 제한 2.8.5
dotenv 환경변수 설정 10.0.0
helmet HTTP 헤더 보안 4.6.0
connect-timeout 서버 타임아웃 관리 1.9.0
multer 이미지 데이터 처리 1.4.4
multer-S3 사진 파일 업로드 2.10.0
express-rate-limit api 요청 제한 6.0.1
swagger-ui-express API 문서화 4.3.0
swagger-autogen swagger 자동 적용 2.18.0
hpp 보안 0.2.3
jsonwebtoken 사용자 인증 토큰 8.5.1
mysql2 MySQL 접근 2.3.3
passport 소셜로그인 기능 구현 0.5.2
randomstring 랜덤 문자열 생성 1.2.1
sequelize sequelize 사용 6.12.0
sequelize-cli sequelize-cli 사용 6.3.0
socket-io 채팅 4.4.1



🏻🛠 백앤드 트러블 슈팅 해결과정

Trouble Shooting

  1. DATABASE 해킹 이슈
  2. 서버비용 과다 부과 이슈

트러블 슈팅 해결과정


💬 WHY?

이번 실전프로젝트를 진행하면서 보안, 서버구조와 실사용자들의 사용환경에 대해서 많은 고민을 하였습니다. 보안이나 서버구조에 대한 부분은 이전 프로젝트에서 진행한적이 없던 새로운 도전이었기 때문에 타당한 근거를 바탕으로 구현하려고 노력했습니다. 또한 실사용자들의 사용환경의 경우도 안드로이드 환경과 ios환경 모두 이상없이 작동되는 환경을 만들어야 했기 때문에 이를위한 테크스텍 선택을 고민하였습니다. 그러한 타당한 근거에 대한 고민과 결론에 대한 내용입니다.

❓ Why? AWS RDS

이번 실전프로젝트 초기에 데이터베이스 해킹을 당하는 이슈가 있었습니다. 보안에 대해서 무지한 상태로 개발에만 급급하다보니 발생된 이슈였고, 이에 같은 실수를 하지 않기 위해서 보안에 대한 고민을 하게 되었고, 결론적으로는 초반에 설정한 서버 구조 자체가 보안에 취약하다는 점을 확인 하였습니다. 이후 데이터베이스를 AWS RDS를 사용해 구성하였고, 이를 통해 백앤드서버와 데이터베이스가 분리될 수 있었습니다. 또한 RDS를 프라이빗 서브넷으로 구성해 정해진 루트에서만 접근 가능하게 수정하였습니다.

❓ Why? Auto scaling

개발을 진행하는 중간에 서버비용이 과다하게 부과되는 이슈가 있었습니다. 필요한 서버 성능에 대한 테스트 없이 t2.medium EC2 서버를 구매해 사용했기 때문에 발생된 이슈였습니다. 이에 모든 서버를 t2.micro 등급으로 줄였고, 이때 서버 성능에 대한 테스트를 진행하였습니다. t2.medium 등급으로 사용할 때는 이상이 없었지만, t2.micro 등급으로 다운그레이드 하면서 성능에 대한 문제가 생겼고, 이에 서버비용은 적게 유지하면서 서버의 성능을 늘리기 위한 방법으로 auto scaling을 적용하였습니다.

❓ Why? ffmpeg

실전프로젝트의 핵심기능으로 녹음파일을 업로드하는 기능이 있었습니다. 안드로이드, ios 각각의 환경에서는 전혀 문제가 없었지만, 안드로이드에서 올린 녹음파일이 ios에서 재생이 안되는 현상이 있었습니다. 이에 사용자가 플랫폼에 상관없이 모든 기능을 이용할 수 있게 ffmpeg 프로그램의 컨버팅 기능을 이용해 안드로이드에서 녹음파일 업로드 시 mp3확장자로 컨버팅 후 업로드하게 구현하였습니다.

📝 후기 및 팀 노션 페이지

팀 노션 페이지 OAO voice