Computer Base
Web server란? Client 로부터 HTTP 요청을 받아 정적 컨텐츠를 제공하는 프로그램 정적 컨텐츠란? 어느 사용자 요청이든 항상 동일한 컨텐츠(ex html, image 등) 웹 서버의 기능 클라이언트로부터 HTTP 요청을 받을 수 있다. 정적 컨텐츠 요청 시 → 정적 컨텐츠 제공 동적 컨텐츠 요청 시 → WAS(Web Application Server)로 전달하여 WAS가 처리한 결과를 클라이언트에 전달 대표적인 웹서버 Nginx Nginx는 웹 서버이며 리버스 프록시, 로드밸런서, HTTP cache로도 쓰일 수 있는 대표적인 웹 서버이다. 이벤트 기반 구조(event driven)를 채택하여 다수의 요청을 빠르게 처리하며 CPU 자원 소모가 적다. 클라이언트의 request에 맞추어 co..
Framework와 Library의 차이점 Framework란? 원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 골격, 뼈대 ex) Spring, Django, Vue.js Library란? 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임. 즉 특정 기능을 모와둔 코드, 함수들의 집합이며 코드 작성 시 활용 가능한 도구 ex) pip으로 설치한 module, npm으로 설치한 module, c++ STL, React.js, jquery Framework와 Library의 차이점 제어 흐름의 권한이 어디에있는가에 의해 결정된다. 라이브러리를 사용할 때 사용자는 코드의 흐름을 직접 제어함. 반면 프레임워크는 애플리케이션의 코드가 프레임워크에 의해..
캐싱이란? 캐시의 데이터는 일반적으로 RAM(Random Access Memory)와 같이 빠르게 액세스 할 수 있는 하드웨어에 저장되며, 소프트웨어 구성 요소와 함께 사용될 수 있다. 캐시의 주요 목적은 더 느린 기본 스토리지 계층에 액세스 해야하는 필요를 줄임으로써 데이터 검색 성능을 높이는 것 RAM 및 인 메모리 엔진 : RAM 및 인 메모리 엔진에서 지원하는 높은 요청 비율 또는 IOPS(초당 입력/출력 작업) 덕분에 캐싱을 사용하면 대규모로 데이터 검색 성능이 향상되고 비용이 절감됩니다. 적용: 캐시는 운영 체제, 네트워킹 계층(콘텐츠 전송 네트워크(CDN), DNS 등), 웹 애플리케이션 및 데이터베이스를 비롯한 다양한 기술 계층에 걸쳐 적용되고 활용될 수 있습니다. 캐싱의 이점 애플리케이션..
Proxy Server 서버와 클라이언트 간의 중계 서버로서 통신을 대신 수행하는 역할 프록시 서버는 클라이언트의 대리 역할을 하기도 하고 서버의 대리 역할을 하기도 한다. Forward Proxy 클라이언트 대신 서버에 요청을 보내주는 역할 Reverse Proxy 서버 대신 클라이언트에 응답을 보내주는 역할 네트워크 곳곳에 프록시 배치 가능! 왜 Proxy를 사용할까? 필터 학생들에게 유해 사이트들을 차단하는 필터링 프록시를 사용 접근제어 회원가입된 user만 페이지 접근 가능 캐싱 서버까지 거치지 않고 바로 프록시에서 캐싱된 정보를 이용해 응답할 수 있다. 익명화 프록시를 통해 익명화되어 공통 식별 정보 헤더를 포함하지 않는다. 로드밸런싱 -> 리버스 프록시가 수행 출처: https://www.yo..
Concurrent Processing은 우리 말로 '병행처리', Parallel Processing은 '병렬처리' 라고 불린다. 서로 분명 다르지만 비슷한 용어를 지닌 두 개념의 차이에 대해 알아보도록 하겠다. 1. Concurrent Processing(병행처리) 우리가 일반적으로 잘 아는 본 누이만 컴퓨터 구조를 보면서 살펴보자. program1, program2, program3가 있다고 가정해보자. 초창기 프로그램에서는 메모리 하나당, 하나의 프로그램만을 수행했다. 따라서 program1이 I/O를 수행하는 동안, CPU는 할 일 없이 놀고 있게 된 것이다. I/O는 기계적으로 움직이는 장치이고 cpu와 memory는 전자적으로 움직이는 장치이다. 전자적으로 움직이는 장치가 훨씬 빠르게 수행되므..
우리는 프로그래밍을 할 때, Java, C, Python 같은 high level langauge(고급 언어)를 사용한다. 하지만 이러한 high level language는 사람이 이해하기는 쉽지만, 하드웨어는 이를 이해하지 못한다. 하드웨어는 machine language(기계어)만을 알아들을 수 있기 때문이다. 따라서, 개발자가 작성한 프로그램을 하드웨어가 이해할 수 있도록 변환하는 작업이 필수적인데, 이러한 작업을 하는 것이 바로 Compiler와 Interpreter이다. 1. Compiler란? - 프로그램 runtime 이전에 소스 코드를 검사, 후에 machine language로 변환한다. -> 따라서 만일 오류가 있다면, 실행 전에 오류를 발견할 수 있다. - 소스 코드를 검사하는데에 ..