Post

[Tech] CDN & 테스트

[Tech] CDN & 테스트

면접cs

CDN

  • Content Delivery Network, 컨텐츠 전송 네트워크
  • 분산되어 있는 여러 서버에 컨텐츠를 캐싱하여,
    사용자와 가까운 곳에서 빠르게 전송하는 시스템

CDN의 탄생 배경

Image

  • 스트리밍 서비스가 발달하면서, 인터넷 대역폭의 주 컨텐츠가 비디오가 되었음.
  • 따라서, 비디오와 같이 큰 용량의 컨텐츠를 전송시 네트워크가 혼잡해질 우려가 생김.
  • 이를 위해, 물리적으로 가까운 서버에서 컨텐츠를 받을 수 있도록한 서비스가 대두됨.

CDN의 동작 방식

  1. 사용자가 특정 컨텐츠를 요청함.

    Image

  2. 사용자와 물리적으로 가까운 CDN 서버 선택

    Image

  3. 요청한 컨텐츠가 엣지 서버에 있는지 확인

    Image

  4. 캐시 히트 / 캐시 미스

    1. 캐시 히트: 컨텐츠가 있으면, 즉시 사용자에게 전송함.

      Image

    2. 캐시 미스: 컨텐츠가 없으면, 원본 서버에 요청하고 캐시에 저장하고 전송.

      Image

  5. 이후 동일한 요청이 오면, 빠르게 제공함.

    Image


CDN의 장점

  • 로딩 속도 향상
  • 서버 부하 감소
  • 대역폭 비용 절감
  • 보안 강화



테스트

  • 개발된 소프트웨어가 고객의 요구사항을 만족시키는지 확인(Validation)하고,
    소프트웨어가 기능을 정확히 수행하는지 검증(Verification)하는 절차

  • 테스트로 애플리케이션에 잠재되어 있는 결함을 찾아낸다.


테스트 예시

  • 디자인 안에 맞게 퍼블리싱 → 브라우저에서 렌더링 된 모습 확인
  • 데이터베이스에 데이터를 삽입하는 API → 호출 후, 데이터베이스 값을 검증
  • 새로운 기능 추가 → 기능을 추가하고 기존 모듈의 실행 결과 확인
  • 개발 환경에서 만들어진 애플리케이션 → 실제 배포 후, 문제가 없는지 확인

단위 테스트, Unit Test

  • 소프트웨어 설계의 최소 단위인 모듈이나 컴포넌트 단위로 테스트
  • 인터페이스, 외부적 I/O, 자료 구조, 오류 처리 경로, 경계 조건 등을 검사
  • 작성 비용이 적고, 실행 속도가 빠름
  • 발견할 수 있는 오류
    • 알고리즘 오류에 따른 예상치 못한 결과
    • 탈출 조건이 없는 반복문 사용
    • 틀린 계산 수식의 결과

사용 도구: Jest, Mocha, Jasmine 등…

  • 단위 테스트 방법
    • 구조 기반 테스트: 프로그램 내부 구조 및 복잡도 검증의 화이트박스 테스트
    • 명세 기반 테스트: 목적 및 실행 코드 기반의 블랙박스 테스트

통합 테스트, Integration Test

  • 단위 테스트가 끝난 모듈을 통합하는 과정에서의 테스트
  • 모듈 간 or 통합된 컴포넌트 간의 상호작용 오류를 검사

사용 도구: React Testing Library, Vue Test Utils 등…

  • 통합 테스트 방법
    • 하향식 통합 테스트: 상위 모듈에서 하위 모듈 방향으로 통합하여 테스트
      주요 모듈의 종속 모듈들은 스텁으로 대체하며 테스트
    • 상향식 통합 테스트: 하위 모듈에서 상위 모듈 방향으로 통합하여 테스트
      데이터 입출력을 확인하기 위해 더미 모듈인 드라이버를 작성함

E2E 테스트, End-to-End Test

  • 실제 사용자가 사용하는 것과 같이 전체 시스템을 테스트
  • API 서버, 데이터베이스 등을 모두 사용하여 통합된 시스템을 검사
  • E2E 테스트 예시
    • 회원가입부터 상품 구매 까지의 전체 플로우를 브라우저에서 실행하여 검증

사용 도구: Cypress, Playwright, Selenium 등..



✨ 출처

prepare_frontend_interview
컴퓨터네트워킹(8판), J. F. Kurose, K. W. Ross
정보처리기사 필기 시나공, 길벗


This post is licensed under CC BY 4.0 by the author.