Static Pages
- 정적 페이지, 바뀌지 않는 페이지
- 웹 서버는 파일 경로 이름을 받고 경로와 일치하는 file content를 반환
- 항상 동일한 페이지를 반환
Dynamic Pages
- 인자에 따라 바뀌는 페이지, 인자의 내용에 맞게 동적인 content를 반환
- 웹 서버에 의해 실행되는 프로그램을 통해 만들어진 결과물 → Servlet : WAS 위에서 돌아가는 자바 프로그램
- 개발자는 Servlet에 doGet() 메서드를 구현
웹 서버
- 하드웨어 : Web 서버가 설치되어 있는 컴퓨터
- 소프트웨어 : 웹 브라우저 클라이언트로부터 HTTP 요청을 받고 정적인 컨텐츠(html, css)를 제공하는 프로그램
- 웹 서버 기능 : HTTP 프로토콜을 기반으로 클라이언트의 요청을 서비스하는 기능을 담당
- 정적 컨텐츠 제공 : WAS를 거치지 않고 바로 자원 제공
- 동적 컨텐츠 제공을 위한 요청 전달 : 클라이언트 요청을 WAS에 보내고 WAS에서 처리한 결과를 클라이언트에게 전달
- 웹 서버의 종류 : Apache, Nginx, IIS
WAS (Web Application Server)
DB 조회 및 다양한 로직 처리 요구시 동적인 컨텐츠를 제공하기 위해 만들어진 애플리케이션 서버
HTTP를 통해 애플리케이션을 수행해주는 미들웨어
- WAS는 웹 컨테이너 혹은 서블릿 컨테이너라고도 불린다. WAS = 웹 서버+웹 컨테이너
- 웹 서버의 기능들을 구조적으로 분리하여 처리하는 역할 → 보안, 스레드 처리, 분산 트랜잭션 등 분산 환경에서 사용 (주로 DB 서버와 함께 사용)
- WAS의 주요 기능
- 프로그램 실행 환경 및 DB 접속 기능 제공
- 여러 트래잭션 관리 기능
- 업무 처리하는 비즈니스 로직 수행
- WAS 종류 : Tomcat, JBoss 등
웹 서버와 WAS를 구분하는 이유
- 웹 서버가 필요한 이유
- 웹 서버에서는 정적 컨텐츠만 처리하도록 기능을 분배하여 서버 부담을 줄이는 것
- 웹 문서가 클라이언트로 보내질 때 이미지 파일과 같은 정적 파일은 함께 보내지지 않고 html 문서를 받고 이에 필요한 이미지 파일들을 다시 서버로 요청해서 받아오는 것 웹 서버를 통해 정적인 파일을 애플리케이션 서버까지 가지 않고 앞단에 빠르게 보낼 수 있다.
- WAS가 필요한 이유
- WAS를 통해 요청에 맞는 데이터를 DB에서 가져와 비즈니스 로직에 맞게 그때마다 결과를 만들고 제공하면서 자원을 효율적으로 사용 가능
- 동적 컨텐츠를 제공해야할 땐 웹 서버만으론 사용자가 원하는 요청에 대한 결과값을 모두 미리 만들어 놓고 서비스하기는 자원이 절대 부족함!
- WAS로 웹 서버 역할까지 처리한다면
- WAS는 DB조회, 다양한 로직을 처리하는데 집중해야하므로 단순 정적 컨텐츠는 웹 서버에게 맡기며 기능을 분리시켜 서버 부하를 방지하는 것
- WAS가 정적 컨텐츠 요청까지 처리하면 부하가 커지고 동적 컨텐츠 처리가 지연되면서 수행 속도가 느려진다 → 즉 페이지 노출 시간이 늘어나는 문제 발생
- 여러 대의 WAS를 연결지어 사용이 가능
- 웹 서버를 앞단에 두고 WAS에 오류가 발생하면 사용자가 이용하지 못하게 막아둔 뒤 재시작하여 해결이 가능 (사용자는 오류를 느끼지 못하고 이용이 가능)
- 자원 이용의 효율성 및 장애 극복, 배포 및 유지 보수의 편의성 때문에 웹 서버와 WAS를 분리하여 사용
- 가장 효율적인 방법은 웹 서버를 WAS 앞에 두고 필요한 WAS들을 웹 서버에 플러그인 형태로 설정하면 효율적인 분산 처리가 가능!
'기초 CS 정리' 카테고리의 다른 글
OAuth (Open Authorization) (0) | 2023.02.25 |
---|---|
네이티브앱, 모바일웹앱, 하이브리드앱 (0) | 2023.02.19 |
Agile 애자일 과 스크럼 (0) | 2023.02.15 |
클린 코드 / 리팩토링 / 시큐어링 (0) | 2023.02.14 |
마이크로 서비스 아키텍처 (MSA) (0) | 2023.02.13 |