[TIL] 대용량 트래픽, ORM

Cherry Jin·2024년 1월 29일
0

sparta_내배캠

목록 보기
45/53
post-thumbnail

대용량 트래픽 발생시 대응 방법

  1. 스케일아웃
  • 수평적 확장 : 서버의 수를 증가시켜 분산시킨다.
  • 로드밸런서를 사용하여 트래픽을 여러 서버에 분산시킬 수 있다.
  1. 캐싱
  • 자주 요청되는 데이터를 캐시에 저장하여 빠르게 제공한다.
  • 데이터베이스 부하를 감소시키고 응답 시간을 단축시킨다.
  1. CDN 사용
  • 정적 자원들을 CDN(Content Delivery Networt)를 통해 제공
  1. 데이터베이스 최적화
  • 쿼리 최적화
  • 인덱싱 - 자주 조회되는 컬럼에 인덱스 추가하여 검색속도 향상
  • 분산 데이터베이스 시스템 사용
  • Join 최적화
  • 데이터 정규화 및 비정규화
  • 배치 처리 Batch
  1. 자원 모니터링 및 자동 확장
  • 시스템 자원 사용량을 지속적으로 모니터링
  • 필요에따라 자동 확장 인프라 구축

ORM 사용시 쿼리 복잡도 해결 전략

  1. 쿼리 최적화
  • ORM을 사용하더라도 쿼리의 성능을 직접 분석하고 최저화하여야한다.
  • 실행 계획을 확인하고 필요없는 조인이나 데이터 요청을 제거한다.
  1. ORM과 SQL 병행
  • 복잡하거나 성능이 중요한 쿼리의 경우 ORM 대신 순수 SQL 쿼리 사용이 효율적일 수 있다.
  1. N+1 문제 해결
  • ORM 사용시 흔히 발생하는 성능이슈

  • 한번의 쿼리로 N개의 연관 객체를 가져오는 것이 아니라 N번의 쿼리가 실행되어 N+1번의 쿼리가 발생하는 현상.

    • 이 문제는 이번 프로젝트에 이미 일어나고 있는 것 같음.
    • 게시글과 댓글이 있는 경우, 각 게시글에 대해 댓글을 가져오는 별도의 쿼리가 실행되어 게시글 10개를 조회하는 1번의 쿼리 + 댓글 가져오는 10번의 추가 쿼리 실행하는지? 확인 필요
profile
풀스택이 되버린 주니어 개발자

0개의 댓글