본문 바로가기

🌼 TIL

🍈 [TIL] 프레임워크, 라이브러리 / 캐싱이란?

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

 

답변)

 

프레임워크란

원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 골격, 뼈대를 의미합니다.

애플리케이션 개발 시 필수적인 코드, 알고리즘, DB 연동과 같은 기능들을 위해 어느 정도 뼈대(구조)를 제공하며 이러한 뼈대 위에서 사용자는 코드를 작성하여 애플리케이션을 개발합니다. 앱/서버 등의 구동, 메모리 관리, 이벤트 루프 등의 공통된 부분은 프레임워크가 관리하며, 사용자는 프레임워크가 정해준 방식대로 클래서, 메서드들을 구현하면 됩니다.

라이브러리란

소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임. 즉 특정 기능을 모와둔 코드, 함수들의 집합이며 코드 작성 시 활용 가능한 도구들을 의미합니다.

놀랍게도 React.js는웹 서비스 중에서 사용자 인터페이스 개발을 위해 사용되는 라이브러리입니다.

프레임워크와 라이브러리의 차이점은 "제어 흐름"의 권한이 어디에 있는가입니다.

라이브러리를 사용할 때 사용자는 애플리케이션 코드의 흐름을 직접 제어해야 합니다.개발 시 필요한 기능이 있을 경우 능동적으로 라이브러리를 호출하여 사용하거나 기존에 구성된 함수나 코드를 가져다 써야 합니다.

반면 프레임워크는 애플리케이션의 코드가 프레임워크에 의해 사용됩니다.애플리케이션 코드는 프레임워크가 짜 놓은 틀에서 수동적으로 동작하기 때문에 제어의 흐름은 프레임워크가 가지고 있고 사용자가 그 안에 필요한 코드를 작성하게 됩니다.

여기서 제어의 역전이란,

IoC Inversion of Control의 약자로 어떠한 일을 하도록 만들어진 Framework에 Control 권한을 위임하는 것을 의미하는데, 간단히 말해 프로그램의 제어 흐름 구조가 뒤바뀐 것을 뜻합니다.

라이브러리의 경우 애플리케이션의 흐름을 사용자가 직접 제어해야 하지만 프레임워크의 경우 코드를 연결할 수 있는 위치를 제공하고 필요에 따라 사용자가 연결한 코드를 호출하는 제어 흐름 권한을 가지고 있습니다.

다시말해

프레임워크는 개발자가 따라야 할 구조와 규칙을 제공하는 도구이며, 라이브러리는 개발자가 사용할 수 있는 도구 모음입니다.. 프레임워크는 보다 큰 범위에서 사용되며, 개발자가 어플리케이션의 전체적인 아키텍처와 디자인을 구축하는 데 사용됩니다. 반면 라이브러리는 더 작은 규모에서 사용되며, 개발자가 특정 작업을 수행하는 데 필요한 함수와 클래스를 제공합니다.

 

 

 

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

 

답변)

캐시란

자주 사용되는 데이터를 빠르게 접근하기 위해 메모리에 저장하는 임시적인 데이터 저장소이며,

자주 쓰이는 문서의 사본을 자동으로 보관하는 HTTP장치입니다.

웹 요청이 캐시에 도착했을 때, 캐시된 로컬 사본이 존재한다면,

그 문서는 원서버가 아니라 캐시로부터 제공됩니다.

캐시의 장단점 입니다.

장점:

  • 더 빠른 데이터 접근: 캐시에 저장된 데이터는 메모리에 있기 때문에 디스크나 네트워크로부터 데이터를 가져올 필요 없이 더 빠르게 접근 가능합니다.
  • 부하 감소: 캐시를 이용하면 데이터를 다시 계산하거나 다시 가져올 필요가 없기 때문에 서버 부하가 줄어들 수 있습니다.
  • 대역폭 절약: 캐시를 사용하면 네트워크 대역폭을 절약할 수 있습니다. 캐시에 데이터가 있으면 다시 서버로 요청하지 않고 로컬에서 바로 가져올 수 있기 때문입니다.

단점:

  • 캐시 일관성 유지: 캐시에 저장된 데이터가 실제 데이터와 일치하지 않을 경우 문제가 발생할 수 있습니다. 캐시의 일관성을 유지하기 위한 추가적인 노력이 필요합니다.
  • 캐시 메모리 제한: 캐시에 저장할 수 있는 데이터의 양에는 제한이 있기 때문에, 메모리 용량 부족으로 인한 성능 저하가 발생할 수 있습니다.

프론트엔드에서 캐시를 활용할 수 있는 2~3가지 영역은 다음과 같습니다.

  1. 브라우저 캐시: 브라우저 캐시를 이용하면 이미지, 스타일시트, 자바스크립트 파일 등의 리소스를 로컬에 저장하여 다음에 같은 페이지를 열 때 다시 다운로드할 필요 없이 로컬에서 불러올 수 있습니다.
  2. HTTP 캐시: HTTP 캐시를 이용하면 서버에서 전송된 리소스를 클라이언트 측에서 캐싱하여 다음에 같은 리소스를 요청할 때 다시 다운로드할 필요 없이 로컬에서 바로 가져올 수 있습니다.
  3. 메모이제이션: 메모이제이션은 함수의 결과를 캐싱하여 다음에 같은 함수를 호출할 때 다시 계산할 필요 없이 이전에 계산한 값을 반환하는 기술입니다. 프론트엔드에서도 메모이제이션을 이용하여 성능을 개선할 수 있습니다.

 

 

 

 

 

 

 

참고 블로그 

https://cocoon1787.tistory.com/745

 

[개발상식] 프레임워크(Framework) 와 라이브러리(Library)의 차이

🚀 "프레임워크와 라이브러리의 차이를 아시나요?"" "음... 프레임워크는 뼈대이고 라이브러리는 모듈 같은 것이고....😰" "그럼 최근에 사용하신 프레임워크와 라이브러리를 알려주세요." "... ex

cocoon1787.tistory.com

https://feel5ny.github.io/2019/09/30/HTTP_007-1/

 

캐시의 개념과 장점

캐시는 자주 쓰이는 문서의 사본을 자동으로 보관하는 HTTP 장치다.웹 요청이 캐시에 도착했을 때, 캐시된 로컬 사본이 존재한다면,그 문서는 원서버가 아니라 캐시로부터 제공된다. 불필요한 데

feel5ny.github.io