본문 바로가기

졸업 프로젝트

졸업 프로젝트 기술 스택 + Django 초기 셋팅하기

# 프로젝트 소개+기술 스택

 

우리 팀의 주요 컨셉은 음악 + 위로 이다.

사람들의 위로 댓글을 TTS를 통해 다양한 voice로 변환한 후 BGM + 앨범 표지가 될 그림과 합쳐 하나의 위로 앨범을 만드는 것이 목표인 웹서비스이다.

 

 

'벗어나게 만들다'라는 뜻을 가진 'dislodge'에서 착안하여 자신의 위로나 불안에서 벗어나길 바라는 마음으로 우리 서비스의 이름은 로 결정했다.

 

 

기술 스택은 다음과 같다.

개발 아키텍쳐

AI API를 만들고 배포하는 프레임워크는 확실하지 않다. Flask 혹은 FastAPI를 많이 사용하는데, 멘토님께 들은 바로는 MentoML이라는 프레임워크도 배포가 편하고 가벼워서 AI를 돌리기 편하다고 하셨다.

아마 AI를 직접 돌리고 배포하면서 수정할 것 같다.


팀 작업을 위한 기초 작업들을 진행중이다.

피그마에서 팀 화면을 구상중..

깃허브에서 organization도 만들고 파트별로 나누었다.

 

 

AI 모델은 초기에는 Vits2를 사용할 예정이였다.

그러나 우리의 주요 포인트는 사람들이 원하는 목소리를 만드는, 즉 피치와 스피드를 직접 조절하여 자신의 가상 목소리를 만드는 것인데, 조절 파라미터가 없거나 한국어 학습이 어려운 경우가 많았다.

 

 

한국어 학습을 위해서는 대부분 LJSpeech라는 대용량 한국어 발화 데이터를 사용한다.

워낙 데이터가 크고 AI 모델도 무겁다 보니 로컬에서는 잘 돌아가지 않는다.

colab을 이용해도 환경문제로 많은 어려움이 있었다.

우리 목적에 맞는 AI를 반복해서 찾아야 할 것 같다.

 


# Django 기본 셋팅하기

 

나는 백엔드를 맡아 Django의 기본 셋팅을 하였다.

 

먼저 django 프로젝트 실행을 위해 Django 모듈을 설치해야 한다. 앞으로도 계속 설치할 모듈이 많고, 무겁기 때문에 가상환경을 만들어 준 후 설치해주었다.

#가상환경 생성(window 버전)
python -m venv <가상환경 이름>
#가상환경 실행
source <가상환경 이름>/Scripts/activate

#모듈 설치
pip install django
pip install django-environ
pip install mysqlclinet
#이외에도 필요한 모듈을 설치해준다.

가상환경이 잘 실행되면 위와 같이 bash에 (가상환경 이름)이 뜬다.

 

다음으로는 Django 프로젝트를 생성한다.

Django-admin startproject <project이름>으로 생성할 수 있다.

project가 생성되면 기본 셋팅과 프로젝트 관리 및 실행을 담당하는 manage.py 파일이 새로 생긴다.

cd 를 이용해 manage.py 파일이 있는 폴더로 이동하고, python manage.py runserver를 입력 시 프로젝트를 실행시킬 수 있다.

성공적으로 만들어졌을 경우 bash에 나온 url로 이동했을 때 위와 같이 작동한다.

아직 만든 기능이 없어 기본 화면만 있지만, 기능을 계속 추가할 예정이다. 

서버는 crtl+c 로 끌 수 있다.

 


# 배포를 위한 분리

 

django의 기본 셋팅은 끝났다.

이제 django app을 만들어 MVC를 만들어주면 되지만, 만약 프로젝트를 실제 배포까지 간다면 settings.py 파일을 분리해주어야 한다.

settings.py에는 DJANGO_SECRET_KEY와 database 정보같은 민감한 정보들이 그대로 노출되어 있다.

따라서 그대로 작업 후 github에 push하는 경우 보안 위험이 있으므로, 민감한 정보들은 .env 파일에 따로 분리하고 git에 올라가지 않도록 만들어 준다.

 

분리된 구조는 다음과 같다.

  • __init__.py : settings.py 폴더 내 파일들을 다른 파일에서 참조하기 위한 파일. 
  • base.py : 기본이 되는 setting 파일. 처음 만들어진 settings.py 파일을 그대로 옮긴 후 DJANGO_SECRET_KEY와 데이터 베이스 관련 정보를 삭제해준다.
  • dev.py : 로컬에서 실행 시 참조할 파일. DEBUG=TRUE로 설정하여 에러 메시지를 노출한다.
  • prod.py : 배포시 참조할 파일. DEBUG=FALSE로 설정하여 에러 메시지를 사용자에게 노출하지 않는다.
# base.py 파일 안
from .base import *  

DEBUG = True

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': env('DATABASE_NAME'),
        'USER': env('DATABASE_USER'),
        'PASSWORD': env('DATABASE_PASSWORD'),
        'HOST': env('DATABASE_HOST'),
        'PORT': env('DATABASE_PORT'),
    }
}

위와 같이 민감한 정보들은 .env 파일에서 참조하도록 만들어 주었다.

옮기는 동시에 나는 Django에서 기본으로 제공하는 sqlite3이 아닌 mysql database를 사용하므로 ENGINE 부분도 바꾸어 주었다.

 

# .env

DJANGO_ALLOWED_HOSTS=localhost,127.0.0.1,[::1]
DJANGO_SECRET_KEY=<secret key>

DATABASE_NAME=dislodged_project
DATABASE_USER=root
DATABASE_PASSWORD=<mysql 비밀번호>
DATABASE_HOST=localhost
DATABASE_PORT=3306

위험 정보들을 모아둔 .env 파일은 다음과 같다.

.gitignore에 설정을 해두어서 github에는 올라가지 않도록 해두었다.

DJANGO_SECRET_KEY는 Django Secret Key Generator (miniwebtool.com) 여기에서 새로 생성할수도 있으니 참고하자.

 

이제 진짜 셋팅이 끝났다.

git과 연결 후 push하면

필요한 부분만 잘 올라간 것을 알 수 있다.

배포와 관련된 Docker와 config파일도 만들기만 해두었다.

ETT-DISLODGED/backend (github.com)

 

GitHub - ETT-DISLODGED/backend

Contribute to ETT-DISLODGED/backend development by creating an account on GitHub.

github.com

ETT github에서 자세하게 파일 내용을 확인 할 수 있다.

 

 

배포용 Docker 셋팅과 DRF로 API만드는 과정도 프로젝트를 진행하면서 기록할 예정이다.


#회고

 

프로젝트를 위해 본격적으로 셋팅을 시작했다.

그동안은 Notion과 피그마를 이용해 프로젝트 구상과 AI 공부만 했었는데, 이제 본격적으로 개발을 시작한다.

이번 프로젝트에서 내 목표는 인공지능 API를 만들고 직접 배포하여 사용해보는 것이다.

 

https://www.notion.so/e05c825a91a6429495d669e8e0888b31?pvs=4

 

팀스페이스 홈

ETT(Eventually The Top)에 오신 것을 환영합니다!

www.notion.so

Notion 페이지(공개 페이지)