Django(DRF) 환경에서 MAU 최대 20만 이상의 서비스 회사에서 일했었음 (물론 ㅈ밥인거 맞음, 신입들 보고 참고하라고 쓰는거)
MAU 12만 정도까지는 거의 혼자서 백엔드 서버 관리했던 것 같음
1. 데이터 조작이 적고 조회가 많은 쿼리의 조건문에 들어가는 필드들에 인덱싱
2. ORM prefetch_related, select_related를 사용해서 n+1 문제를 해결
3. AWS EB 로드밸런싱으로 핫타임 스케일 업
4. WSGI 로드밸런싱으로 병렬적인 요청 처리
5. 복합 인덱스로 추천 알고리즘 쿼리 조회 시간 개선
6. 클라이언트에서 모델 데이터 버전 관리로 필요한 경우에만 업데이트 되게 작업
7. 읽기 전용 DB를 만들어서 단순 조회 쿼리 처리
8. prefetch_related나 select_related를 사용하기 어려운 경우에 for문으로 각 객체에 필드를 추가하고 시리얼라이저 필드에서 가져다 쓸 수 있게 처리
9. service 파일을 별도로 만들어서 비즈니스 로직 분리 => 유지보수 및 문제 찾기 용이
10. 데이터독 도입해서 병목이 되는 API 모니터링 후 개선
보통 AWS EB 지표 기준 평균 응답시간 300ms 이하로 유지했었음. 서버 비용은 AWS에서 한 달 평균 150만원 정도 나왔음
믓지다
ORM 뭐 씀?
그냥 Django ORM씀. SQLAlchemy 같은 다른 ORM보다 가독성도 좋고, 쿼리셋 같은거 만들 때도 편해서