[Spring#67] 대용량 트래픽 발생 / ORM

김한준 Hanjun Kim·2024년 1월 15일
1

내일배움캠프

목록 보기
68/70

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

  1. 로드 밸런싱
  • 로드밸런싱(Load Balancing)은 트래픽이 많을 때 여러 대의 서버가 분산처리하여
    서버의 로드율을 증가, 부하량, 속도저하 등을 고려하여 분산처리 해결해주는 서비스이다.

  • 로드밸런싱을 해주는 소프트웨어 혹은 하드웨어 장비를 로드밸런서(Load Balancer) 라고 한다.

  1. 스케일 업과 스케일 아웃
  • 스케일 업은 수직적 팽창을 의미하며 서버 자체의 사양을 높일 때
  • 스케일 아웃은 수평적 팽창을 의미하며 서버 대수를 늘릴 때
  1. 트래픽 모니터링
  • 트래픽 패턴을 모니터랑하고 분석한다.
  • 어떤 유형의 트래픽이 증가하였는지, 어디에서 발생하고 있는지 파악하여 문제를 해결한다.
  1. 캐싱
  • 캐시를 통해 자주 사용되는 데이터 / 페이지를 메모리에 저장해둠으로써 서버의 부하를 감소시킨다.
  1. 데이터베이스 관리
  • 데이터베이스 쿼리를 최적화하고, 인덱싱을 잘 활용하여 데이터베이스의 부하를 줄인다.
  • 캐싱이나 샤딩 등의 기술을 활용한다.

ORM

  1. ORM이란?
  • "Object-Relational Mapping" 의 약자로 객체 지향 프로그래밍 언어와 관계형 데이터베이스 간의 데이터 변환을 자동화하는 기술이다.
  • ORM은 데이터베이스 테이블을 객체로 매핑하고, 객체 간의 관계를 유지하면서 CRUD를 도와준다.
  • 대표적인 프레임워크는 Django ORM, SQLAlchemy, Hibernate 등이 있다.
  1. ORM의 장단점
  • 장점
    • 간편한 사용
    • 객체 지향 프로그래밍과의 호환성
    • 데이터베이스 종속성 감소
  • 단점
    • 성능 문제 : 복잡한 쿼리나 대량 데이터 조작 작업을 할 때 SQL쿼리에 비해 성능이 떨어 질 수 있다.
    • ORM을 사용하려면 ORM에 대해 공부해야 한다.
  1. ORM을 사용하며 쿼리가 복잡해지는 경우 해결방법
  • Native SQL 사용
    • ORM이 제공하는 SQL을 직접 작성하여 최적화한다.
  • 인덱스 및 성능 최적화
    • ORM은 인덱스를 자동으로 처리할 수 있지만, 때로는 쿼리의 성능을 향상시키기 위해 데이터베이스 테이블에 적절한 인덱스를 수동으로 추가해야 한다.
  • 캐싱 활용
    • 자주 사용되는 쿼리나 데이터에 대한 캐싱을 활용하여 데이터베이스의 부하를 줄인다.
  • ORM 도구마다 특정한 기능이나 설정이 존재하고, 이를 활용한다.
profile
개발이 하고싶은 개발지망생

0개의 댓글