티켓팅 서비스는 특정 시간에 대량의 트래픽이 몰리는 특성을 가지고 있어, 성능 테스트가 필수적이라 생각했다. locust는 어떤 동작(Task)으로 서버에 부하를 가할 것인지 python 코드로 커스텀하는 것이 가능하고 재사용성이 높다는 장점이 있기 때문에 채택하게 되었다. locust를 통해 기능 테스트와 부하 테스트를 동시에 진행하였으며, 각 요청들의 평균 응답시간과 초당 요청 횟수(RPS)를 쉽게 살펴볼 수 있었습니다. 대규모 트래픽 테스트의 현실적 한계대규모 트레픽이라 함은, 초당 1,000개의 HTTP요청이 들어오는 경우를 의미한다곤 하지만 현실적으로 테스트를 해보기에는 불가능하다 생각하여, 작게나마 테스트를 진행해보고 문제를 해결해보자 라는 생각으로 접근하였습니다. 그런데 최대 500명으로..
1. 기본 개념@property를 사용하면, 메서드가 속성처럼 작동한다. 즉 값을 읽거나 쓸 때, 추가적인 로직을 실행할 수 있다.이를 사용하면 메서드 호출을 속성처럼 사용할 수 있으며, 캡슐화를 유지하면서도 더 직관적인 코드를 작성할 수 있다. 1-1. 사용하는 이유캡슐화 - 클래스 내부의 변수는 숨기고, 외부에서 간접적으로 접근하도록 허용.데이터 유효성 검증 - 값을 설정하거나 가져올 때, 검증 로직 추가 가능.인터페이스 유지 - 메서드를 속성처럼 보이게하여 직관적으로 사용가능코드의 유지 보수성 - 나중에 속성 접근에 로직을 추가하여도 기존의 인터페이스를 깨지 않음. 1-2. 구성 요소Getter: 속성 값을 가지고 오는 메서드 (@property로 데코레이트)Setter: 속성 값을 설정하는 메서드..
프로젝트에서 대량의 ListView를 구현해야 할 일이 생겼다. 과거에는 페이지네이션을 사용해 문제를 해결했다. 페이지네이션은 클라이언트가 한 번에 전체 데이터를 요청하는 대신, 필요한 만큼만 나눠서 가져오는 방식이다. 이를 통해 한 번에 처리해야 하는 데이터 양을 줄여서 성능을 개선할 수 있었다. 그러나 최근에 django-debug-toolbar를 알게 되면서 내가 작성한 코드가 성능 면에서 부족하다는 것을 깨달았다. 특히 API 호출과 SQL 쿼리 실행 과정에서 쿼리 수가 많아지는 문제를 발견했다. 이를 해결하기 위해 쿼리 수를 줄이는 방법에 대해 찾아보았다. Django ORM에서 쿼리 개수를 줄이면 성능을 크게 향상할 수 있다는 것을 알게 되었고, ORM 최적화 기법을 사용하면 데이터베이스에 대..
애플리케이션의 품질을 유지하고 버그를 사전에 예방하기 위해서 테스트 코드를 작성한다. 물론 처음 테스트 코드를 다뤄보고 이것저것 많은 시행착오와 어려움이 있었지만, 현재까지 사용해 본 프레임워크들을 기반으로 작성해 보려고 한다. pytest-django를 활용한 테스트 환경 구축장고는 기본적으로 unittest모듈을 사용하지만, 더 효율적으로 테스트를 하기 위해 pytest를 사용한다. pytest-django는 pytest와 django를 통합해 테스트 코드의 가독성과 확장성을 높여준다. pytest-django 설치 및 설정pip install pytest pytest-django설치가 완료되면 pytest.ini 파일을 생성해 pytest 설정을 추가해 준다.[pytest]DJANGO_SETTING..
AWS 공부를 하면서 읽기 전용 데이터 베이스라는 것을 알게 되었고, 실습을 하면서 Django 프로젝트에 적용시킨 방법에 대해 정리해보려 한다. 아래의 내용은 AWS를 이용하여 읽기 전용 데이터베이스를 구현한 내용이다. [AWS] RDS 읽기 복제본 - 읽기 트래픽 분산RDS 읽기 전용 복제본을 생성하고 서버에 트래픽을 분산할 수 있도록 해보자. 읽기 전용 복제본 읽기 전용 복제본 생성을 위해 RDS 콘솔의 데이터베이스로 이동, Actions을 보면 읽기 전용 복제본jongseoung.tistory.com 데이터 베이스 설정Settings.py 변경Django의 여러 데이터베이스를 사용하기 위해서 settings.py의 DATABASES 설정을 변경하여준다. default는 쓰기 전용, replica는..