프로젝트 소개
DRF를 독창적이고 개인화된 설정으로, 처음 Django를 접할 때 사용하는 기본적인 설정에 관한 내용은 공식 문서에 많지만 막상 프로젝트를 진행하기 전에는 파일 구조부터 공식 문서의 내용과는 많이 달라졌고, 이후 프로젝트에서 initialize_django를 복사해서 편리하기 진행할 수 있도록 하는 것을 목표로 했다.
- Python 3.11
- Django 5.0.4
- Django REST Framework 3.15.1
- Communication
- Githb
- Noction
- Discord
구현 기능
- AUTH: JWT를 이용하여 인증 및 권한 관리
- BOARD: 기본적인 CRUD
- 환경 변수 관리: Django-environ 사용
- 보안적인 요소를 고려하여 환경 변수를 효율적으로 관리
- 민감한 정보(예: 데이터베이스 비밀번호, API 키, 시크릿 키 등)를 소스 코드에 직접 포함시키지 않고, 환경 변수 파일을 사용하여 관리
- LOGGING
- 개발환경: 콘솔에 DEBUG 레벨 출력, ERROR이상은 errors.log에 기록
- 배포환경: 파일에 DEBUG 레벨 출력, ERROR이상은 errors.log에 기록
- CUSTOM PAGINATION
- 커스텀 페이지네이션 기능 구현
- CUSTOM EXCEPTION
- 프로젝트의 특성과 요구사항에 맞게 커스텀 예외 처리를 구현
- 특정한 상황에서 발생할 수 있는 예외들을 정의하고, 이를 효과적으로 핸들링하여 사용자에게 적절한 에러 메시지를 제공하는 기능을 구현
- 예외 발생 시 로깅 및 알림 기능을 추가하여 문제 해결을 용이하게 함
- CUSTOM RESPONSE
- 클라이언트가 일관된 방식으로 데이터를 처리할 수 있도록 응답 데이터의 형식을 통일하고, 필요한 경우 추가 정보를 포함한 응답을 제공하기 위해 커스텀 응답 처리를 구현
- CUSTOM RENDER
- 데이터의 렌더링 방식을 커스터마이징하여 클라이언트에게 최적화된 포맷으로 데이터를 제공
- RESPONSE를 사용중이므로 현재 비활성화 상태
- CUSTOM JWT TOKEN
- 기본적인 JWT 토큰 외에, 프로젝트 요구사항에 맞는 커스텀 JWT 토큰 기능을 구현
- 토큰의 유효 기간, 클레임, 시크릿 키 등을 설정하고, 토큰 갱신 기능
- 토큰 검증 절차를 강화하여 보안성을 높이고, 토큰과 관련된 각종 예외 상황을 처리합니다.
- SWAGGER
- API 문서화를 위해 drf-yasg를 사용하여 Swagger 설정을 구성
- API 엔드포인트를 시각화하고, 인터랙티브 문서를 제공
- GITHUB
- Pre-commit 설정
- Issues 관리
- PR (Pull Request) 관리
- Labels 설정
프로젝트를 통해 얻은 결과와 성과
기술적인 능력
사실 기술적인 내용은 구현 기능에 대한 내용들인데, 많이 접해본 부분도 있고 처음보는 영역도 있었다.
Django의 기본적인 설정들과 기능들에 대해서 내가 작성한 코드를 다시한번 검토하고 효율성을 높이는 기회가 되었고, 미들웨어나 믹스인 JWT, view와 serializer에 대한 이해도를 높일 수 있었다. 새로운 부분에 대해서는 처음부터 학습하고 적용해나가는 과정을 통해 기술적인 영향을 넓힐 수 있었다. 특히, 커스터마이징 관련한 내용들은 정말 많은 도움이 되었던 것 같다.
소통하는 기술
매주 혼자 공부를 하다보니 삽질을 하는 경우도 많았고 내가 짠 코드가 어디가 부족한지 어떤 부분이 잘못되었는지도 제대로 알지 못한 채 공부를 하였는데, 짝 매칭을 통해 짝과 리뷰 및 토론을 진행하고 주간 회의를 통해 매주 화요일 저녁 9시마다 자신이 일주일 동안 한 내용에 대해서 발표하는 방식으로 진행하니 잘못된 코드를 짚어주고 같이 고민해 줄 수 있는 사람이 있다는 게 얼마나 좋은 기회인지 알게 되고, 같은 프로젝트를 하더라도 다른 생각 다른 접근 방법이 있다는 것, 자신의 생각에 대해서 다른 사람에게 명확하게 표현하는 방법과 의견을 제시하는 방법에 대해서 많이 배운것같다.
잘한 점, 아쉬운 점
개인적으로 아쉬운 점
아쉬운 점이라고 하면 프로젝트 기한을 못 맞춘 점이 큰 것 같다. 일주일로 잡았는데 새로운 영역을 공부를 하다 보니 기술에 대한 욕심이 나서 조금 더 해볼까? 조금만 하면 더 좋은 코드를 찾을 수 있을 것 같은데 라는 생각이 들어서 진행하다 보니 기한을 넘긴 부분이 아쉬웠던 것 같다.
잘한 점
BackDjango 스터디를 하면서 이 프로젝트를 통해 다른 사람들이 어떻게 공부하는지 알 수 있었다는 점이 정말 잘한 점인 것 같다. 혼자 공부하면서 내가 맞게 공부하고 있는지, 잘하고 있는지에 대한 의문이 많았는데, 이번 기회를 통해 내가 잘하고 있는 부분과 부족한 부분을 찾을 수 있었다. 이를 통해 더 나은 공부 방법을 찾아가고 성장할 수 있을 것 같다는 생각이 든다.
마치며
처음에는 일주일이라는 기간을 가지고 프로젝트를 진행하였으나, 공부를 하면 할수록 Django의 기본에 대해서 많이 부족하다고 느꼈고 공부해야 할 내용들이 눈에 들어왔고 그렇게 하나하나 공부하다 보니 한 달이라는 시간이 걸려서 프로젝트를 마무리하게 되었다. 물론 예상했던 프로젝트 기한을 넘기게 된 건 슬프지만, 프로젝트 기한을 조금 늘림으로써 그 이상의 가치를 얻었다고 생각하여 기분이 좋다.
프로젝트를 시작할 초기에는10명가량되는많은 인원이 모여서 각자의 레포를 만들어 진행하였으나, 시간이 지날수록 많은 사람들이 나가게 되면서 소수의 인원만 남았다는것도 조금 아쉽긴하다. 아무래도 각자 생각하고 목표했던 방향과는 조금 달라서 그랬던게 아닌가 싶다. "나도 처음에는 따라 갈 수 있을까" 라는 생각을 했던것 역시 사실이니깐.. 그래도 이렇게 마무리를 하면서 회고록을 작성하다보니 이런 저런 생각이 많이든다. 처음에는 다른분들의 코드를 보면서 이해하기 바뻤는데, 이제는 구현한 내용을 보면서"이 부분이구나!"라는생각을 할 수 있게 되었다.
이번 프로젝트를 통해 얻은 지식과 경험은 분명 나에게 큰 자산이 되었고, 앞으로 개발을 하면서 많은 도움이 될 것 같다. 또한, 프로젝트를 함께 진행하면서 코드를 리뷰해 주고 같이 고민해 준 팀원들에게도 감사의 인사를 전하며, 앞으로도 더 많은 도전과 성장을 할 수 있길 기원합니다! 다음 스터디 프로젝트도 잘 부탁드립니다.
프로젝트 관련 블로그 글
'BackEnd > Django, DRF' 카테고리의 다른 글
[DRF] Django로 일간 및 주간 조회수 구현하기: 코드 예제 (0) | 2024.06.04 |
---|---|
[JWT] Custom JWT 관련 middleware와 backend (0) | 2024.05.31 |
[Custom] Custom Logging Mixin With CRUD Mixin (0) | 2024.05.23 |
[Custom] Django와 CustomJWT로 안전한 인증 시스템 구축하기 (0) | 2024.05.23 |
[Custom] Django와 DRF에서 커스텀 예외처리하기(custom_exception) (0) | 2024.05.16 |