Create Trend 서비스의 정보를 제공해주는 API입니다.
Django REST framework로 제작한 CreateTrend서비스의 API로 PostgreSQL Database와 연동되어있습니다.
이 프로그램을 사용하려면 자신의 IP가 CreateTrend 서버의 PostgreSQL 포트 인바운드 규칙에 추가되어야 합니다.
- Docker 설치
- Docker-compose 설치
$ sudo apt update
$ sudo apt install apt-transport-https ca-certificates curl software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
$ sudo apt update
$ apt-cache policy docker-ce
$ sudo apt install docker-ce
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
Docker로 구성된 서버에 Dockerfile,Docker-compose로 모든것을 정리해놓았습니다. 바로 실행할 수 있습니다.
- cd ./muna-4/createtrend/
- sudo docker-compose up -d --build django
- Model - 각 장고 프로세스가 PostgreSQL에서 데이터를 가져올 때 참조하는 모듈입니다.
- Serializer - 객체를 직렬화(JSON)할때 참조하는 모듈입니다.
- functions - views.py에서 사용하는 함수를 관리해주는 모듈입니다.
- urls - URI를 관리해주는 모듈입니다.
- Django rest framework - Django를 rest api framework로 활용할 수 있게 해주는 라이브러리입니다.
- ELASTICSEARCH_DSL - 각 Django process가 Elasticsearch와 연결되어 Django에서 Elasticsearch 데이터를 객체화하여 사용할 수 있게 해줍니다.
-
회원가입, 로그인, 로그아웃, 회원정보 업데이트를 담당하는 Application입니다.
-
knox(django third-party auth app) - 토큰 위주의 Authorization library입니다.
-
회원가입, 로그인 시 토큰이 발행됩니다.
-
해당 토큰을 가지고 인증 요청할 시 유저가 인증됩니다.
-
발행한 토큰의 유효기간은 하루입니다.
-
인기, 영상화 TOP10 키워드, 키워드에 대한 상세 정보, 추천 영상을 제공해주는 Application입니다.
-
인기, 영상화 TOP10을 Elasticsearch에 질의 후 가공하여 제공합니다. (collection 모듈을 사용하여 최빈 10개의 키워드 추출)
-
해당 키워드들의 상세 정보를 Elasticsearch에 질의 후 가공하여 제공합니다.
- 키워드 검색 시 해당 키워드의 상세 정보를 제공해주는 Application입니다.
- 워드맵, 해당 키워드의 인기,영상화 추이, 관련 키워드 TOP10 등을 Elasticsearch에 질의 후 가공하여 제공합니다.
- 채널검색, 채널 상세 정보, 기간별 상세정보를 제공해주는 Application입니다.
- 해당 어플리케이션의 시나리오는 검색 -> 상세정보 -> 기간별 상세정보 입니다.
- 채널에 대한 각종 정보를 PostgreSQL에 질의 후 제공합니다.
- 영상에 대한 상세 정보를 제공해주는 Application입니다.
- 해당되는 영상의 정보를 PostgreSQL에 질의 후 가공하여 제공합니다.
-
영상에 대한 조회수를 예측하는 Application입니다.
-
해당 어플리케이션의 시나리오는 원하는 컨텐츠 검색 -> 추천되는 썸네일과 제목 체크하기 -> 구독자수 입력하기 -> 예측해보기입니다.
-
해당되는 영상의 정보와 채널의 정보를 Elasticsearch에 먼저 질의하고, 해당 정보를 이용하여 PostgreSQL에 다시 질의합니다.
-
AI Server와 통신할 때 RabbitMQ 대용량 메시지 큐를 활용합니다.
-
데이터의 흐름은 다음과 같습니다.
데이터 요청 -> 큐 생성 -> 메시지 업로드 -> AI server에서 Listen하다가 메시지 받음 -> 처리 후 메시지 업로드 -> Django에서 데이터 받음 -> Response 제공
장고, 엘라스틱서치 등 중요 기능을 담당하는 부분은 삼중화를 통해 서버의 안정성을 확보하였고, 후에 Scale out에 용이하게 설계하였습니다.
CreateTrend 서버의 네트워크 환경입니다.
- Django - 웹 프레임워크(앱 서버)
- Django rest framework - 웹 REST 프레임워크
- Docker - 의존성 관리 프로그램
- Nginx - 웹 서버
- Gunicorn - 웹, 앱서버 통신 인터페이스
- django-elasticsearch-dsl - 장고-엘라스틱서치간 모델 관리 및 사용 라이브러리
- knox -토큰 기반 회원 인증 시스템 라이브러리
권준 (dydqja1013@naver.com)
the 3-clause BSD license 1 - Django, Nginx
MIT License - knox
Apache License 2.0 - elasticsearch-dsl, Docker