본문 바로가기

Django/Django REST framework23

Django 코드 품질 향상시키기(with black, isort, flake8, pre-commit, makefile) Django pycharm black 세팅하기 0. black Black은 Python 코드 포맷터로, 코드를 일관되고 깔끔하게 유지하는 데 사용됩니다. Black은 "The uncompromising code formatter"라는 슬로건을 가지고 있으며, 개발자가 스타일 가이드에 대해 신경 쓸 필요 없이 자동으로 코드를 깔끔하게 정리해 줍니다. Black은 PEP 8-Python의 공식 스타일 가이드를 기반으로 하되, 몇 가지 스타일 선택을 추가로 제공합니다. Black의 주요 특징: 결정적 포맷팅: 동일한 코드에 대해 항상 같은 결과를 제공합니다. 코드의 가독성 증진: 긴 줄을 적절하게 분할하고, 여러 스타일 요소를 자동으로 조정하여 코드의 가독성을 향상시킵니다. 손쉬운 통합: Git 훅, 편집기 .. 2024. 4. 22.
DRF throttling 사용기 스로틀링 개념 스로틀링은 특정 기간 동안 시스템 또는 장치가 만들 수 있는 요청 수를 제한하는데 사용되는 기술입니다. 제한을 사용하는 데는 다음과 같은 몇가지 이유가 있습니다. 시스템 또는 네트워크의 과부하를 방지하려면 : 시스템이 한 번에 너무 많은 요청을 받으면 과부하 상태가 되어 모든 요청을 효과적으로 처리할 수 없습니다. 스로틀링은 시스템이 용량 제한 내에서 유지되도록 하는 데 도움이 됩니다. 악의적인 활동으로부터 보호하기 위해 : 경우에 따라 과도한 요청으로 시스템을 압도하려는 악의적인 공격에 대한 방어 수단으로 제한을 사용할 수 있습니다. 가능한 요청 수를 제한함으로써 시스템은 이러한 공격을 더 잘 견딜수 있습니다. 예를 들면 음식검색 API를 만들었는데 초당 막 1만회 요청이 들어오면 이것을.. 2023. 1. 8.
15. Throttling Throttling은 요청이 승인되어야 하는지 여부를 결정하는 점에서 permissions와 유사합니다. throttling은 임시 상태를 나타내며 클라이언트가 API에 대해 수행할 수 있는 요청 속도를 제어하는 데 사용됩니다. permissions와 마찬가지로 여러 개의 throttles를 사용할 수 있습니다. API에는 인증되지 않은 요청에 대한 제한적인 조절 기능이 있고 인증된 요청에 대해서는 덜 제한적인 제한이 있을 수 있습니다. 여러 throttle을 사용하려는 또 다른 시나리오는 일부 서비스가 특히 리소스를 많이 사용하기 때문에 API의 다른 부분에서 서로 다른 제약 조건을 적용해야 하는 경우입니다. 버스트 조절 속도와 지속 조절 속도를 모두 적용하려는 경우에도 여러 조절을 사용할 수 있습니다.. 2022. 8. 25.
Sendbird를 이용한 DRF 채팅서버 구현 채팅 서버를 구현하기위해 고민한 사항들 내부적으로 구현 vs 써드파티를 사용해서 구현 내부적으로 구현 내부적으로 구현할 경우 Django에서 제공하는 Django channels라이브러리 라는것을 이용해 WebSocket프로그래밍을 진행하려고 했습니다. 이러면 장점과 단점이 있는데 장점은 직접 개발 구현을 해서 특정 어플리케이션을 이용하는 것에 대한 비용처리가 없고, 커스텀에도 용이합니다. 하지만 단점은 모든 것을 다 새로 구현하기 때문에 시간(학습에 대한 시간 + 구현에 대한 시간)이 오래 걸리고, 서버 혹은 데이터베이스와 같은 관리도 직접 만들어야 합니다. 써드파티를 통한 구현 채팅을 제공해주는 어플리케이션을 찾던 중 Sendbird라는 메시징 서비스 솔루션을 발견했습니다. sendbird는 UI K.. 2022. 6. 24.
Django FCM 개발(DRF) FCM이란 FCM은 무료로 메시지를 안정적으로 전송할 수 있는 교차 플랫폼 메시징 솔루션입니다. FCM을 사용하면 새 이메일이나 기타 데이터를 동기화할 수 있음을 클라이언트 앱에 알릴 수 있습니다. 이렇게 알림 메시지를 전송하여 사용자를 유지하고 재참여를 유도할 수 있습니다. 채팅 메시지와 같은 사용 사례에서는 메시지로 최대 4,000바이트의 페이로드를 클라이언트 앱에 전송할 수 있습니다. FCM :https://firebase.google.com/docs/cloud-messaging?hl=ko Django에서 FCM이용하기 FCM 세팅하기 fcm-django, pyfcm, django-fcm등 많은 라이브러리들이 있었는데 저는 firebase-admin을 사용했습니다. firebase-admin을 먼저.. 2022. 3. 1.
DRF 테스트코드 개발 도전기 Test Code를 작성하는 이유 먼저 테스트 코드에 대해서 설명하기 전에 Jacob Kaplan-Moss라는 분이 테스트가 없는 코드는 잘못 설계된 코드입니다. 라는 말을 했습니다. 또한 테스트 코드를 작성하면 좋은 점은 잘 동작하고, 깔끔한 코드를 얻기위해서, 또한 시간을 단축해 줍니다. 저도 마찬가지로 테스트 코드를 작성하기 전에 매일.. Postman으로 테스트를 했는데 이 과정은 매우 번거로울 뿐 아니라 매우 비효율 적이라고 생각을 했습니다. 그래서 테스트코드를 작성하면 Postman으로 1개의 api를 테스트 할 시간에 수십개~수백개의 테스트 케이스를 테스트 할 수 있다고 생각 해서 Test 코드를 개발 했습니다. DRF Test 코드 작성하기 setUp 작성하기 DRF에서는 다양한 test를.. 2021. 12. 17.