728x90
반응형
SMALL

웹 서버와 WAS의 차이는?

1. 웹 서버의 이해

웹(Web)

  • 일반적인 의미: 거미집 모양의 망
  • 기술적인 의미: 인터넷 망 안에서 정보를 공유, 검색할 수 있게 하는 시스템이다. 인터넷에 연결된 사용자들은 서로 정보를 공유할 수 있다. 월드 와이드 웹(WWW)이라고 부르는 게 바로 웹이다.
  • 인터넷 서비스 종류로 웹만 있는 게 아니다. SMTP(전자우편), FTP(파일전송), Telnet(원격접속) 등 다양하게 있는데, 팀 버너스리가 SMTP이나 FTP를 통해 정보를 주고 받는 것을 비효율적이라 생각하여 WWW(월드 와이드 웹)을 고안하였다.
  • 웹을 지탱하고 구성하는 아래 세 가지 기술이 있다.
    • HTTP(통신 규칙)
    • URI or URL(주소)
    • HTML(내용)

서버(Server)

  • 네트워크를 통해 클라이언트에게 정보나 서비스를 제공하는 컴퓨터 시스템

웹 서버(Web Server)

  • 인터넷을 기반으로 클라이언트에게 웹 서비스를 제공하는 컴퓨터

클라이언트의 입장: 웹 서버에게 주소(url)을 가지고 통신 규칙(http)에 맞게 요청하면, 알맞은 내용(html)을 응답 받음

서버 입장: 클라이언트의 요청을 기다리고, 웹 요청(http)에 대한 데이터를 만들어서 응답, 이때 데이터는 웹에서 처리할 수 있는 html, css, 이미지 등 정적인 데이터로 한정

  • 우리도 로컬 컴퓨터로 쉽게 웹 서버를 만들 수 있다. 무료로 공개된 아파치 웹 서버를 깔고, 포트번호랑 HTML 파일 위치를 정해주면 전세계 사람들에게 웹 서비스를 제공할 수 있는 컴퓨터를 가질 수 있다.
  • 그런데 한 가지 문제가 있다. 웹 서버에서는 html, css, 이미지 등 정적인 자료만 제공할 수 있다. 예를 들어 구구단 페이지를 전달할 때, 정적인 자료만 제공할 수 있으므로 1 x 1 = 1, 1 x 2 = 2... 등의 내용을 미리 다 작성해놔야 한다. 1, 2단이라 아니라 100단, 1000단이라고 생각하면 문제가 심각해진다. (프로그램을 웹에서 실행할 수 있다면 for문 몇 줄이면 끝나는 건데...)
  • 다시 말해, 웹 서버에서 브라우저에게 html을 주기 전에 애플리케이션을 돌려서 데이터를 만들고 그 만든 데이터를 넣어 주면 간단하겠지만 html은 프로그래밍 언어가 아니라 위의 문제를 해결할 수 없었다. (html은 마크업 언어)
  • 결국 요청에 따른 비즈니스 로직 처리나 DB 연동 문제를 해결하기 위해 등장한 게 WAS이다.

웹 서버란 HTTP 프로토콜을 기반으로 클라이언트가 웹 브라우저에서 어떠한 요청을 하면 그 요청을 받아 정적 컨텐츠를 제공하는 서버이다. 정적 컨텐츠란 단순 HTML 문서, CSS, 이미지, 파일 등 즉시 응답 가능한 컨텐츠이다.

이때 웹 서버가 정적 컨텐츠가 아닌 동적 컨텐츠를 요청받으면 WAS에게 해당 요청을 넘겨주고, WAS에서 처리한 결과를 클라이언트에게 전달하는 역할도 해준다.

이러한 웹 서버에는 Apache, NginX 등이 있다.

2. WAS의 이해

Web Application

  • 웹 애플리케이션은 드디어 우리가 원했던, 바로 그것. 웹에서 실행되는 응용 프로그램을 말한다. 우리는 애플리케이션을 통해서 이제 html의 한계를 극복할 수 있게 되었다.

Web Application Server

  • WAS는 웹 애플리케이션을 실행시켜 필요한 기능을 수행하고 그 결과를 웹 서버에게 전달하는 일종의 미들웨어를 말한다.
  • php, jsp, asp와 같은 언어들을 사용해 동적인 페이지를 만들어낼 수 있는 서버이다.
  • 프로그램 실행 환경과 데이터베이스 접속 기능을 제공한다.
  • 비즈니스 로직 수행이 가능하다.
  • 웹 서버 + 웹 컨테이너를 합친 형태다.
  • 컨테이너: jsp, servlet을 실행시킬 수 있는 소프트웨어웹 애플리케이션 컨테이너: 웹 애플리케이션이 배포되는 공간
  • 자바 계열에선 웹 애플리케이션을 컨테이너라고 부른다.

