학습용? 🙅♂️ 실제 서비스용 웹 서버 Django Boilerplat 🎁
웹상에선 실제 서비스에 적용하기 어려운 학습용 프로젝트가 대부분이다보니 Django를 조금이나마 더 알리고 싶어 이렇게 개발하게 되었습니다
그동안 Django로 다양한 서비스들을 개발하며 배우고 경험했던 것들을 이 Boilerplate 프로젝트에 최대한 반영하려 노력했습니다
💬 어떤 프로젝트인가요?
⤷ Django DRF를 이용한 웹 서버 백엔드 프로젝트
⤷ 학습용으로 기본적인 기능만 구현된게 아닌 실제 서비스용으로 필요한 기능 구현
⤷ 성능 및 운영에 문제가 되는 부분들을 모두 고려해서 개발
⤷ Swagger API 문서 및 README를 최대한 자세히 작성
⤷ Dockerfile, docker-compose 등을 이용한 자체 배포 코드 추가
⤷ Celery 및 Django hosts, White Noice 등 확장 기능 적용
⤷ 300개 이상의 유닛 테스트 등
💬 기능1: 회원 가입, 소셜 로그인 등
⤷ 이메일, 패스워드를 이용한 회원 가입/로그인, 이메일 검증, 패스워드 변경 등의 기본 기능
⤷ 프로필 등록, 약관 리스트 조회 및 동의, 사용자 선호 정보 저장 등
⤷ 필수 약관 변경 시 재동의를 위한 프로세스
⤷ JWT 토큰 발급, 재발급, 로그아웃 시 블랙 리스트 추가 등
⤷ 구글 소셜 로그인 및 이메일 통합 등
💬 기능2: 공지사항, 이벤트, FAQ 등 콘텐츠 관리
⤷ Django Filters 라이브러리를 이용한 세부적인 필터링 적용
⤷ 쿼리별 캐싱 및 페이징 등 기본적인 기능 구현
⤷ 등록일시, 표시 기간, 유효 기간 등 다양한 옵션 필드 구현
💬 기능3: 디바이스 및 푸시 토큰 관리
⤷ 프론트에서 생성한 고유한 디바이스 UUID를 저장하고 관리
⤷ 푸시 토큰은 사용자와 unique_together 설정하여 데이터 관리
⤷ 추후 AWS SNS를 이용할 수 있도록 미리 ARN Endpoint 등록
💬 기능4: 피드 관리
⤷ 피드 CRUD, 피드 댓글 CRUD 및 좋아요, 신고하기 등
⤷ 등록 및 수정, 좋아요, 신고하기 시 Throttling 을 적용해서 연속 호출 제한(429 오류 반환)
⤷ Cursor 페이지네이션을 이용해서 무한 스크롤 구현(페이징 사이에 중복 데이터가 없도록)
⤷ 데이터에 JS 스크립트가 포함된 경우 escape 처리하여 XSS 방어
⤷ 좋아요/신고 여부 및 베스트 댓글 등 반환 과정에서 필드 추가 등
💬 기능5: 대용량 파일 관리
⤷ 파일 업로드 시 서버에서 파일을 직접 올리지 않고 프론트에서 등록할 수 있도록 프리사인드 발급 기능
⤷ 업데이트 확인 및 다른 파일 또는 다른 사용자가 업로드 할 수 없도록 추가 보안 조치
⤷ 파일 다운로드 시 서버에서 다운로드하지 않고 프론트에서 직접 다운 받을 수 있도록 프리사인드 발급 기능
⤷ 파일 상태 및 만료 일시 관리, 만료 파일 제거 태스크 추가
💬 기능6: 게임 기능
⤷ 출석 체크 기능 구현, 다른 게임(동전 뒤집기, 랜덤 박스 등) 추후 추가 예정
⤷ 연속 출석 체크 및 연속 일수별 다른 포인트 지급 등의 기능 구현
⤷ 데이터베이스 부하를 고려해서 항상 빠르고 안정적으로 출석 체크 조회/시도할 수 있도록 최적화
⤷ 게임 포인트 지급 등
💬 기능7: 숏링크 관리
⤷ 항상 빠르게 숏키 생성할 수 있는 자체 로직 활용
⤷ Django Hosts 라이브러리를 이용해서 메인 서버에서 숏링크 생성, 서브 서버에선 리다이렉션 진행
⤷ 플랫폼별로 각각 다른 링크로 이동될 수 있도록 구현
⤷ og 태그를 커스텀할 수 있는 기능 등을 추가
⤷ 리다이렉션 기록 저장 등
💬 예정 사항
⤷ 본인 인증 및 수집 데이터 암호화하여 관리
⤷ 다양한 게임 기능 추가
⤷ 대량 푸시, 이메일 발송 기능 구현
⤷ 뉴스레터 서비스 구현
⤷ 회원 탈퇴 등
⤷ 간단히 검증할 수 있는 프론트 템플릿 추가
충분히 서비스를 시작하는 단계에서 활용할 수 있다고 생각해요 🧐
혹시 실제 적용하는데 어려움이 있으시거나 커스텀이 필요한 부분이 있다면 연락주세요 📧
감사합니다 🙇♂️