티스토리 뷰

1. 프레임워크와 라이브러리 차이점에 대해 설명해주세요.

프로그래밍에서 프레임워크와 라이브러리는 비슷한 기능을 제공하지만, 다음과 같은 차이점이 있습니다.

  1. 제어의 흐름: 프레임워크는 제어의 흐름을 개발자에게 강제합니다. 즉, 개발자는 프레임워크에서 정의한 규칙에 따라 코드를 작성해야 합니다. 반면에 라이브러리는 개발자가 필요에 따라 라이브러리의 함수를 호출하며, 제어의 흐름은 개발자가 결정합니다.
  2. 추상화 수준: 프레임워크는 상위 수준의 추상화를 제공합니다. 즉, 개발자가 프레임워크를 사용하면서 자세한 내용은 숨겨지고 추상화된 인터페이스만 제공됩니다. 반면에 라이브러리는 상대적으로 하위 수준의 추상화를 제공합니다. 개발자는 라이브러리에서 제공하는 함수를 호출하면서 상세한 구현 내용을 알고 있어야 합니다.
  3. 제어권: 프레임워크는 개발자에게 제어권을 주지 않습니다. 즉, 개발자는 프레임워크에서 정의한 규칙에 따라 코드를 작성해야 하며, 프레임워크가 알아서 제어를 합니다. 반면에 라이브러리는 개발자가 호출하는 시점에서만 제어권을 가집니다. 즉, 개발자는 필요한 시점에서 라이브러리의 함수를 호출하여 제어를 합니다.
  4. 확장성: 프레임워크는 일반적으로 더 많은 기능과 더 많은 제어권을 제공합니다. 이는 프레임워크가 더 큰 규모의 애플리케이션에서 사용하기에 더 적합하기 때문입니다. 반면에 라이브러리는 보통 하나의 기능만 제공하며, 애플리케이션의 일부분을 담당합니다.

따라서, 프레임워크와 라이브러리는 비슷한 기능을 제공하지만, 개발자가 필요한 기능과 프로젝트의 규모에 따라 선택해야 합니다.

2. 캐시의 장단점과 어떤 부분에 활용하는지 설명해주세요. 프론트엔드에서 캐시를 사용할 수 있는 2~3가지 영역을 제시해주세요

캐시(Cache)란 CPU와 메모리 간의 속도 차이를 보완하기 위해 메모리에 가까운 곳에 위치한 작은 메모리 영역입니다. 캐시는 컴퓨터 성능을 향상시키는 데 중요한 역할을 합니다. 캐시의 장단점과 활용 부분은 다음과 같습니다.

 

장점:

  1. 빠른 접근 속도: 캐시는 메인 메모리보다 더 빠른 속도로 데이터에 접근할 수 있습니다. 따라서, 캐시에 저장된 데이터는 더 빠르게 검색 및 처리할 수 있어 전반적인 성능을 향상시킵니다.
  2. 대역폭 감소: 캐시는 메인 메모리에 액세스하는 횟수를 줄여 대역폭을 감소시킵니다. 이로 인해 메인 메모리와 CPU 간의 데이터 전송이 줄어들어 전체적인 성능 향상을 가져올 수 있습니다.
  3. 전력 소비 감소: 캐시는 CPU와 메인 메모리 간의 데이터 이동을 줄이기 때문에 전력 소비를 감소시키는 데 도움이 됩니다.

단점:

  1. 공간 한정성: 캐시는 메모리에 비해 작은 공간을 가지고 있기 때문에, 저장할 수 있는 데이터의 양이 제한됩니다. 이는 데이터의 크기가 커지면 캐시의 효과가 감소하는 원인이 됩니다.
  2. 가격: 캐시는 빠른 속도와 공간 한정성 등의 이유로 비싼 가격을 가집니다.

어떤 부분에 활용하는지:

