Sever

1. Sever-Client 모델

  • 웹통신에서 Server는 사용자(클라이언트)의 요청을 받아데이터를 응답해주는 역할을 수행

  • Client는 받고자 하는 데이터를 Server에게 요청을 보내고 응답내용을 받는 역할을 수행

  • 이때 Server는 항상 실행중인 상태여야 하며, 클라이언트의 요청을 대기한다.

  • Server 1대 당 N명의 사용자가 동시에 서버에 연결되어 데이터를 요청할 수 있다.

  • EX) 사용자(클라이언트)가 naver에서 웹툰을 보려고 url을 검색하면 naver 서버가 웹툰을 서비스 해준다

JAVA 17장 Network 내용


2. Server의 데이터 처리 과정

일반적으로 서버는 Web Server / WAS서버 / DB 서버로 구분되어 있다.
  • 클라이언트는 웹 브라우저를 통해 서버에 요청을 보낸다.

  • 웹 브라우저는 사용자의 요청 메시지를 우선 웹 서버에 전달한다

  • 웹서버는 클라이언트의 HTTP요청 메시지를 수신하여 요청하는 내용이 정적 리소스인지, 동적 리소스인지 판단한다.

    • 정적 리소스 ( 이미지, HTML, CSS, JS , 등 이미 서버에 만들어져 있으며 변하지 않는 데이터)

    • 동적 리소스 ( 검색결과 화면, 로그인 처리 기능 요청 내용에 맞춰 새롭게 만들어야 하는 데이터)

  • 웹서버는 요청이 정적 리소스에 대한 요청이 아닌 경우 해당 요청을 WAS서버로 전달한다.

  • 즉, WAS(Web Application Server)는 클라이언트의 동적 리소스에 대한 처리를 담당하는 서버이다. 동적 자원은 WAS가 사용 가능한 자원을 활용하여 클라이언트의 요청에 맞는 HTML을 서버에서 직접 만들어서 제공하는 자원을 의미한다.

    • EX) 네이버에 어떤 내용을 검색한다면 네이버는 사용자의 요청 내용에 맞는 데이터를 DB에서 수집한 후, HTML에 DB내용을 추가하여 새로운 HTML(또는 JSON과 같은 기타데이터)을 만들어서 클라이언트에게 제공한다.

  • WAS는 클라이언트의 요청을 해결하기 위해 요청 내용과 관련된 데이터를 DB서버에 보낸다.

  • DB서버는 WAS에서 전달한 SQL문을 실행 후 응답결과(ResultSet)를 WAS에게 전달한다.

  • WAS는 DB의 응답결과를 해석하여 새로운 HTML을 생성한다.

  • WAS는 생성한 HTML을 웹서버에게 전달한다

  • 웹서버는 생성한 HTML을 브라우저에게 전달한다.

  • 브라우저는 전달 받은 HTML을 해석하여 화면을 랜더링한다.


3. Web Server 와 WAS

1) Web Server

  • 사용자에게 HTML, CSS, JS , IMG 등 서버 내부에 이미 만들어진 정적 자원을 제공하는 역할의 서버

  • 웹 브라우저가 보내는 HTTP 요청을 수신하여 요청 내용이 정적 자원인지 / 동적 자원인지 검사한다.

  • 동적 자원을 요청한 경우 요청을 WAS로 전달한다

  • 클라이언트의 요청내용을 WAS에 보내고, WAS가 전달하는 내용을 다시 클라이언트에게 응답하는 중간 서버 역할(Reverse Proxy Server)을 수행한다.

    • Reverse Proxy Server :

      • 클라이언트가 보낸 요청을 WAS에 대신 전달하는 역할의 서버.

      • 일반적인 프록시 서버가 서버 내부의 요청을 다른 서비스로 보낼 때 사용된다면, 리버스 프록시는 반대로이러한 요청을 대신 받는 서버를 의미한다.

  • WAS서버가 여러개 존재하는 경우 여러 사용자의 요청을 각 서버에 분할하여 전달할 수 있으며(로드밸런싱 ), 보안기능(방화벽처리,SSL인증 등) 및 캐싱기능 등을 제공한다.

Web Server의 종류

  1. Apache Http Server(Apache)

    1. 아파치 재단에서 만든 웹 서버로 HTTP통신과 관련된 다양한 라이브러리를 제공한다.

    2. 오픈소스로 개방되어 있기 때문에 무료로 사용가능하다

    3. 멀티쓰레드를 기반으로 사용자의 요청을 처리한다.

    4. 전자정부프레임워크의 표준 웹서버

  1. NGINX

    1. 무료 오픈소스 서버로 사용자의 요청을 쓰레드가 아닌 이벤트 기반으로 처리한다.

    2. 메모리 효율이 높고 동시 접속 처리에 있어서 쓰레드 기반보다 강력한 성능을 자랑한다.

