서버를 만들어 연결하는 기회가 생겨 WAS에 대해 공부 할 기회가 생겼다 .
WAS를 공부하던중 WAS와 WEB SERVER의 차이를 명확히 이야기 하지 못하는 나를 보고 제대로 공부하기 위해 정리하게 되었다
첫번째로 서버를 만든다고 생각해보자
서버는 주로 TCP 통신으로 이루어진다 . 그렇다면 WEB 서버는 어떨까?
웹서버는 HTTP 통신을 통해서 만들어진다 . 서버와는 통신방식이 다르다
따라서 웹 서버를 사용하기 위해서는 크게 두가지 방법이 있다
직접 HTTP 설치하는 방법은 어떨까 ?
→ 서버 설정 및 구성 , 보안문제 , IP설정 관리 및 유지보수 , 트래픽 관리 등 다양한 이유로 서버를 공부하는 사람에게는 불리한 조건이 많다
그렇다면 WAS 는 어떨까 ?
→ WAS는 *서드파티 프로그램이다
→ WAS에는 WEB SERVER 가 내장되어있기에 설치하는 것만으로도 서버를 WEB SERVER로 변경해준다
*서드파티 프로그램 : 윈도우의 카카오톡 같이 운영체제라는 플랫폼을 이용하는 소프트웨어를 말한다
우리는 학습의 목적이기에 WAS를 통해 나만의 서버를 만들어 보도록 하자
웹 애플리케이션 서버(WAS, Web Application Server)란 무엇일까?
웹 서버 + 웹 컨테이너
인터넷 상에서 HTTP를 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해 주는 미들웨어(소프트웨어 엔진)
→ 즉 인터넷 상에서 http 통신을 통해 어플리케이션을 수행해주는 장치이다

프로그램 실행 환경 및 DB 접속 기능 제공
→ 여러 웹 어플리케이션이 실행되는 환경을 제공 / DB 서버와 연결 통한 접속 기능
여러 트랜잭션 관리 기능
→ 트랜잭션 : 데이터베이스의 변화를 주는것
→ WAS는 트랜잭션 관리 및 일관성 , 오류 발생시 롤백 등의 기능 제공
업무 처리 비즈니스 로직 수행
→ 앱의 핵심인 비즈니스 프로세스 포함 / 고객관리 , 주문 처리 등
위와 같은 기능을 하는 WAS의 종류는 아래와 같다
WAS 종류 : Tomcat, JBoss 등
사실 서버를 만드는데 있어 WEB SERVER 만 있어도 문제가 없다 .
하지만 WAS를 쓰는 이유가 있을까?
아래 그림을 보면 이해가 빠르다
웹 서버는 정적 컨텐츠만을 관리한다 . 이를 통해 기능을 분배해서 서버의 부담을 줄여주는 것이다
WAS를 더 자세히 이해하기 위해 WAS를 이루고 있는 WEB SERVER 와 WEB Container에 대해서 알아보자
■ 웹서버(WEB)란?
웹서버는 말 그대로 작성된 html페이지 등을 네트워크망에 종속되지 않고, 웹서비스를 할 수 있도록 하는 어플리케이션
JSP와 서블릿은 뭐길래 웹컨테이너를 필요로 할까
servlet → 자바를 웹앱에서 쓰기 위해 만든 API
서블릿 → 자바 언어로 html 개발 하기 위해 만든 API(라이브러리, 클래스 들)
JSP → 서블릿의 단점을 보완하고자 만든 서블릿 기반 스크립트 기술
jsp → HTML 내부에 자바 코드를 삽입하는 방식
| Servlet | JSP |
|---|---|
| 자바 코드로 구현 , 컴파일 및 배포 필요 | 서블릿에 비해 배우기 쉬움 |
| HTML 태그로 문자열(””) 스크림 처리 필요 | <%%> 통해 자바코드 사용 |
| 코드 수정시 다시 컴파일 및 배포 | HTML처럼 태그 사용해 JAVA코드도 가능 |
WAS와 WEB에 대해서 간단히 알아보았으니 둘의 차이에 대해 알아보자
위의 설명처럼 WAS는 웹서버의 기능을 포함하고 있으며 웹서버와 WAS는 역할이 다르다는 것을 알 수 있다 .
그렇다면 WAS만 쓰면 되겠다.
→ 절대 아니다
웹 서버(예: Nginx, Apache HTTP Server)가 앞에 위치
정적 콘텐츠를 빠르게 처리, 요청을 라우팅하여 동적 콘텐츠는 WAS로 전달
이점:
- 성능 최적화: 정적 콘텐츠를 빠르게 제공하고, WAS의 부담을 줄입니다.
- 보안 강화: 웹 서버에서의 보안 설정으로 공격 surface를 줄일 수 있습니다.
- 확장성 향상: 웹 서버와 WAS를 분리하여 시스템을 확장하기 용이
→ 프론트엔드와 백엔드가 같이 작동하는 방식
흔히 우리가 아는 백엔드와 프론트엔드를 나눠 개발하는 방식이 위와 같다 .
위의 장점들을 조금더 상세히 알아보자
보통 웹 서비스는 아래의 그림처럼
Client ↔ Web Server ↔ WAS ↔ DB 이런식으로요청 , 응답을 주고 받는다.

1. 성능 향상
2. 캐싱 및 압축
3. 로드 밸런싱
4. 보안
이처럼 장점이 많기 때문에 사용하게 된다
위의 나온 리버스 프록시 개념에 대해 조금만 알아보고 마치도록 하자
🌟 리버스 프록시란
포워드 프록시
클라이언트 정보가 서버에 노출되지 않도록 한다. → 클라이언트 와 인터넷 사이 위치하기에
서버로부터 받은 html, css, js 등과 같은 정적파일을 캐싱하여 응답 성능을 높이고 서버의 부하를 줄이는 기능도 한다. 그외에도 내부망의 프록시를 통해서 특정 주소에 대한 액세스 차단 등을 할수도 있다.
리버스 프록시
리버스 프록시는 요청을 대신 받아서 다양한 서버들에게 요청을 전달 분산 → 로드밸런싱
이를 통해 프록시 서버에 암호화를 설정이나 여타 서버 공격들이 실제 서버가 아닌 프록시 서버를 공격하도록 함으로써 서버들을 보호할 수 있다.
우리가 사용한 아파치 톰캣은 그럼 뭘까?
즉 아파치 = 웹서버
톰캣 = 웹 컨테이너
아파치 톰캣 = WAS
동적 콘텐츠는 사용자의 요청에 따라 서버에서 실시간으로 생성되는 콘텐츠를 말합니다. 이는 다음과 같은 과정을 포함할 수 있습니다:
위와 같이 웹 이론의 기초가 되는 WAS에 대해서 알아보았다
나중에는 서버를 처음으로 만들어보고자 하는 사람을 위해 글을 써보도록 하겠다 .