WAS란 DB 조회 혹은 다양한 로직 처리를 요구하는 동적 컨텐츠를 제공하기 위해 만들어진 Application 서버이다. HTTP 프로토콜을 기반으로 사용자 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어로서, 주로 데이터베이스 서버와 같이 수행된다.

WAS는 JSP, Servlet 구동환경을 제공해주기 때문에 서블릿 컨테이너 혹은 웹 컨테이너로 불린다.

이러한 WAS는 웹 서버의 기능들을 구조적으로 분리하여 처리하고자 하는 목적으로 제시되었다. 분산 트랜잭션, 보안, 메시징, 쓰레드 처리 등의 기능을 처리하는 분산 환경에서 사용된다. WAS는 프로그램 실행 환경과 DB 접속 기능을 제공하고, 여러 개의 트랜잭션을 관리 가능하다. 또한 비즈니스 로직을 수행할 수 있다.

이러한 WAS에는 Tomcat, JBoss, WebSphere 등이 있다.

동작 방식

이미지 출처

3. 웹 서버와 WAS 종류

웹 서버 종류

  • 아파치
  • Microsoft IIS
  • Ngnix

WAS 종류

  • 톰캣
  • JEUS
  • IBM WebSphere

4. 웹 서버와 WAS 차이

  • 웹 서버는 정적인 컨텐츠만 줄 수 있다.
  • WAS는 어떤 애플리케이션을 돌리고, DB를 연결하고, 어떤 로직을 수행해서, 만든 데이터를 전달할 수 있다.
  • 요약: "요청에 따라 변하는 정보를 제공할 수 있는가?"
  • 우아한 테크톡 희봉님의 요약: "상황에 따라 변하는 정보를 제공할 수 있는가?"

요약 표

구성 요소 설명

웹 브라우저 - 사용자(클라이언트)가 요청한 웹 서버의 결과를 화면에 출력하는 애플리케이션이다.
웹 서버 - 웹 브라우저의 요청을 받아 들여서 이에 알맞은 결과를 웹 브라우저에 응답한다.- 요청에 필요한 페이지의 로직이나 데이터베이스와의 연동을 위해서 애플리케이션 서버에 이들의 처리를 요청한다.- 대표적인 웹 서버의 종류로는 아파치, IIS가 있다.
웹 애플리케이션 서버 (WAS) - 요청한 페이지의 로직이나 데이터베이스와의 연동을 위해 처리하는 부분이다.- 대표적인 WAS로 톰캣, IBM의 WebSphere, Jeus(국산) 가 있다.
데이터 베이스 - 데이터를 저장하는 곳이다. 예를 들어 회원 정보나 게시판에 올린 글에 대한 정보를 저장한다.
  1. 웹 서버: 웹 서버는 기본적으로 HTTP 프로토콜을 사용하여 정적인 컨텐츠(HTML 페이지, 이미지, 스타일시트, JavaScript 파일 등)를 클라이언트에 제공합니다. 사용자가 웹 브라우저를 통해 URL을 요청하면, 웹 서버는 해당 요청을 처리하고 필요한 파일을 찾아 사용자에게 반환합니다. 웹 서버는 주로 정적인 컨텐츠를 처리하며, 이는 데이터베이스와의 상호작용 없이 파일 시스템에서 직접 제공될 수 있는 컨텐츠를 의미합니다. Apache HTTP Server, Nginx, Microsoft's Internet Information Services (IIS) 등이 대표적인 웹 서버입니다.
  2. 웹 애플리케이션 서버 (WAS): WAS는 동적인 컨텐츠를 생성하고 제공하는 역할을 합니다. WAS는 클라이언트의 요청을 받으면 해당 요청에 따라 데이터베이스와 상호작용하거나, 비즈니스 로직을 실행하고, 결과를 동적으로 생성된 웹 페이지(일반적으로 HTML 형식)에 포함시켜 클라이언트에게 반환합니다. WAS는 웹 서버의 기능을 포함할 수 있지만, 주로 복잡한 트랜잭션을 처리하고 비즈니스 로직을 실행하는 데 사용됩니다. Java의 Tomcat과 JBoss, Python의 Django, Ruby의 Ruby on Rails 등이 대표적인 WAS입니다.

