Django 쿼리 최적화 방법들

백앤드 API의 성능을 개선하고 싶을 때 가장 만만한 곳이 데이터베이스 쿼리이다. Django에서 쿼리 최적화를 할 수 있는 부분을 정리해보자. Database 최적화 인덱스 인덱스를 추가하는 것은 가장 우선적으로 고려해볼만한 사항이다. Meta.indexes 또는 Field.db_index 를 사용하여 인덱스를 추가하고 filter, exclude, order_by 등을 사용하여 자주 쿼리하는 필드에 인덱스를 추가하면 조회 속도를 높일 수 있다. 일반적으로 인덱스를 속도가 향상되는 것은 맞지만 항상 좋은 것은 아니다. 일단 인덱스를 저장하기 위해 데이터베이스에 추가 저장 공간이 필요하며 많은 인덱스를 생성할 경우에는 부담이 될 수도 있다....

October 11, 2020 · 14 min

Django REST Framework(DRF) Serializer 뜯어보기

왜 DRF를 사용해야할까? Django REST Framework(DRF)는 RESTful API 개발을 위해 django 위에 추가된 라이브러리로 RESTful API 개발을 위해 필요한 공수를 줄여준다. API를 개발할 때 필요한 authentication, permission, throttling 등을 쉽게 구현할 수 있도록 해주는데 아래에 DRF에서 정의하는 settings만 봐도 API 개발에 필요한 것들을 쉽게 추가할 수 있음을 알 수 있다. DEFAULTS = { # Base API policies 'DEFAULT_RENDERER_CLASSES': [ 'rest_framework.renderers.JSONRenderer', 'rest_framework.renderers.BrowsableAPIRenderer', ], 'DEFAULT_PARSER_CLASSES': [ 'rest_framework.parsers.JSONParser', 'rest_framework.parsers.FormParser', 'rest_framework.parsers.MultiPartParser' ], 'DEFAULT_AUTHENTICATION_CLASSES': [ 'rest_framework....

June 3, 2020 · 6 min

Django 에서 요청이 처리되는 과정

Django의 서버가 실행되는 과정과 그 서버에 요청이 어떻게 처리되는지를 알아보자. Django 서버가 실행되는 과정 manage.py 커맨드가 실행되는 과정 runserver를 포함한 command가 실행되자마자 가장 먼저 manange.py 파일 내의 execute_from_command_line함수가 호출된다. command 명령어가 실행될 때는 크게 3가지 과정을 거치게된다. 설정 값을 불러오고 django.setup() 이 호출되고 command 가 실행된다. 위 과정이 실행되는 실질적인 로직은 django > core > management > __init__.py의 ManagementUtility.execute메소드에 정의되어있다. 첫번재로 설정 값을 불러오는 단계를 보자. 이 메소드가 정의된 __init__.py 파일에는 from django....

March 4, 2020 · 7 min