쓰레드 기반과 이벤트 기반의 차이

  1. Thread Driven

  1. 클라이언트의 요청마다 독립적인 스레드를 생성하여 요청내용을 처리하는 방식

  2. 동시 접속자가 많을 수록 생성해야할 스레드가 많아지므로 메모리 사용량이 증가한다.

  3. 각 스레드는 격리되어 있으므로 안정적으로 서비스가 가능하다.

  4. 동시처리 가능한 작업은 스레드의 개수와 비례한다.

  5. 접속하려는 사용자 수가 수천, 수만건 이상인 경우 서버가 감당하지 못할 수 있다.

Thread Driven 예시

  • 식당에 손님이 들어올 때마다 직원을 1명 씩 배정하는 고급레스토랑.

  • 손님이 10명이면 10명의 직원을, 100명이면 100명의 직원을 배정한다.

  • 손님별로 안정적인 응대가 가능하지만, 손님이 너무 많이 몰릴 경우(과부하) , 직원을 배정 받지 못하는 경우가 발생할 수 있다.

  1. Event Driven

  1. 하나의 쓰레드가 여러 사용자의 요청을 비동기 이벤트 루프 방식으로 처리하는 방식

  2. 사용자의 요청마다 스레드를 생성하지 않기 때문에 메모리를 덜 사용한다.

  3. 사용자의 요청 중 지연이 발생하는 경우 전체 요청 처리 결과가 느려질 수 있다.

  4. 스레드의 개수와 무관하게 동시처리가 가능하다.

  5. 접속하려는 사용자가 수천, 수만건 이상인 경우 효율적으로 처리가 가능하므로 대규모 트래픽 처리에 강하다

Event Driven 예시

  • 손님이 몇 명이 오던 항상 1명의 이모가 손님을 응대하는 분식집

  • 손님별로 들어오는 주문의 순서에 맞춰서(event queue) 직원이 떡볶이를 만들고, 순대를 만들고, 김밥을 만들고 , 계산을 한다.

  • 주문이 많은 경우 손님별로 음식을 늦게 받을 수는 있지만, 결국에는 모든 손님들에 대한 처리가 가능하다.

2) WAS(Web Application Server)

  • 웹 서버에서 전달한 내용을 바탕으로 동적인 자원(HTML, JSON 등 )을 생성하는 역할의 서버

  • 데이터베이스와 연동하여 동적 HTML, JSON 자원등을 생성한다.

  • 예시로는 검색내용에 따라 다른 검색결과 HTML, 회원가입 요청, 로그인 요청

WAS의 종류

apache tomcat
  1. Apache Tomcat(Tomcat)

    1. 아파치 재단에서 만든 WAS로 ServletJSP를 활용하여 동적인 웹문서를 생성하기 위한 기능을 제공

    2. http요청을 직접 수신할 수 있는 내장 http커넥터를 보유하고 있어 별도의 Web-Server 없이 단독으로 운영이 가능하다. (설정을 통해 연동도 가능)

    3. 정적리소스의 성능이나 보안성 측면에서 부족하기 때문에 Apache/Nginx와 함께 사용하는 것이 일반적이다.

    4. Spring framework와 함께 가장 많이 사용되는 서버이다.

    5. 전자정부 프레임워크의 표준 was서버

  2. JBoss

    1. Jakarta EE를 모두 지원하는 오픈소스 기반의 WAS서버

    2. tomcat에서 지원하지 않는 EJB, JPA 등을 지원한다.

    3. TOMCAT 이전에 많이 사용되던 WAS서버

  3. JEUS

    1. 대한민국에서 만든 사용 WAS

    2. 공공기업, 금융권에서 많이 사용 중이며, 대규모 트래픽 처리에 있어서 뛰어난 성능과 안정성을 보인다.

항목
Web Server
WAS (Web Application Server)

역할

정적 콘텐츠(HTML, CSS, JS, 이미지 등) 제공

동적 콘텐츠(JSP, Servlet, JSON 등) 생성

처리 대상

클라이언트 요청 중 정적 리소스

클라이언트 요청 중 비즈니스 로직 처리

기술

HTTP 기반 리퀘스트 처리

Java EE (Servlet, JSP 등) 실행 환경 제공

예시 요청

이미지 보기, 정적 HTML 페이지 열기

로그인, 검색, 게시글 등록

작동 방식

요청 → 파일 응답

요청 → 로직 처리 → DB → 결과 생성 → 응답

예시 소프트웨어

Apache HTTP Server, NGINX

Tomcat, JEUS

연동 방식

클라이언트 요청을 선별하여 WAS에 전달(리버스 프록시)

Web Server로부터 요청을 받아 처리

기능 확장성

가볍고 빠르지만 동적 기능은 불가능

무겁지만 강력한 동적 처리 가능


Last updated