요약하면, 웹 서버는 주로 정적인 웹 컨텐츠를 제공하는 반면, WAS는 동적인 웹 컨텐츠를 제공하며 더 복잡한 비즈니스 로직을 처리합니다. 그러나 이 두 시스템은 종종 함께 작동하여 사용자에게 최종 웹 페이지를 제공합니다.

5. 웹 서버와 WAS를 따로 사용하는 이유

  • 서로의 기능을 분리하여 서버 부하를 방지할 수 있다.
    • WAS는 DB 조회 등 페이지를 만들기 위한 다양한 로직을 처리하는데,단순한 정적 컨텐츠까지도 WAS에서 제공하면 다른 작업에 사용하는 리소스로 인해 지연이 생겨날 수 있다.
    • 다만, 톰캣 5.5 이상부터는 성능이 크게 떨어지지 않는다고 한다.
  • 물리적으로 분리하여 보안을 강화할 수 있다.
    • SSL에 대한 암복호화 처리에 웹 서버를 사용한다.
    • 웹 서버를 앞단에 두어, 공격이 있을 때 중요한 정보가 담긴 DB나 로직까지(WAS까지) 전파되지 못하게 한다.

  • 여러 대의 WAS를 연결 가능할 수 있다.
    • Load Balancing
    • fail over(작동 중지된 WAS를 대신해 다른 WAS를 사용하여 장애를 극복함)
    • fail back(작동 중지된 WAS를 재동작시킴)
  • 대용량 웹 애플리케이션의 경우(여러 개의 서버 사용) Web Server와 WAS를 분리하여 무중단 운영을 위한 장애 극복에 쉽게 대응할 수 있다.
  • 다른 종류의 WAS로 서비스 가능
    • 하나의 서버에서 PHP Application과 Java Application을 함께 사용할 수 있다.

 

728x90
반응형
LIST
728x90
반응형
SMALL

오늘 속이 너무 안 좋아서 박카스를 마셨는데, 계속 안좋습니다 ㅠㅠ 그래서 일찍 들어갑니다~

To do

  • [x] 아침운동하기
  • [x] 코테5문제풀기 (푸는중 어렵어렵 ㅠㅠ)
  • [x] 자바 3페이지 읽기
  • [x] cs책 읽고 정리하기 13로그
  • [x] 이력서 수정하기
  • [x] 이력서 과제
  • [x] 지원하기 4곳

외부일정

  • [x] 멘토링

비트(bit)

  • 디지털 시스템 내부에서는 십진수체계가 아닌 이진수 체계를 사용한다.
  • bit는 binary digit을 축약한 것이다.
    • 비짓(bigit)이라고 에드워트 텔러가 선호했다고 전해지지만 인기를 끌지 못했다.
  • 0과 1, 즉 중간이 없는 상태를 나타내는데 이진법이 최적화 되어있다.
    • 켜짐/꺼짐, 참/거짓, 예/아니요, 높음/낲음, 좌/우, 위/아래 등등
  • 즉 컴퓨터가 신호를 주고 받을 때 전류나 빛이 통하는지 안통하는지로 신호를 만들어 주고 받을 수 있는 것이다.

비트의 개수와 값의 개수

  • 비트는 이진법이다. 즉 비트의 개수가 많아짐에 따라 표현할 수 있는 값의 개수는 2의 지수승으로 증가한다.

비트의 개수 값의 개수 비트의 개수 값의 개수

1 2 6 64
2 4 7 128
3 8 8 256
4 16 9 512
5 32 10 1024
  • 간단한 예시로 18개의 값을 표시한다고 했을 때 4개로 절대 표한할 수 없기에 5개의 비트가 필요하다.
    • 잡담(Y2K) : 과거 정보량을 아끼기 위해 날짜를 4바이트(1바이트는 8비트)가 아닌 2바이트로 표기했다. 1900년과 2000년 둘다 00년도로 표기했던 것이다. 이로 인해 2000년을 컴퓨터가 1900년으로 인식하고 주식과 은행 시스템 등에 오류가 발생해 붕괴하고 핵발전소가 오작동해 원자로가 붕괴하고, 핵미사일이 발사된며 세계전쟁이 발발한다는 터무니 없는 사태까지 번져 세계가 멸망한다고 했다. 물론 아무 일 없었다.
    • 추가로 32bit는 2038/01/19 03:14:07 까지 표기 가능한데 이 때 를 Y2K38 이라고 한다. 이때가 오기전 까지 64bit 이상의 컴퓨터를 쓰자
728x90
반응형
LIST

'일상 > TIL' 카테고리의 다른 글

