Web
- 웹은 브라우저로 사용하는 인터넷 서비스를 뜻한다.
- 웹 서버는 HTTP 기반으로 동작하며, HTML, CSS, JS, 이미지 같은 정적 리소스를 제공한다.
WAS (Web Application Server)
- HTTP 기반으로 동작하며 웹 서버의 기능을 포함한다.
- 단순히 정적인 HTML만 주는 게 아니라, Application 로직을 수행하고 DB와 상호작용하여 동적 콘텐츠를 생성한다.
예: 로그인, 게시글 저장, 회원가입 처리 등 - 대표적으로 톰캣(Tomcat), 제티(Jetty), 언더토우(Undertow) 등이 있다.
Servlet
- Java에서 Servlet은 HTTP 프로토콜 기반 요청(Request) 및 응답(Response)을 처리하는 자바 클래스이다.
(HttpServlet 클래스를 상속받아 구현된다.) - 클라이언트가 요청하면, Servlet이 실행돼서 동적으로 HTML을 만들어 응답한다.
- 즉, Java에서는 WAS가 Servlet 기반으로 처리된다.
Servlet Container
- Servlet을 지원하는 WAS 내부에는 Servlet Container가 있다.
- Servlet Container는 Servlet을 초기화, 생성, 관리, 호출, 종료하는 역할을 수행한다.
- Servlet 객체를 싱글톤으로 관리한다.
- 동시 요청에 대한 처리를 위해 Multi Thread를 지원한다. - WAS(Servlet Container 포함)가 종료될 때 Servlet도 함께 종료된다.
※ 싱글톤이란?
싱글톤은 프로그램 전체에서 딱 하나의 인스턴스만 생성되도록 보장하는 디자인 패턴이다.
즉, 객체를 하나만 생성하여 생성된 인스턴스를 공유하여 사용하는 것을 의미한다.
특정 클래스의 인스턴스가 여러개 생성되지 않도록 하여 자원의 낭비를 방지하고, 인스턴스를 공유함으로써 상태를 일관되게 유지하기 위함이다. 하지만, 공유 변수 사용을 주의해야한다.
Side Rendering
1) SSR (Server Side Rendering)
- 서버(WAS)에 HTML을 요청한다.
- 서버(WAS)에서 로직을 거친 후 DB를 조회한다.
- 조회 결과를 기반으로 HTML을 동적으로 생성한다.
- 생성된 HTML을 응답한다.
→ 서버에서 동적인 페이지를 완성하여 응답한 것을 브라우저에서 화면을 출력한다.
※ 특징
- 초기 로딩 빠르다. (HTML 완성본이 오기 때문)
- SEO(검색엔진 최적화)에 유리하다.
- 페이지 전환 시 새로고침이 많다.
2) CSR (Client Side Rendering)
- HTML을 요청하면 비어있는 HTML과 JS가 존재하는 주소 링크를 응답받는다.
- JS(클라이언트 로직, 렌더링 포함)를 요청하여 응답받는다.
- JS가 API로 서버에 데이터 요청하여 JSON 데이터를 응답받는다. { "name": "홍길동", "job": "developer" }
- 응답받은 JSON 데이터로 HTML을 동적으로 그린다.
→ HTTP API 통신으로 얻은 결과를 통해 브라우저에서 동적으로 화면을 출력한다.
※ 특징
- 초기 로딩이 느리다. (JS 실행까지 시간이 걸림)
- 한번 로딩하면 빠르게 전환 가능 (SPA 구조)
- SEO에는 불리할 수 있다. (백엔드 HTML 없음)
'Spring' 카테고리의 다른 글
| [Spring] Spring에서 Annotation을 사용하는 이유와 Spring Bean 관리 (0) | 2025.05.12 |
|---|---|
| [Spring] Spring에 대하여 / MVC / 3 Layered Architecter (0) | 2025.05.11 |
| [Spring] 웹 용어 정리 (0) | 2025.05.08 |
| [Spring] HTTP와 API (0) | 2025.05.08 |
| [Spring] 네트워크와 프로토콜 (0) | 2025.05.07 |