왕초보를 위한 서버와 클라이언트.
내가 이해한 방식을 기재함.
서버와 클라이언트는 일종의 역할.
서버와 클라이언트의 개념
1. 클라이언트
- 웹페이지 등 특정 요청을 하고 그에 따라 응답을 받고, 그것을 사용자에게 보여준다.
예) 브라우저에서 특정 주소에 접속 => 페이지 렌더링 요청 => (서버 역할) => 응답 받은 페이지를 브라우저에 띄움
2. 서버
- 클라이언트 요청에 맞는 서비스를 제공
예) 아이디 비번 입력 후 확인 클릭 시 로그인 승인 결과 처리, 게시글 작성 후 저장 등
2-1. 웹서버
- 클라이언트(브라우저)에서 오는 웹 요청(HTTP/HTTPS) 제공
언제 서버가 필요한가?
HTML로 정적인 단일페이지 여러개 만들 수 있음(정적 다중페이지).
이것을 index.html, about.htm등 각각의 파일로 저장하면
우리는 그것을 더블클릭하여 바로 파일을 열어 브라우저에 띄워 볼 수 있음.
이는 당연히 서버를 필요로 하지 않음.
* 정적 웹페이지 : 쇼핑몰, 게시판처럼 사용자와의 상호작용 없이 일방적으로 정보만 제공하는 형태의 웹페이지. (ex. 회사 소개 사이트 등)
그러나 하나의 index.html의 페이지만 있고,
그 안에서 /about, /contact 같은 여러 경로로 나뉘는 구조(SPA)의 페이지들을 만들었을 경우,
브라우저가 " http://localhost/about"라는 주소의 페이지를 요청할 경우,
로컬 PC는 '/about.html'파일이 없으므로 불러오지 못함.
* SPA : React, Vue, Angulat등과 같은 SPA(단일 페이지 애플리케이션) 구조. 하나의 index.html만 있고,
내부에서 JS 라우터가 /about, /contact와 같은 경로 요청을 해석하여 해당하는 파일을 보여주는 구조
이때, 우리는 '/about'이라는 경로에 대한 요청을 인식하여
유일한 html페이지인 index.html 페이지 대신 '/about'이라는 경로에 설정된 파일이 보이도록 처리해줘야 하는데,
이를 '서버'가 해줌.
React, vite 등으로 프로젝트를 만들 경우 개발서버를 제공해주고 있는데,
개발 중에는 로컬에서 vite dev나 webpack dev server가 자동으로 서버를 실행하여
해당 역할을 해줌.
그러나 이 서버는 개발서버기 때문에 로컬에서만 해당 역할을 수행함.
웹을 통해 이 웹페이지를 공개하려면 우리는 '웹서버'를 이용해야함.
그리고 그 '웹서버' 역할을 '호스팅 서비스'가 제공해줌.
빌드 후 실제 호스팅 환경에서 배포를 진행하면,
호스팅 서비스에서 자체 "웹서버(Nginxm Apache 등)"을 작동시켜 클라이언트(브라우저)의 요청을 처리함.
* 원래 SPA 라우팅을 위해선 보통 try_files $url /index.html; 같은 설정이 추가되어야 하나, 호스팅 서비스(Netlify, Vercel 등)은
이런 설정을 자동으로 처리해줌.
구분 웹서버 (Apache, Nginx) WAS (Tomcat)
처리 대상 | 정적 콘텐츠 (HTML, CSS, JS, 이미지) | 동적 콘텐츠 (Servlet, JSP, Spring 등) |
특징 | 빠르고 가벼움 | 자바 실행 환경 포함, 동적 처리 가능 |
역할 | 단순히 요청한 파일을 찾아서 응답 | 요청을 분석 → 자바 코드 실행 → 결과 생성 후 응답 |
사용 예시 | 정적 홈페이지, 이미지 서버 | 쇼핑몰, 로그인/회원관리, 게시판 등 |
* Tomcat
- Java 기반 동적 웹 애플리케이션 서버(WAS).
- 웹서버(Apache, Nginx)와 달리 자바 코드(Servlet, JSP, Spring 등)를 실행할 수 있음.
- 정적 페이지만 있다면 웹서버로 충분하지만,
로그인·게시판·쇼핑몰 같은 동적 기능을 만들려면 Tomcat 같은 WAS가 필요함.
'서버' 카테고리의 다른 글
게이트웨이(Gateway)와 프록시(Proxy) (0) | 2025.09.16 |
---|