개발자 미니민의 개발스터디

[웹 프로그래밍 이론] 웹 서버 이론 정리

by mini_min

웹 서버 및 WAS

◻️ 웹 서버

: HTTP 를 통해 클라이언트가 요청하는 HTML 문서나 CSS, 자바스크립트, 이미지 등 웹 페지이를 전송해주는 서비스 프로그램이다. 

종류 : 아파치 서버, IIS, 엔진 x, GWS 등

 

◻️ WAS

: 사용자 컴퓨터나 장치에 애플리케이션을 수행해 주는 미들웨어이다.

서버 단에서 애플리케이션을 동작할 수 있도록 지원한다.

WAS 는 동적 서버 콘텐츠를 수행, 웹 서버는 정적 콘텐츠를 수행

종류 : 아파치 톰캣, 레진, 제이런

 

톰캣

톰캣은 웹 서버로 사용되기 보다는 웹 애플리케이션 서버로 사용된다 (WAS)

웹 서버보다 수행 속도는 느리다.

이를 위해 아파치와 연동한다. 

아파치는 정적 페이지를 로드하는 웹 서버고 JSP 나 서블릿은 톰캣으로 넘겨서 톰캣이 수행하게 만든다.

 

 

GET 방식 과 POST 방식

◻️ GET 방식

: HTTP 헤더에 정보를 실어 넘기는 전송 방식이다.

URL 에 데이터가 노출되어 보안이 약하다

대신 캐싱이 가능하다.

그래서 브라우저에 기록도 남는다.

반면, 전송하는 데이터 양에 한계가 있다.

검색엔진에서 검색 단어 전송에 많이 이용한다.

 

◻️ POST 방식

: HTTP 바디에 정보를 실어 넘기는 전송 방식이다.

GET 보다 좀 더 보안적이다.

하지만 캐싱이 불가하다.

데이터 크기에 제한이 없지만, GET에 비해 속도가 느리다.

<form> 태그에 method 방식을 post 로 설정해야한다.

 

GET 과 POST 의 차이

- 둘의 근본적인 차이는 멱등이다.

GET 은 멱등이고 POST 는 아니다.

멱등은 같은 요청을 여러 번 해도 같은 결과가 나오는 것을 말하는데, GET 은 같은 요청을 여러 번 보내고 같은 결과를 받지만 POST 는 항상 동일한 결과를 받는 다는 보장이 없다. 

 

- GET은 캐싱이 가능, POST 는 캐싱이 불가하다.

- GET 보다 POST 의 전송 속도가 더 느리다.

- GET 은 보안에 취약, POST 는 보안 유지

- GET 는 검색에 적합하고 POST 는 삽입, 삭제, 갱신에 적합하다.

 

 

JSP/Servlet

◻️ 웹 컨테이너 ?

: JSP 와 서블릿을 실행할 수 있는 소프트웨어를 웹 컨테이너라고 한다.

웹 컨테이너 종류로는 아파치 톰캣, IBM 웹스피어, 어플리케이션 서버, 레진, 티맥스의 제우스, 이클립스 대단의 제티가 있다.

 

 

Request

웹 컨테이너가 클라이언트로부터 요청을 받아 서블릿에게 전달하기 위해 사용한다.

Response

클라이언트 요청에 대한 응답을 MIME 형태로 반환하는데 사용한다.

 

 

포워딩

클라이언트에서 요청 받은 서버의 서블릿 또는 JSP는 서버의 다른 자원으로 요청 받은 정보를 전달하여 처리하는 것을 의미한다. 클라이언트로 부터 요청 받은 정보는 포워딩 된 페이지에도 전달된다.

 

리다이렉트

다른 웹 경로에 있는 주소로 이동이 가능하다.

 

쿠키

쿠키는 서버측에서 클라이언트 측에 상태 정보를 저장하고 추출할 수 있는 매커니즘이다.

클라이언트의 요청이 있을 때 마다 웹 브라우저로부터 서버에 전송되는 정보 패킷의 일종이다.

클라이언트는 총 300개 까지 쿠키를 저장한다.

하나의 도메인 당 20개의 값만 가질 수 있고 하나의 쿠키는 4096Byte 까지 저장 가능하다.

 

세션

세션은 클라이언트와 웹 서버 간에 네트워크 연결이 지속적으로 유지되고 있는 상태를 말한다.

각각의 클라이언트마다 고유의 세션을 갖는다.

 

쿠키와 세션의 차이

저장되는 곳이 다르다 (쿠키는 클라이언트에 저장, 세션은 서버에 저장)

쿠키와 세션의 만료 기간도 다르다

 

 

MVC 패턴

: 모델, 뷰, 컨트롤러 의 역할을 분리시켜 놓은 프로그래밍 기법이다.

비즈니스 로직, 데이터 접근 로직, 프레젠테이션 로직을 분리시킨 디자인 패턴이다.

각 영역의 역할이 명확해서 모듈 간의 의존성을 낮추어 재사용성 및 확장이 용이하여 유지보수에 유리하다.

 

 

JavaScript

◻️ 변수 종류

: var 변수를 선언하자마자 값을 초기화

: let 블록 범위 지역 변수를 선언한다.

: const 블록 범위 읽기 전용 상수를 선언한다.

 

◻️ 프로토타입 기반 언어

자바스크립트는 클래스 기반이 아닌 프로토타입을 기반으로 하는 객체 기반 언어이다. 

프로토타입 객체란 개념이 있는데, 새로운 객체의 초기 속성을 가져오는 템플릿으로 사용되는 객체이다.

모든 객체를 다른 객체의 프로토타입으로 연결하여 첫번째 객체의 속성 등을 공유할 수 있다.

 

 

AJAX , JSON

에이작스는 비동기 자바스크립트 XML 이다.

빠르게 동작하는 동적인 웹 페이지를 만들기 위한 개발 기법으로, 웹 페이지 일부만 갱신한다.

데이터를 보내고 나서도 다른 작업을 사용할 수 있다. 하지만 에이작스는 오직 클라이언트 폴링 방식을 사용하고 서버 푸시 방식으로 실시간 서비스는 만들 수 없다.

그리고 바이너리 데이터는 받거나 보낼 수 없다.

에이작스가 포함되지 않은 다른 서버로 요청을 보낼 수 없다.

 

JSON 은 인터넷에서 자료를 주고받을 때 그 자료를 표현하는 방법이다.

경량 데이터 교환 형식이다.

XML 의 단점을 보안하여 데이터 표현이 단순하고 직관적이다.

라이브러리가 필요없다.

name/value 형태의 컬렉션 타입이다.

 

 

REST

자원을 이름으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다. 

분산 하이퍼 미디어 시스템을 위한 소프트웨어 개발 아키텍처의 한 형식이다. 

 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기