오늘의 목표!
구글 검색창에 동적인 부분 - code 한 글자씩 입력할 때 연관검색어 부분이 계속 바뀜.
Introduction
HTTP 서버를 작성하는 방식은 HTTP 프로토콜의 작동과 일치하기 때문에, 한 가지 언어를 이용해 웹 애플리케이션 서버(이하 WAS)를 작성하고, 원리를 잘 파악한다면 이후, 다른 언어로도 HTTP 서버를 쉽게 작성할 수 있음.
서버(Server)
서버라는 용어는 기본적으로 어떤 컴퓨터의 역할을 의미합니다.
어떤 컴퓨터 한 대가 요청을 이해하고, 이를 처리하여 요청에 맞는 내용을 응답으로 전달(서빙)하는 역할을 한다고 해서 serve + er, 서버라는 명칭을 붙였다.
서버는 크게 하드웨어와 소프트웨어, 이렇게 2가지 측면에서 살펴볼 수 있습니다. 먼저 하드웨어적인 부분에서의 서버는 정적 파일들이 제공되거나, 서버 애플리케이션이 실행되는 컴퓨터를 의미합니다. 소프트웨어적인 부분에서의 서버는 앞서 얘기한 정적 파일을 제공하거나, 서비스를 제공하는 애플리케이션 그 자체를 의미합니다.
서버의 의미를 정리하자면...
사용자의 요청을 받고, 이에 따른 응답과 데이터를 보내주는 역할을 수행함
서비스를 제공하는 컴퓨터 내의 프로그램을 의미함
이러한 프로그램(소프트웨어)이 실행되는 컴퓨터(하드웨어) 역시 서버라고 불림
서버의 종류
각 서버는 특정 작업을 전문적으로 수행할 수 있게 여러 분류로 나누어집니다.
웹 서버(Web Server)
웹 서버는 클라이언트로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹 페이지를 있는 그대로 반환하는 서버를 말합니다.
이 때 웹 페이지는 그림, CSS, JS을 포함하며, 이러한 파일들을 정적 파일이라고 부릅니다. 이러한 정적 파일들을 브라우저에 그대로 전달하는 역할을 하기 때문에 웹 서버는 정적 웹 서버(Static Web Server)라고 부르기도 합니다. 웹 서버의 예시로는 nginx, Apache Web Server 등이 있습니다.
웹 애플리케이션 서버(Web Application Server)
웹 애플리케이션 서버도 웹 서버와 같이 웹 페이지를 전달하는 역할을 하기도 합니다. 그러나 WAS의 핵심 역할은 웹 페이지를 구성하는 동적인 컨텐츠를 생성하거나 업데이트 하는 비즈니스 로직을 수행할 수 있게 합니다. 이러한 서버 측 비즈니스 로직에 클라이언트가 접근할 수 있는 방법을 제공하는 것입니다.
이러한 역할을 수행하기 위해서 웹 애플리케이션 서버가 갖는 특징이 있습니다. 먼저 웹 페이지를 구성하는 동적인 요소를 생성하는 서버 사이드 코드가 구동될 수 있는 프로그래밍 언어적 런타임 혹은 소프트웨어 엔진을 제공합니다.
두번째로는 웹 애플리케이션 서버의 클라이언트는 애플리케이션 그 자체가 될 수도 있고, 웹 서버나 다른 웹 애플리케이션 서버, 데이터베이스 서버가 될 수도 있습니다. 따라서 웹 애플리케이션 서버를 사용한다면 경우에 따라 다양한 형태의 아키텍처가 생성될 수 있습니다.
웹 어플리케이션 서버의 예시 : Broadvision Wakanda Server Node.js
데이터베이스 서버
데이터베이스 서버는 사용자가 데이터베이스에 연결할 수 있도록 해줍니다.
데이터베이스는 사용자 정보나 사진, 동영상 등에 대한 정보를 담고 있는 서버입니다.
데이터베이스 서버의 종류로는 MySQL, MongoDB, Oracle 등 여러 종류로 또 나뉘어집니다.
프록시 서버
프록시 서버는 리소스를 요청하는 클라이언트와 응답으로 리소스를 전달하는 서버 사이에 중계 역할을 하는 서버를 의미합니다.
어디에 위치하느냐에 따라 포워드 프록시와 리버스 프록시로 나누어지며, 이러한 프록시 서버가 수행하는 기능으로는 보안, 캐시, 로드밸런싱 등이 있습니다.
포워드(Forward) 프록시
-클라이언트가 example.com에 연결하려고 하면
포워드 프록시 서버가 요청을 받아서 example.com에 연결하여, 그 결과를 클라이언트에 전달(forward)•
장점
포워드 프록시는 대개 캐쉬 기능이 있음
캐시를 해 두고, 캐시 안에 있는 정보를 요구하는 요청에 대해서는 바로 응답하여 전송 시간을 절약
불필요하게 외부와의 연결을 하지 않아도 됨
외부와의 트래픽을 줄여 네트워크 병목 현상을 방지
정해진 사이트만 연결하게 설정하는 등 웹 사용 환경을 제한할 수 있어, 기업 환경등에서 많이 사용
리버스(Reverse) 프록시
클라이언트가 example.com 웹 서비스에 데이터를 요청하면,
Reverse Proxy는 이 요청을 받아서 내부 서버에서 데이터를 받은 후 이 데이터를 클라이언트에 전달
내부 서버가 직접 서비스를 제공해도 되지만, 이렇게 구성하는 이유는 보안 때문
보통 기업의 네트워크 환경은 DMZ(내부 네트워크와 외부 네트워크 사이에 위치하는 구간)이 존재하며,
이 구간에는 메일 서버, 웹 서버, FTP 서버등 외부 서비스를 제공하는 서버가 위치
example.com 사는 서비스를 자바로 구현해서 WAS를 DMZ에 놓고 서비스해도 되지만,
WAS는 보통 DB 서버와 연결되므로 WAS가 최전방에 있으면,
WAS가 털릴 경우 DB 서버까지 같이 털리는 심각한 문제가 발생할 수 있음
이 때문에 리버스 프록시 서버를 두고 실제 서비스 서버는 내부망에 위치시킴
[출처] 포워드(Forward) 프록시와 리버스(Reverse) 프록시|작성자 코딩하는 엘모
코딩하는 엘모 : 네이버 블로그
머리통 메모리에 잘 저장되도록 정리합니다!
blog.naver.com
웹 서버
웹 서버(Web Server)는 정적 파일(static files)을 받고, 이에 대한 요청을 이행하는 서버를 이야기 합니다.
웹서버는 보통 HTTP 요청과 응답만을 처리하고, 다음과 같은 아키텍처로 이루어져 있습니다.

웹 애플리케이션 서버
웹 애플리케이션 서버(Web Application Server), WAS는 데이터를 동적으로 처리해서 제공하기 위해 만들어진 서버를 의미합니다.
이 때 데이터를 동적으로 처리하기 위해 WAS 서버에서는 DB 조회, 여러 개의 트랜잭션 관리, 비지니스 로직 처리 등의 기능이 요구됩니다.
WAS는 사용자의 요청에 의해 다르게 보일 수 있는 웹사이트의 인터랙티브 부분을 처리합니다. 보통 WAS를 사용하는 경우의 아키텍처는 다음과 같습니다.

댓글