반응형

사용자가 많아지고 트래픽이 많아질고 시스템 스케일링이 필요해지는 시점이 오면 데이터베이스 캐싱에 대한 고민을 하게된다.

이번 포스팅에서는 데이터베이스 캐싱 전략에 대해 알아보고자 한다

 

 

먼저 들어가기에 앞서 Cache Hit을 알아보자

 

Cache hit 이란?

찾으려는 데이터가 캐쉬에 저장되어 있어 데이터베이스를 거치지 하고 캐쉬에서 바로 데이터를 가져오는 형태.

Cache hit이 많이 발생할수록 데이터 베이스에 대한 부담이 줄어든다.

 

Cache-Asdie

일반 적인 형태의 캐쉬로 어플리케이션이 캐쉬업데이트 업데이트 담당.

캐쉬에 먼저 쿼리문을 보내고 캐쉬에 데이터가 없을시 데이터베이스에서 데이터를 가져온후 캐쉬에 데이터를 업데이트 한다

 

 

장점

1. 데이터베이스 데이터 모델과 캐쉬의 데이터 모델이 다르게 저장 가능

2. 캐쉬 서버가 다운되도 데이터베이스에서 데이터를 가져올수있다.

3. Lazy Loading 

 

단점:

1. 데이터와 캐쉬간의 데이터 불일치 발생 가능성. (Time to live 값을 설정하거나 캐쉬를 무효화하는 전략 수립 필요)

2. 어플리케이션이 캐쉬관리 담당

 

Read-Through (동기적 처리)

캐쉬에 데이터가 없으면 원본 데이터 소스에 접근해서 데이터를 가져오고 캐쉬에 저장

 

장점:

1. Lazy Loading 

2. 어플리케이션이 캐쉬를 관리하지 않음

 

단점:

1. 최초로 데이터를 요청한 사람의 응답속도가 느림.

 

 

Write-Through (동기적 처리)

캐쉬가 데이터베이스와 어플리케이션 사이에 위치하고 있고 캐쉬에 데이터를 저장하고 데이터베이스 이어서 바로 저장.

Read through 전략과 같이 이용되면 Cache Hit 확률을 높일수 있다.

 

장점:

1. Write-Behind 보다 데이터 유실 위험 적음

단점

1. 캐쉬와 데이터베이스에 동시에 저장하기때문에 느린 쓰기 속도

 

 

Write-Behind (비동기적 처리)

캐쉬에만 데데이터를 저장하고,  데이터 소스에는 별도의로 주기적으로 저장하는 방식

장점

1. Write-Through 보다 향상된 쓰기 속도

2. 데이터베이스에 대한 부담을 줄일

 

단점

1. Cache 가 다운되면 데이터 유실 위험

 

 

 

 

반응형
반응형

소프트웨어 테스트의 기본: 5가지 핵심 테스트 유형 이해하기

소프트웨어 개발에서 테스트는 제품의 품질을 보장하는 핵심 요소입니다. 이 글에서는 소프트웨어 테스트의 5가지 주요 유형을 자세히 살펴보고, 각각의 중요성과 적용 방법에 대해 알아보겠습니다.

1. 단위 테스트 (Unit Test)

단위 테스트는 소프트웨어 테스트의 가장 기본적인 형태입니다. 개별 컴포넌트나 함수가 의도한 대로 작동하는지 확인하는 과정입니다.

주요 특징:

  • 코드의 가장 작은 단위를 테스트
  • 외부 의존성은 스텁(stub)이나 목(mock)으로 대체
  • 빠른 실행과 즉각적인 피드백 제공
  • 버그를 조기에 발견하고 수정 가능

예를 들어, 사용자 등록 함수를 테스트할 때는 데이터베이스 연결 없이 함수 자체의 로직만 검증합니다.

2. 통합 테스트 (Integration Test)

통합 테스트는 여러 컴포넌트가 함께 잘 작동하는지 확인합니다. 실제 환경과 유사한 조건에서 컴포넌트 간의 상호작용을 테스트합니다.

핵심 포인트:

  • 컴포넌트 간의 인터페이스 검증
  • 데이터 흐름 확인
  • 실제 환경의 문제 조기 발견
  • 시스템 통합 문제 식별

예시로, 사용자 등록과 이메일 발송 시스템의 연동을 테스트하는 경우가 있습니다.

3. 회귀 테스트 (Regression Test)

회귀 테스트는 새로운 변경사항이 기존 기능에 영향을 미치지 않는지 확인합니다. 소프트웨어 품질 유지에 매우 중요한 역할을 합니다.

중요성:

  • 기존 기능의 정상 작동 보장
  • 예상치 못한 부작용 방지
  • 지속적인 품질 관리
  • 변경 관리의 안전성 확보

버그 수정이나 새로운 기능 추가 후에는 반드시 회귀 테스트를 실시해야 합니다.

4. 스모크 테스트 (Smoke Test)

스모크 테스트는 시스템의 기본적인 기능이 작동하는지 빠르게 확인하는 테스트입니다. '빌딩이 불타고 있지 않은지' 확인하는 것과 같습니다.

특징:

  • 빠른 실행
  • 치명적인 문제 조기 발견
  • 배포 전 기본 검증
  • 개발 파이프라인의 첫 단계

예를 들어, 웹 애플리케이션의 경우 기본 페이지 로드와 로그인 기능을 확인하는 것이 스모크 테스트에 해당합니다.

5. 시스템 테스트 (System Test)

시스템 테스트는 전체 시스템이 실제 운영 환경에서 정상적으로 작동하는지 확인합니다. 최종 사용자의 관점에서 진행되는 종합적인 테스트입니다.

주요 검증 사항:

  • 전체 시스템의 기능성
  • 성능 및 안정성
  • 보안 요구사항
  • 사용자 경험

실제 사용자 시나리오를 기반으로 전체 시스템의 동작을 검증합니다.

결론

효과적인 소프트웨어 테스트를 위해서는 이러한 다양한 테스트 유형을 적절히 조합하여 사용해야 합니다. 각 테스트는 서로 다른 관점에서 시스템을 검증하며, 이를 통해 높은 품질의 소프트웨어를 제공할 수 있습니다.

테스트 자동화와 지속적인 통합(CI/CD) 환경에서 이러한 테스트들을 효율적으로 구현하고 실행하는 것이 현대 소프트웨어 개발의 핵심 요소입니다.

반응형

+ Recent posts