프로젝트에서의 낙관적 락 선택이유  (0) 2023.05.18
16 ~ 17일 할일 기록  (0) 2023.05.17
소프트웨어 아키텍쳐에 대해서  (0) 2023.05.13
리눅스 정리  (0) 2023.05.12
오늘의 할일  (0) 2023.05.10
728x90
반응형
SMALL

TCP와 UDP의 공통점과 차이점을 설명해보세요.

TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)는 인터넷 프로토콜 스택의 전송 계층에 있는 두 가지 주요 프로토콜입니다. 이 두 프로토콜은 데이터를 네트워크를 통해 전송하는 방법을 정의합니다.

TCP (Transmission Control Protocol)

  1. 연결형 (connnection-oriented) 프로토콜이며, 연결이 성공해야 통신이 가능하다.
  2. 데이터 경계를 구분하지 않는다. 바이트 스트림(byte-stream) 서비스
  3. 신뢰성 있는 데이터를 전송한다. 데이터의 순서 유지를 위해 각 바이트마다 번호를 부여한다. 데이터를 재전송한다.
  4. 1 대 1 통신(unicast)
  5. 전송속도가 느리다.
  6. 패킷관리가 필요없다.

특징

  • 가상 회선 연결 방식, 연결형 서비스를 제공
  • 높은 신뢰성(Sequence Number, Ack Number를 통한 신뢰성 보장)
  • 연결의 설정(3-way handshaking)과 해제(4-way handshaking)
  • 데이터 흐름 제어(수신자 버퍼 오버플로우 방지) 및 혼잡 제어(네트워크 내 패킷 수가 과도하게 증가하는 현상 방지)
  • 전이중(Full-Duplex), 점대점(Point to Point) 서비스

UDP (User Datagram Protocol)

  1. 비연결형 (connectionless) 프로토콜이며, 연결 없이 통신이 가능하다.
  2. 데이터 경계를 구분한다. 데이터그램(datagram) 서비스
  3. 비신뢰적인 데이터를 전송한다. 데이터 재전송과 데이터 순서 유지를 위한 작업을 하지 않는다.
  4. 1 대 1 통신(unicast), 1 대 다 통신(broadcast), 다 대 다 통신(multicast)
  5. 전송속도가 빠르다.
  6. 패킷관리가 필요하다.

특징

  • 비연결형(port만 확인하여 소켓을 식별하고 송수신)
  • 패킷 오버헤드가 적어 네트워크 부하 감소
  • 비신뢰성
  • 오류검출(헤더에 오류 검출 필드를 포함하여 무결성 검사)
  • TCP의 handshaking 같은 연결 설정이 없다
  • DNS, NFS, SNMP, RIP 등 사용

공통점:

  1. 데이터 전송: 둘 다 데이터를 패킷으로 분할하여 인터넷을 통해 전송하는 역할을 합니다.
  2. IP와의 결합: TCP와 UDP는 모두 IP(Internet Protocol)와 결합하여 데이터를 목적지로 전송합니다. 이 때문에 종종 TCP/IP, UDP/IP로 표기됩니다.
  3. 포트 번호 사용: 둘 다 포트 번호를 사용하여 송신자와 수신자의 애플리케이션을 식별합니다.

차이점:

  1. 연결 유무: TCP는 연결형 프로토콜로, 데이터 전송 전에 송수신자 간에 연결을 설정하고 데이터 전송 후 연결을 종료합니다. 반면, UDP는 연결이 없는 프로토콜로, 데이터를 전송하기 전에 명시적인 연결 설정 없이 데이터를 전송합니다.
  2. 데이터의 신뢰성: TCP는 신뢰성 있는 데이터 전송을 보장합니다. 패킷이 손실되거나 순서가 바뀌면 TCP는 재전송을 요청하고 순서를 재조정합니다. 반면, UDP는 이러한 메커니즘이 없으며, 패킷의 손실이나 순서 변경에 대해 별도로 처리하지 않습니다. 따라서 UDP는 TCP에 비해 빠르지만, 신뢰성은 낮습니다.
  3. 흐름 제어와 혼잡 제어: TCP는 네트워크의 혼잡 상황을 고려한 흐름 제어와 혼잡 제어 메커니즘이 있습니다. 이는 네트워크의 효율성과 안정성을 높입니다. 반면, UDP는 이러한 기능이 없습니다.

어떤 프로토콜을 사용할지는 애플리케이션의 요구 사항에 따라 달라집니다. 예를 들어, 신뢰성이 중요한 이메일이나 웹 서비스는 TCP를, 실시간 서비스나 스트리밍 같이 속도가 중요한 경우는 UDP를 사용하는 것이 일반적입니다.

728x90
반응형
LIST

+ Recent posts