1. 백엔드 성능 최적화 방법을 설명해주세요
  2. 데이터베이스 쿼리 최적화를 위한 방법을 설명해주세요
  3. Redis의 주요 사용 사례를 설명해주세요
  4. 캐시 매커니즘을 설명하고 캐시를 사용하는 이유를 이야기해주세요
  5. CDN이 무엇이며 성능 최적화에 어떤 기여를 하는지 설명해주세요

1. 백엔드 성능 최적화

백엔드 성능 최적화 방법을 설명해주세요

데이터베이스 최적화

  • 인덱스 사용 : 자주 사용하는 쿼리에 인덱스를 설정하여 검색 속도 향상
  • 쿼리 최적화 : 불필요한 데이터 접근을 줄이고 쿼리 성능을 분석하여 개선
  • 캐싱 : 자주 조회되는 데이터를 메모리에 캐싱하여 데이터베이스 접근을 줄임
  • 조인 최적화 : 복잡한 조인 대신 정규화 또는 비정규화 고려

어플리케이션 레벨 최적화

  • 코드 프로파일링 : 애플리케이션의 병목 지점을 찾아 성능 개선
  • 비동기 처리 : I/O 작업을 비동기로 처리하여 애플리케이션의 응답성 향상
  • 다중 스레드 및 병렬 처리

캐싱

  • 애플리케이션 캐시
  • 분산 캐시 : Redis와 같은 분산 캐시 시스템을 사용하여 성능 향상

로드밸런싱

  • 수평 확장 : 여러 서버에 트래픽을 분산하여 부하 감소

CDN 사용

  • 정적 콘텐츠 캐싱 : 이미지, CSS, JS 파일 등 정적 리소스를 CDN에 저장하여 서버 부하 감소, 콘텐츠 제공 속도 향상

2. 데이터베이스 쿼리 최적화

데이터베이스 쿼리 최적화를 위한 방법을 설명해주세요

인덱스 사용

  • 적절한 인덱스 생성 : 자주 사용되는 컬럼에 인덱스를 생성하여 검색 속도 향상
    • where, join이 자주 사용되는 컬럼에 인덱스 설정
  • 복합 인덱스 : 여러 컬럼을 조합하여 인덱스 생성

쿼리 리팩토링

  • 필요하지 않은 컬럼을 select 절에서 제외하여 데이터 전송량 감소
  • 서브쿼리 대신 조인 사용

데이터 정규화 및 비정규화

  • 정규화 : 데이터 중복을 줄이고 데이터 무결성 유지
  • 비정규화 : 성능이 중요한 경우 일부 데이터를 비정규화하여 조회 성능 개선

쿼리 캐싱

  • 동일한 쿼리가 반복적으로 실행되는 경우 쿼리 결과 캐싱

파티셔닝

  • 테이블 파티셔닝 : 큰 테이블을 여러 파티션으로 나누어 데이터 액세스 속도 향상, 효율성 향상
  • 인덱스 파티셔닝

배치 쿼리

  • 배치 쿼리를 사용하여 트랜잭션 오버헤드 감소

3. Redis

Redis의 주요 사용 사례를 설명해주세요

Redis

  • 고성능, 오픈소스 인메모리 데이터 구조 저장소

  • 캐싱 : 자주 사용되는 데이터베이스 쿼리 결과를 Redis에 저장하여 응답 속도 향상

    • 웹 페이지 및 세션 데이터 캐싱 : 자주 방문하는 웹 페이지나 사용자 세션 데이터를 Redis에 캐싱하여 빠른응답제공
  • 세션 관리 : 사용자 세션 데이터를 저장하고 관리하는데 사용, 세션 만료 기능 활용

  • 실시간 분석

  • 메시지 큐 : pub/sub 기능 사용

  • 리더보드 : sorted set을 사용해 랭킹과 리더보드 구현

  • 분산락 : 동시성 문제 해결

  • 이벤트 소싱

Redis를 사용한 경험에 대해 말씀해주세요

4. 캐시 매커니즘

캐시 매커니즘을 설명하고 캐시를 사용하는 이유를 이야기해주세요

캐싱

  • 자주 접근하는 데이터나 연산 결과를 임시 저장해두어 이후에 같은 데이터를 요청할 때 더 빠르게 제공하기 위한 저장소
  • RAM을 사용해 속도가 빠르며 데이터베이스나 파일 시스템보다 훨씬 빠르게 데이터 제공 가능

캐싱 단계

  1. 캐시 조회 : 캐시에 데이터가 있는지 확인, 데이터를 찾으면 즉시 반환(캐시 히트)
  2. 원본 저장소 조회 : 캐시에 데이터가 없으면(캐시 미스) 데이터베이스나 원본 저장소에서 조회
  3. 캐시 업데이트 : 원본에서 가져온 데이터를 캐시에 저장하여 다음 요청시 빠르게 접근
  4. 데이터 반환 : 최종적으로 데이터 반환

사용 이유

  • 응답 속도 향상
  • 서버 부하 감소

5. CDN

CDN이 무엇이며 성능 최적화에 어떤 기여를 하는지 설명해주세요

CDN (Content Delivery Network)

  • 콘텐츠 전송 네트워크
  • 지리적으로 분산된 서버 네트워크
  • 사용자와 가장 가까운 서버에서 콘텐츠를 제공함으로써 웹 페이지 로딩 시간을 줄이고 서버 부하 분산
  • 주로 정적 콘텐츠를 캐싱하여 빠르고 안정적으로 전송하는 데 사용
  • 사용자마다 다른 데이터(뉴스, 날씨 등) 동적 콘텐츠 전송

CDN 최적화

  • 콘텐츠 전송 속도 향상 : 사용자 위치와 가까운 CDN 서버에서 콘텐츠 제공, 네트워크 지연 시간 감소
  • 서버 부하 분산 : 원본 서버에 대한 요청 수 감소
  • 대역폭 비용 절감 : CDN서버가 직접 콘텐츠를 제공하여 원본 서버에서 전송되는 비용 절감

단점

  • 비용 증가