캐시는 다양한 시스템에서 활용됩니다. 예를 들어, CPU 캐시는 컴퓨터 시스템에서 매우 중요한 역할을 합니다. 또한, 웹 브라우저에서는 이전에 방문한 웹 페이지를 캐시에 저장하여 빠른 로딩을 가능하게 합니다. 또한, 데이터베이스 캐시는 데이터베이스 쿼리의 성능을 향상시키기 위해 사용됩니다. 따라서, 캐시는 시스템의 성능을 향상시키는 데 있어 매우 중요한 역할을 합니다.

 

프론트엔드에서 캐시를 사용할 수 있는 주요한 영역은 다음과 같습니다.

  1. 브라우저 캐시: 브라우저는 이미지, 스타일시트, 자바스크립트 파일 등의 정적 리소스를 캐시합니다. 이를 통해, 같은 페이지를 다시 방문할 때 서버에서 다시 리소스를 가져오지 않아도 되므로 더 빠른 페이지 로딩이 가능해집니다.
  2. 로컬 스토리지: 로컬 스토리지는 브라우저 내부에 데이터를 저장하는 기능입니다. 이를 사용하여, 브라우저를 종료해도 데이터를 유지할 수 있습니다.
  3. 메모리 캐시: 자바스크립트에서는 변수나 객체를 메모리에 저장하는데, 이를 활용하여 캐시를 구현할 수 있습니다. 예를 들어, AJAX 요청 결과를 메모리에 저장하여 다음 요청 시에는 서버에서 다시 데이터를 가져오지 않고 메모리에서 바로 불러올 수 있습니다.
  4. CDN 캐시: CDN(Content Delivery Network)은 전 세계적으로 분산되어 있는 서버를 활용하여 정적 리소스를 제공합니다. 이때, CDN 서버는 캐시를 구현하여 요청에 대한 응답 속도를 높입니다.

이외에도, 쿠키, 웹 소켓 등에서도 캐시를 활용할 수 있습니다. 프론트엔드에서 캐시를 적절히 사용함으로써, 성능 향상과 데이터 사용량 감소를 동시에 이룰 수 있습니다.

3. HTTP에 대해 설명하고, 알고있다면 HTTP 메세지 구조에 대해 더 자세히 설명해주세요

HTTP 메시지는 클라이언트와 서버 간에 주고받는 데이터의 구조를 정의합니다. HTTP 메시지는 요청(Request)과 응답(Response)으로 나뉘며, 각각의 구조는 다음과 같습니다.

  1. 요청(Request)

HTTP 요청 메시지는 클라이언트에서 서버로 전송하는 메시지입니다. 요청 메시지는 크게 3개의 부분으로 나뉘며, 각 부분은 CRLF(Carriage Return and Line Feed)로 구분됩니다.

  • 시작줄(start line): HTTP 메시지의 첫 줄로, 요청 메서드와 URI, HTTP 버전을 포함합니다.
  • 헤더(Header): 헤더는 키-값 쌍으로 이루어진 메시지 헤더와 값의 집합입니다. 요청에 대한 정보를 담고 있습니다.
  • 본문(entity body): 요청에 대한 추가 데이터를 포함할 수 있습니다. 예를 들어, POST 요청의 경우에는 폼 데이터가 본문에 포함될 수 있습니다.
  1. 응답(Response)

HTTP 응답 메시지는 서버에서 클라이언트로 전송하는 메시지입니다. 응답 메시지도 요청과 마찬가지로 3개의 부분으로 나뉘며, 각 부분은 CRLF로 구분됩니다.

  • 시작줄(start line): HTTP 메시지의 첫 줄로, 상태 코드와 상태 메시지, HTTP 버전을 포함합니다.
  • 헤더(Header): 요청에 대한 응답으로 보내는 정보를 담고 있습니다. 메시지 헤더와 값의 집합입니다.
  • 본문(entity body): 응답에 대한 추가 데이터를 포함할 수 있습니다. 예를 들어, HTML 문서나 JSON 데이터가 본문에 포함될 수 있습니다.

HTTP 메시지 구조는 다양한 데이터를 교환하는 데 유용합니다. 이 구조를 활용하여 웹 페이지를 표시하거나, 파일을 다운로드하거나, API 요청에 대한 응답을 처리할 수 있습니다.