본문 바로가기
반응형

전체 글105

🚀 Django REST Framework (DRF) - Serializer가 Response를 만들기까지 Serializer Core에 대하여 🏗️ Django 기본 요청 흐름 (Request Flow)Django에서 HTTP 요청이 처리되는 기본적인 흐름을 살펴보자.HTTP 요청 → 서버 & 네트워크 장치 → WSGI (or ASGI) → HttpRequest → Django Middleware →[ 비즈니스 로직 ] → HttpResponse → Django Middleware → WSGI Handler → HTTP 응답 이 중에서 가장 중요한 부분은 비즈니스 로직을 처리하는 부분이다.Django REST Framework(DRF)를 사용할 경우, 이 과정에 Serializer와 generics 기반 View가 추가된다! 🚀📥 HTTP 요청 ⬇ 🌍 WSGI/ASGI 서버 (Gunicorn, Daphne 등) ⬇ .. 2025. 2. 27.
🐜 Locust: 부하 테스트의 끝판왕! 🏃‍♂️ Locust란?Locust는 Python 기반의 오픈소스 부하 테스트(Load Testing) 프레임워크입니다.쉽고 가볍지만 강력하며, 수천~수만 개의 동시 요청을 시뮬레이션할 수 있어요! "부하 테스트"란? 🤔실제처럼 많은 사용자가 몰려왔을 때, 서버가 잘 버티는지 테스트하는 것!다른 부하 테스트 도구도 있지만, Locust는 다음과 같은 강력한 장점이 있어요. 🏆 왜 Locust인가? (장점!)Python 코드로 사용자 시뮬레이션 가능 (스크립트 기반이라 유연함)웹 UI 제공 → 실시간 테스트 진행 상황 확인 가능분산 실행 지원 → 여러 대의 머신에서 동시에 테스트 가능초당 수천 개 이상의 요청을 쉽게 처리 가능🔥 Locust 기본 예제 코드아래는 Locust를 활용해 간단한 부하 테.. 2025. 2. 27.
ElastiCache(Redis) Redis Insight EC2를 활용하여 접근하기 ElastiCache란?쉽게 말해, "엄청 빠른 메모리 저장소" 라고 보면 됩니다.우리의 데이터가 마치 뇌 속 단기 기억처럼 순식간에 접근 가능하도록 해주는 역할을 하죠.ElastiCache에는 두 가지 대표적인 친구가 있어요:Redis: 강력한 기능 + 인메모리 데이터베이스Memcached: 단순한 캐싱 전용Redis의 보안 철칙 🔒Redis는 기본적으로 외부 접근이 불가능합니다.이거 마치 비밀기지 같은 느낌이죠.예를 들면, MySQL 같은 데이터베이스는 Public IP를 부여받아서 외부에서도 접근할 수 있는데,Redis는 그런 거 안 됩니다! ❌🙋‍♂️ "아니, 그러면 외부에서 Redis에 어떻게 접근하죠?"💡 답: SSH Tunneling을 쓰면 됩니다!SSH Tunneling이란? 🕵️‍.. 2025. 2. 26.
하나? 여러 개? 대량? 😵 DRF Serializer 활용법 총정리! DRF Serializers: 데이터 포맷의 마법사 🧙‍♂️Django REST Framework(DRF)의 시리얼라이저(Serializer)는 REST API에서 데이터를 주고받기 쉽게 변환해주는 만능 해결사입니다. "데이터가 뭐라고? 난 그냥 Python 객체를 보내고 싶을 뿐인데!"DRF: "걱정 마세요, JSON으로 바꿔 드릴게요!"😎  📌 DRF 시리얼라이저의 역할서로 다른 환경에서도 데이터를 원활히 통신할 수 있도록 변환합니다.복잡한 데이터를 JSON, XML 등 친숙한 포맷으로 변신시킵니다.Django에서 사용하는 파이썬 객체나 queryset을 REST API에서 사용할 수 있도록 변환합니다.보너스로 데이터 유효성 검사 같은 기능도 제공하죠! 🚀1.  왜 Serializers를 써야.. 2025. 2. 24.
Django ORM 최적화: GenericForeignKey를 활용한 데이터 모델링 문제 사항커뮤니티 관련 사이드 프로젝트를 진행하면서 모델링에서 발생한 문제를 정리해보려고 합니다.예를 들어, 댓글 기능을 글, 사진, 비디오 등 다양한 콘텐츠에 적용할 수 있는 서비스를 만든다고 가정해봅시다.이 경우, 댓글을 저장하는 테이블이 있고, 이를 각각의 콘텐츠(글, 사진, 비디오) 테이블과 개별적으로 연결해야 하는 문제가 발생합니다.즉, 매번 새로운 콘텐츠 모델을 추가할 때마다 댓글 테이블과 별도의 관계(ForeignKey)를 설정해야 하는 불편함이 생깁니다.이 문제를 해결할 방법을 고민하던 중, Django의 GenericRelation을 활용하면 유연한 설계가 가능하다는 것을 발견했습니다.이번 글에서는 GenericRelation을 적용하기 전 테스트했던 코드와 함께, 어떻게 더 효율적으로 .. 2025. 2. 19.
View가 깔끔해지는 Django 필터링 전략! get_queryset() vs filter_queryset() 문제 상황새로운 프로젝트를 진행하던 중, 회사의 레거시 프로젝트를 살펴볼 기회가 있었다.기존 방식대로 문제를 해결할 수도 있었지만, 개인적으로는 View에 모든 비즈니스 로직이 집중되면 가독성과 유지보수성이 떨어진다고 판단했다.따라서 Django의 filter를 활용하여 파라미터별로 필요한 조건을 동적으로 적용할 수 있도록 구현하는 것이 더 적절하다고 결정했다. 사실 위의 내용들은 각각 쿼리 파라미터의 값들에 맞춰서 적절하게 조건이 나눠지면 된다. 해결 방안from django_filters.rest_framework import filterset, filtersclass UserFilter(filterset.FilterSet): locations = filters.CharFilter(method=.. 2025. 2. 18.
반응형