| 서버란?
서버란, 데이터를 저장하고, 앱 또는 앱 사이트를 구동하는데에 특화된 고성능 컴퓨터를 말한다.
- 다시말해 서버란, 네트워크를 통해서 서비스를 제공하는 컴퓨터이다.
- 제공하는 서비스가 무엇이냐에 따라, 아래와 같이 종류가 다양할 수 있으며, 늘 상시 전원이 켜져 있다.
- 종류 : 웹 서버, HTTP 서버, 인증 서버, 그룹웨어 서버, 메일 서버, DNS서버 등등등
- 데이터 센터는 이러한 서버 컴퓨터를 관리하는 센터로, 서버가 꺼지지 않도록 쿨링 시스템을 쓰는 등의 관리를 한다.
- 각 회사마다 상황에 따라 자체 서버 컴퓨터가 따로 있거나(ON-PREMISE), 클라우드 서버를 렌탈해 쓰기도 한다.
ON-PREMISE | CLOUD |
회사 내에 데이터 센터를 구축하는 것 | 클라우드 서비스 제공자로부터 서버를 렌탈하는 형태 |
- 그럼 웹 서버란 무엇일까? 결국 쉽게 말해 웹과 관련된 서비스를 제공해주는 컴퓨터를 의미한다.
| 클라이언트 - 서버 모델
- 클라이언트 - 서버 모델에서,
클라이언트는 "어떤 자료를 주세요"하고 요청하는 주체를 말하며,
서버는 그러한 요청을 수용하여 처리하고 응답하는 컴퓨터를 말한다.
- 이 모델에서 더 나아가, 클라이언트 - 웹서버 - DB서버 3가지가 연결된 형태가 아래와 같은 3-tier아키텍처이다.
| 웹서버와 3-tier 아키텍처
1. 3 tier 아키텍처
클라이언트 (리소스 요청자) |
웹서버 (리소스 제공자) |
DB서버 (리소스 저장 공간) |
||
HTTP 프로토콜 | JDBC Driver | |||
- 자바 웹 프로그래밍의 3-tier 방식은 크게 위와 같다.
- 예를 들어 어떤 대학교 학생이 대학교 홈페이지에 접근한다고 할 때,
(1) 클라이언트(학생의 브라우저)는 HTTP 프로토콜을 통해 제공자인 서버에게 HTTP request를 한다.
(2) 클라이언트가 요청한 사항이 정적페이지라면 웹 서버는 정적인 페이지를 전달하고,
그렇지 않고 DB에 있는 데이터에 대한 동적 처리가 필요하다면
WAS에서 Servelet/JSP나 EJB 또는 Spring 프레임워크 등을 사용해 동적 처리를 거친 후 동적 페이지를 전달한다.
2. 정적 페이지와 동적 페이지
정적 페이지(Static) | 동적 페이지(Dynamic) | |
의미 | 웹 서버에 미리 저장된 파일 | 클라이언트 요청사항에 따라 처리 후 생성된 페이지 |
예시 | HTML파일, 이미지, JavaScript파일, 음성파일 등 | ASP, ASP.NET, JSP, PHP, NodeJs |
장점 | 빠르다, 비용이 적게 든다. | 다양한 서비스 제공, 추가/수정/삭제 관리가 용이 |
단점 | 한정적인 서비스 제공, 추가/수정/삭제 관리 어려움 | 느리다, 추가 비용이 든다.(처리를 위한 WAS서버 필요) |
3. 웹 서버의 종류
- 아래와 같이 다양한 서버들이 존재한다.
* 웹 서버는 프로그래밍 하는 환경에 따라 달라질 수 있는데
* 자바 프로그래밍의 경우, 아파치나, NGINX가 많이 사용되고 있다고 한다.
아파치 웹 서버, 마이크로 소프트 IIS, 구글 웹 서버, NGINX 서버, 웹투비 서버, IBM웹스페어, NodeJS(Express) 웹 서버
자세한 내용 : https://cloudinfrastructureservices.co.uk/best-open-source-web-servers/
| WAS (웹 어플리케이션 서버)
- 웹서버는 정적페이지를 처리해주며, WAS는 동적 페이지를 처리한다.
- WAS는 서버 사이드 언어를 사용하는데, 여기서 서버 사이드(Server-side)란 제공자 측을 이야기한다.
* 말만 어렵지 결국은 서버 사이드 언어란, 백엔드에서 사용하는 모든 언어와 같은 말이다.
- 그런데 실제 WAS 프로그램들을 열어보면 동적 페이지 외에도 정적 페이지도 제공하는 걸 볼 수 있다.
- 그렇기 때문에 어떤 경우 웹 서버와 WAS를 분리해 설명하지만, 어떤 경우는 WAS 하나를 통합해 설명한다.
- WAS를 단위로 나누어서 표현한 표를 보면 아래와 같다. (참고 : https://titus94.tistory.com/3?category=649014 )
WAS | ||||||
웹서버 | web container | 기타 | ||||
Servlet/JSP | EJB | 트랜젝션 관리 | 네이밍 서버 | JDBC 드라이버 | 클러스터 |
- 말이 어렵지만 결국 정적페이지(웹서버) + 동적페이지(Servlet/JSP, EJB) + 기타(ex. db연결 등)로 나뉘어지는데,
다시 말하면 WAS는 정적페이지와 동적페이지를 모두 함께 처리해준다는 의미이다.
* 다수의 클라이언트 요청사항에 대해 WAS는 어떻게 응답할까? (더보기)
[ CGI vs WAS ]
- 요약 : CGI는 프로세스 단위로 처리, WAS는 쓰레드 단위로 처리
- 자세한 내용
https://titus94.tistory.com/3?category=649014
[ 출처 및 참고 ]
부트캠프 수업 후 정리한 내용
서버란? https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=pst8627&logNo=221662613847
서버에 대한 상세 https://www.techtarget.com/whatis/definition/server
서버에 대한 모든 것 https://brunch.co.kr/@doa01165/18
클라이언트-서버 모델과, 3 tier 아키텍처 https://velog.io/@bining/%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8%EC%99%80-%EC%84%9C%EB%B2%84
정적인 페이지와 동적인 페이지 https://titus94.tistory.com/4
클라이언트 사이드, 서버 사이드 https://chlolisher.tistory.com/131
'Java, Spring > 웹프로그래밍 시작하기' 카테고리의 다른 글
[웹 프로그래밍] 톰캣 설치 및 이클립스 환경 설정(+톰캣 구조) (0) | 2022.08.28 |
---|---|
[자바 프로그래밍] JDBC를 통해 DB의 데이터 처리하기 (0) | 2022.08.27 |
[자바 프로그래밍] JDBC 설치하기 (0) | 2022.08.27 |
[자바 프로그래밍] DB연결을 위해 필요한 것 (0) | 2022.08.27 |
[자바 프로그래밍] 회원정보와 회원가입처리 클래스 (0) | 2022.08.27 |